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 | バックスラッシュでエスケープした文字を解釈しない。(デフォルト) |
エスケープシーケンスは下記の通り
エスケープ シーケンス | 説明 |
---|---|
\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にて確認してみてください。