Bash で文字をエスケープする
Fumbani Banda
2023年1月30日
このチュートリアルでは、エスケープ文字とは何かを説明し、エスケープ文字の有益なリストを提供します。
エスケープ文字
エスケープ文字は、それ自体以外の代替解釈を表す文字です。bash でエスケープする必要のあるすべての文字を含む明確なリストはありません。ただし、推奨される一般的なルールは、疑わしい場合は、それを回避する
と述べています。
二重引用符を使用する
エスケープ文字を二重引用符で囲むと、文字通りの意味が保持されます。
これを示すために、echo コマンドでアスタリスク*
を使用してみましょう。ターミナルで echo *
と入力すると、現在のディレクトリにあるすべてのファイルが表示されます。ただし、*
を二重引用符で囲むと、標準出力にのみアスタリスクが表示されます。
echo "*"
次の出力が表示されます。
*
Bash のその他のエスケープ文字
bash でエスケープする必要のあるすべての文字を含む明確なリストはありません。これらのキャラクターのいくつかをテストすることで見つけることができます。次の bash スクリプトは、エスケープする必要のある文字とエスケープされた文字の表現についての洞察を提供します。
for x in {0..127} ;do
printf -v char \\%o $x
printf -v char $char
printf -v res "%q" "$char"
esc=Escape
[ "$char" = "$res" ] && esc=-
printf "%02X %s %-7s\n" $x $esc "$res"
done | sort
スクリプトは以下の出力を表示します。最初の 11 文字しか表示していません。最初のフィールドにはバイトの 16 進値があり、2 番目のファイルには文字をエスケープする必要がある場合は Escape
があり、そうでない場合は -
があります。最後の部分は、エスケープするときのキャラクターの表現を示しています。
00 Escape ''
01 Escape $'\001'
02 Escape $'\002'
03 Escape $'\003'
04 Escape $'\004'
05 Escape $'\005'
06 Escape $'\006'
07 Escape $'\a'
08 Escape $'\b'
09 Escape $'\t'
0A Escape $'\n'
0B Escape $'\v'
0C Escape $'\f'
0D Escape $'\r'
0E Escape $'\016'
0F Escape $'\017'
10 Escape $'\020'
著者: Fumbani Banda