コマンドラインでURLエンコードをする (他コマンド未使用)
URLEncode URL Terminal Bash alias
はじめに
たまにURLエンコードが必要な時があるときは、検索エンジンを使いエンコードしていたが、ターミナルで変換したいと思い、いざターミナルでやってみようとするとnkfというコマンドが必要になることが分かった。インストールするのはしゃくなので、他のコマンドを使わずにforなどを駆使しURLエンコードするaliasを作成。
ソースコード
forにより一文字ずつ、変換対象の文字かそれ以外かを判定して、文字列結合して出力する
導入
~/.bash_profileなどに下記コードを追記をする
function url-encode() { local input="${1}" local output="" ##一文字ずつURL形式に変換 local i=0 for (( i=0 ; i<${#input} ; i++ )); do local o="" local c=${input:$i:1} case "$c" in [-_.~a-zA-Z0-9] ) o="${c}" ;; ##変換せず * ) printf -v o '%%%02x' "'$c" ##URL形式に変換 esac output+=$o done echo $output } alias url-encode=url-encode
コマンドの使用例
url-encode ‘エンコード対象’
$ url-encode '$$url##encode@@‘ %24%24url%23%23encode%40%40