かえでBlog

色々なことを徒然と……

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

   

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

 

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

echoについて

echo - テキストの行を表示する

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

エスケープシーケンス一覧

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

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

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

 - linux , ,