linux

【linux】echoでエスケープした文字を解釈する方法

2015年10月26日

linuxのOSに標準搭載されているechoですが、-eの引数をつけるだけでエスケープコードを有効にして実行することができるみたいです。

使用例

# echo -e "test\ntest2\n\ttest3\vtest4\rtest5\ntest6\btest7\n\0164\0145\0163\0164\070\n\x74\x65\x73\x74\x39\ftest10"
test
test2
        test3
test5        test4
testtest7
test8
test9
     test10

testとtest2の間に改行コード(\n)
test2とtest3の間に改行とタブコード(\n\t)
test3とtest4の間に垂直タブコード(\v)
test4とtest5の間に行先頭に戻るコード(\r)
test5とtest6の間に改行コード(\n)
test6とtest7の間にバックスペース(\b)
test8はASCIIコード(0始まり)で入力
test9はASCIIコード(x始まり)で入力
test9とtest10の間にフォームいーど(\f)
で入れております。

改行の他にもタブやバックスペース、ASCIIコードのエスケープも解釈される

改行の他にもタブやバックスペース、ASCIIコードのエスケープも解釈されるようです。

引数説明
-n最後の改行を出力しない。
-eバックスラッシュでエスケープした文字を解釈するようにする。
-Eバックスラッシュでエスケープした文字を解釈しない。(デフォルト)
echo オプション

エスケープシーケンスは下記の通り

エスケープ
シーケンス
説明
\a警告(ブザー音が鳴る)
\bバックスペース
\cこれ以上出力しない。
\eエスケープ文字
\fフォームフィード文字(ページ送り)
\n改行
\r行先頭に戻る
\t水平タブ
\v垂直タブ
\0NNNASCIIコードの文字(N:8進数1~3桁)
\xHHASCIIコードの文字(H:16進数1~2桁)
エスケープシーケンス一覧

\0は通常NULL文字として扱われるみたいですが、centosで使用しているechoの場合は8進数のASCIIコードを出力用として使うみたいです。

OSにより使えるエスケープシーケンス及び引数が異なるみたいなのでmanにて確認してみてください。

-linux
-, ,