Linux の echo コマンド は、指定した文字列や変数の値を標準出力に表示するためのコマンドです。
シェルスクリプトでメッセージを出したり、環境変数の中身を確認したり、リダイレクトと組み合わせて設定ファイルを書き出したりと、日常的に最もよく使われるコマンドのひとつです。
bash などの多くのシェルでは、echo はシェル組み込みコマンドとしても実装されています。
挙動やオプションの解釈が環境によって微妙に異なることがあるため、複雑な出力が必要な場合は printf コマンドの利用も検討すると安全です。
echo [オプション] [文字列]...
引数として指定した文字列を、そのまま 1 行として標準出力に表示します。
複数の引数を指定した場合は、スペース区切りで連結されて 1 行に出力されます。
・単純に文字列を表示する。
echo "Hello, world"
もっとも基本的な使い方です。
標準出力に Hello, world と表示し、最後に改行が 1 つ付きます。
・複数の単語をスペース区切りで表示する。
echo Hello Linux world
引数として指定した文字列がスペース区切りで連結されて 1 行として表示されます。
スペースを含む 1 つの文字列として扱いたい場合は、"..." でまとめて引用します。
・環境変数の内容を表示する。
echo "$HOME"
ダブルクォート内では変数が展開されるため、$HOME の値が表示されます。
現在のユーザーのホームディレクトリや PATH などの確認に使えます。
・改行を付けずに文字列を出力する。
echo -n "Hello"
-n オプションを付けると、末尾の改行を出力しなくなります。
同じ行の続きに別のコマンドで出力したいときなどに利用します。
・エスケープシーケンスを解釈して表示する。
echo -e "line1\nline2\tTabbed"
-e オプションを付けると、\n(改行)や \t(タブ)などのエスケープシーケンスを解釈して表示します。
環境によってはシェル組み込みの echo が -e を解釈しない場合もあるため、挙動には注意してください。
・シェルスクリプトでメッセージを出力する。
echo "バックアップを開始します..."
シェルスクリプト内で処理の開始や終了、エラー内容などを表示する用途でも頻繁に使われます。
ログファイルにリダイレクトすれば、簡易的なログ出力としても利用できます。
・echo の出力をファイルに書き込む(上書き)。
echo "export APP_ENV=production" > /etc/profile.d/app_env.sh
リダイレクト(>)を使うことで、echo の出力をファイルに書き込めます。
既存ファイルがある場合は上書きされるため、本番環境では注意が必要です。
・ファイルの末尾に追記する。
echo "0 3 * * * /usr/local/bin/backup.sh" >> /var/spool/cron/root
>> を使うと、ファイルの末尾に文字列を追記できます。
cron 設定や設定ファイルへの行追加など、スクリプトから追記したいときに使います。
(※ crontab の編集には通常 crontab -e を推奨します)
・コマンド置換と組み合わせて結果を表示する。
echo "Today is date +%Y-%m-%d"
バッククォート()や ...$(...) を使ったコマンド置換と組み合わせることで、
date コマンドの結果などをメッセージ内に含めて表示できます。
・標準エラー出力にメッセージを出す(リダイレクトを併用)。
echo "エラーが発生しました" 1>&2
通常 echo は標準出力に出力しますが、リダイレクトを使うことで標準エラー出力に流すこともできます。
スクリプト内でエラーメッセージと通常メッセージを分けて扱いたいときに有効です。
・シェルスクリプトのログ出力
バックアップやバッチ処理のスクリプト内で、echo を使って処理開始・終了やエラー内容を出力し、
ログファイルにリダイレクトしておくことで、あとから何が起こったか追跡しやすくなります。
・環境変数や設定値の確認
echo "$PATH" や echo "$JAVA_HOME" のように、環境変数の中身を素早く確認する用途でもよく使われます。
ログインシェルと非ログインシェルで PATH が違う、といったトラブル調査にも役立ちます。
・設定ファイルの簡易生成
小さな設定ファイルやシンプルなスクリプトであれば、
echo とリダイレクトを組み合わせてワンライナーで作成してしまうこともできます。
・cron や systemd からのメッセージ出力
cron ジョブや systemd サービス内のスクリプトから echo でメッセージを出力しておくと、
ログの確認時に「どのジョブが動いたのか」「どの段階で止まったのか」が把握しやすくなります。
| short option | long option | description |
|---|---|---|
| -n | 末尾に改行を付けずに文字列を出力する | |
| -e | バックスラッシュによるエスケープシーケンスを解釈して表示する | |
| -E | エスケープシーケンスを解釈しない(デフォルトの挙動を明示する) | |
| --help | echo コマンドの使い方(ヘルプ)を表示して終了する | |
| --version | echo コマンドのバージョン情報を表示して終了する |
echo コマンドはシェル組み込みか外部コマンドかによって挙動が異なる場合があります。
特に -e オプションの扱いやエスケープシーケンスの解釈は、環境ごとに差が出やすいため注意してください。
より厳密な書式指定が必要な場合は、printf コマンドの利用も検討すると良いでしょう。
詳細なオプションや挙動については、help echo(bash 組み込み)や
echo(1) マニュアルページ(英語)
もあわせて参照してください。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
