【 echo 】 文字列を出力する 【 Linuxコマンドまとめ 】

2017年11月8日

「Linuxコマンドまとめ」カテゴリでは、Linuxのコマンドについて、基本的な実行例とオプションを分かりやすくまとめます。

echo」は文字列を出力するコマンドです。

与えられた文字列を標準出力(通常は端末ウィンドウ)に書き出します。固定の文字列のほか、変数に設定された値を出力するためによく使われます。

echoコマンドの基本的な使い方

echoコマンドの基本書式は、以下の通りです。

echo [オプション]... [文字列]...

引数に指定された文字列を出力する、シンプルなコマンドです。変数値を画面に表示して確認するほか、パイプで他のコマンドに文字列を渡したい場合や、リダイレクトでファイルに文字列を出力したい場合に使います。

echoコマンドによる変数値の確認

echoコマンドは、環境変数やシェル変数の値を出力するためによく使われます。たとえば、ホームディレクトリが設定されている環境変数「HOME」の値を出力するには、以下のように実行します。

$ echo $HOME
/home/lintaro

この時、「$HOME」を変数値(上記の例だと/home/lintaro)に置き換えているのはechoコマンドではなくシェル(通常はbash)です。シェルが「$HOME」を「/home/lintaro」に置き換えて、「echo /home/lintaro」を実行しています。そのため、他のコマンドの引数にも「$変数名」を使うことができます。たとえば、「cd $HOME」と入力してEnterを押すと、「cd /home/lintaro」が実行される、というわけです。

$変数名」は「${変数名}」のように、「{}」(ブレース)でくくって書くこともできます。たとえば、環境変数「USER」に続けて「01」と出力したい場合、以下のように実行してもうまくいきません。

$ echo $USER01

これだと、シェルに「USER01」が変数名だと解釈されてしまうからです。このような場合、以下のように「{}」でくくるとうまくいきます。

$ echo ${USER}01
lintaro01

また、以下のように複数の文字列、変数値を一度に出力することもできます。

$ echo USER: $USER, HOME: $HOME, SHELL: $SHELL
USER: lintaro, HOME: /home/lintaro, SHELL: /bin/bash

echoコマンドの主なオプション

-n : 最後に改行を出力しない

echoコマンドは通常、最後に改行コードを出力します。以下のように、指定した文字列を出力後、改行されてからプロンプト(以下の例だと「[email protected]:~$ 」)が表示されます。

[email protected]:~$ echo -n STRING
STRING
[email protected]:~$ 

-n」オプションをつけると、以下のように文字列の後で改行されず、続けてプロンプトが表示されます。

[email protected]:~$ echo -n STRING
[email protected]:~$ 

このオプションは、他のコマンドに出力をパイプしたり、リダイレクトでファイルに書き出す時、改行を含めたくない場合に使用します。

-e : バックスラッシュをエスケープ文字として解釈する

バックスラッシュ(\)と文字との組み合わせを、特殊な文字として扱います。主に使われるのは「\n」(改行)、「\t」(タブ)、「\\」(バックスラッシュ)です。文字列にバックスラッシュを用いる場合、「"」(ダブルクォーテーション)でくくって以下のように実行します。

$ echo -e "line1\nline2\nline3"
line1
line2
line3
echo -e "USER\t$USER\nHOME\t$HOME\nSHELL\t$SHELL"
USER	lintaro
HOME	/home/lintaro
SHELL	/bin/bash
$ echo -e "/\n\tetc/\n\tusr/\n\t\tbin/\n\t\tsbin/\n\tvar/\n\t\tlib/\n\t\tlog/"
/
	etc/
	usr/
		bin/
		sbin/
	var/
		lib/
		log/