_RJ 技術メモ

人生を豊かにする技術を提供する、筋肉

コマンドラインで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