No.002シェル

echo

エコー・文字列表示

知識レベル 入門安全に試せる一般ユーザーで使えるシェルに組み込み

文字列や変数展開結果を標準出力へ表示します。手軽ですが、エスケープ解釈や-nの扱いに実装差があるため、厳密な出力制御にはprintfを使うほうが安全です。

答えよく使う形

  1. 単純な文字列表示です
  2. 変数展開結果を表示します
  3. 一部実装で末尾改行を出さずに表示します
visitor@goodly: ~

$ echo "Hello, Linux"

Hello, Linux

$ name="Kernel" echo "$name"

Kernel

$ echo Hello

覚える順番の中で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

Goodly のメニュー