echoのまとめ

個人的に、使う機会の多いechoコマンド。
実は存外オプションがたくさんあるのです。
知ってどうするの?は禁句です。

今回はまあ、さくっと行きます。

オプション

-n:行末の改行を行わない。
-e:文章中のバックスラッシュでエスケープされた文字列の解釈を有効にする。
  ※ 使用可能な機能一覧
   \a:アラート
   \b:バックスペース
   \c:行末の改行を出力しない
   \f:フォームフィード(form feed)
   \n:改行(new line)
   \r:復帰 (carriage return) 
   \t:水平タブ
   \v:垂直タブ
   \\:バックスラッシュ(そのまま出力)
   \0nnn:アスキーコードが nnn (8 進) の文字

--help:ヘルプ表示
--version: バージョン情報表示

文字装飾(書体変更、色付け)

echo -e "\033[装飾;文字色;背景色mテキスト(\033[0;39m)"

※()部分はいわゆる、フォームリセット。まあ、無くてもいいけど、普段はつけよう。

いきなりでしたが。
上記が基本的な書式となります。
で、以下がそれぞれの書式となります。

装飾

0:装飾なし
1:太字
4:下線
5:点滅
7:色反転
8:Concealed on

ただし、手前の環境で効果を確認したのは、0、1、4、7、8だけです。
また、太字にすると色が若干変わりました。この辺は、使っているシェルの設定に起因するのかもしれません。
ちなみに、分かり辛いだろう、そして日本語訳がわからない8の『Concealed on』は、背景色で塗りつぶす効果を与えます。

文字色

30:黒
31:赤
32:緑
33:黄
34:青
35:マゼンタ
36:シアン
37:白

こちらも(そして背景色も)、使っているシェルの色設定に影響を受けるかもしれません。
手前のディスプレイの発色が悪いだけもしれませんが。

背景色

40:黒
41:赤
42:緑
43:黄
44:青
45:マゼンタ
46:シアン
47:白

ま、文字色の十の桁が3から4になっただけですね。

用例

echo -e "\033[1;34mtext\033[0;39m"
(太字、文字が青色)

echo -e "\033[1mtext\033[0;39m"
(太字)

echo -e "\033[44mtext\033[0;39m"
(背景が青)

echo -e "\033[1;44mtext\033[0;39m"
(太字、背景が青)

echo -e "\033[31;1;44mtext\033[0;39m"
(文字色が赤、太字、背景が青)

みたいな感じで。

注意

ここに書かれているものと異なる挙動を示す場合、お使いのechoが何なのかを調べて見てください。

たとえば、

which echo

というコマンドの結果が、

echo: shell built-in command

の場合、挙動が変わる可能性大です。これは、シェル特有のコマンドとしてechoが準備されている場合のものです。
この記事で扱っているechoは、Ubuntuにおける/bin/echoです。

また、お使いのシェルによって、オプションの挙動も変わります。
要するに、結果が環境に大きく左右されるということです。

まとめ

まあ、自分で書いといてなんですけれど。
何やってんでしょうねぇ、この子。

ともかく。

echoコマンドについて、ちょっとしたまとめでした。