No.002シェル
echo
エコー・文字列表示
文字列や変数展開結果を標準出力へ表示します。手軽ですが、エスケープ解釈や-nの扱いに実装差があるため、厳密な出力制御にはprintfを使うほうが安全です。
答えよく使う形
$ echo "Hello, Linux"
Hello, Linux
$ name="Kernel"
echo "$name"
Kernel
$ echo Hello
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中で30 コマンド・7 駅め / 30LPIC-1・35 駅め / 106
どんなコマンド?
簡単な文字列表示、変数展開の確認、シェルスクリプト中の途中経過表示、パイプラインの先頭で短い文字列を流したい時に使います。
echoは、シェル学習の最初期に触れる出力系コマンドです。変数展開の確認、区切り文字付きの簡単な表示、シェルスクリプト中の進行状況表示などに広く使われます。
ただし、echoは見た目以上に互換性差の影響を受けやすいコマンドです。-nをオプションとして扱うか文字列として扱うか、バックスラッシュを解釈するかどうかは実装差があります。POSIXでも、移植性が必要な場面ではprintfの使用が推奨されています。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ echo
使用例と実行結果
行を押すとコピーできます。
Hello, Linux
Kernel
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 2
つまずいたとき
echo -eが環境によって効いたり効かなかったりする
原因echoのエスケープ解釈は実装差があります。
こうする改行やタブを確実に出したい場合はprintfを使います。
echo $varで空白が崩れた
原因引用していないため、シェルの単語分割やパス名展開の影響を受けます。
こうする通常はecho "$var"のように二重引用符で囲みます。
終わったときの数(戻り値)
$ echo $?
- 0正常終了しました。
- >0出力失敗やシェル実装依存のエラーが発生しました。
気をつけることと入れ方
危険度は低いですが、設定ファイル生成やパイプ処理へ流す場面では、引用不足やエスケープ差が不具合の原因になります。厳密な制御が必要ならprintfへ切り替えてください。
シェル(bash など)に組み込まれたコマンドです。入れるものはありません。
環境による違い
POSIXのechoは歴史的経緯が大きく、-nやバックスラッシュ解釈の扱いに実装差があります。移植性が必要な用途ではprintfを使うのが安全です。
確かめた環境Debian GNU/Linux / 13 / Bash 5.2.372026-04-09 に確認
よくある質問
echoとprintfはどう使い分けますか。
簡単な表示はecho、移植性と整形精度が必要な時はprintfです。
資格試験では
- LinuC レベル1大事1.03.1 コマンドラインの操作
- LPIC-1大事105.1 シェル環境のカスタマイズと利用
- 共通基礎大事Linuxコマンド基礎
echo を最後まで読みました。
Linux コマンド辞典に戻る26 / 144