echoコマンドの詳細まとめました【Linuxコマンド集】

echo
  • このエントリーをはてなブックマークに追加
  • Pocket

echoは画面に文字列や数値、変数を表示するLinuxコマンドだ。

「エコー」と読み、そのまま繰り返す「こだま・反響」を意味するコマンドだ。

このページでは様々な表示方法とその応用を解説する。今まで使ってこなかった方もこの機会にぜひechoの使い方を覚えておいてほしい。

echoコマンドの基本

echoコマンドの基本動作

使い方は、次のとおりシンプルだ。

$ echo 表示するもの

画面に文字列を表示するにはこれだけだ。

画面にHello!という文字を表示する場合は、次のコマンドだ。

$ echo Hello!

01:echo-1

Hello!の文字列が表示できた。

上記echoコマンドを試すなら下のコマンドをLinux上で実行すればすぐに再現可能だ。

以降も同様にLinux上で試すためのコマンドを一通り置いておくので、実際に叩いてみてほしい。

変数を表示する。

echoはコンピュータ内の変数の値を表示することができる。

まず、変数を設定する。「=」との間にスペースなどは入れない。

今回は変数aに1200という数字を格納する。

$ a=1200

変数の表示は、$に続けて変数名を入力する。

$ echo $変数名

変数aを表示する場合は、次のとおりだ。

$ echo $a

02:echo-2

変数aの内容、1200が表示された。

変数と文字列を同時に表示する

任意の文字列と変数を同時に表示することもできる。表示したい任意の文字列はそのまま、変数の部分は$に続けて変数名を入力する。

例えば、重量として単位を含めて表示したいのであれば、次のとおりだ。

$ echo weight $a g

03:echo-3

weight 1200 gと表現された。

変数を複数表示する

当然だが、同様に複数の変数を組み入れた表示もできる。

まずは、変数に値を格納する。

$ menu=coffee

さらに

$ price=500

例えば、変数の中身を注文内容のメニューと価格を表示したいのであれば、次のとおりだ。

$ echo order:$menu price:$price Yen

04:echo-4

メニューと価格が表示された。

計算値を表示する

計算値を表示することもできる。計算値は「expr 計算式」で求め、exprを含めた計算式全体をバッククォーテーション「」で囲む。

多くのプログラミング言語と同じく、足し算は「+」、引き算は「-」、割り算は「/」を入力すればよい。

掛け算だけは「*」はワイルドカードという意味も持つので、そのままではエラーとなる。掛け算は「\*」と入力する。

まずは、変数に値を格納する。

$ n=5

例えば、変数の中身をメニューと個数と総計金額を表示したいのであれば、次のとおりだ。

$ echo Menu:$menu Number:$n price:expr $price \* $n Yen

05:echo-5

メニューと個数と単価が掛け合わせた値が計算され表示される。

echoコマンドのオプションたち

コマンドの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション -e

改行を表示する

オプション -n

出力文字の最後の改行をしない

-eオプション:エスケープ文字を有効にする

コマンド入力時に使用できる文字の中で「\」(日本語キーボード上では¥マーク)は特殊な扱いになっており「エスケープ文字」と呼ばれている。このエスケープ文字と特定のアルファベットを組み合わせることで改行など様々な役割を持たせることができる。たとえば「\n」は改行の役割を持っている。

ただしそのまま書いただけでは改行はできず、オプション-eを使うことでエスケープ文字が有効となる。

改行したい箇所には「\\n」と入力する。

06:echo-6

\\nの位置で改行されている。

改行の「\\n」は、本来「\n」でよいが、コンピュータが「\n」を「n」としか認識できないので、「\」を一つ多く入力している。

のように「"」で表示文字全体を囲めば、「\n」でも認識する。

07:echo-7

今度は\nの位置で改行されている。

「\」のような意味を持ち、表面上に見えるものとは違う動作をしている文字は数多くある。括弧やスペース、$などの記号もそうである。

これらの文字の扱いで混乱しないためには、表示文字全体を「"」で囲むこと意識しよう。

-nオプション:出力文字の最後の改行をしない

echoコマンドで出力すると、出力文字の最後に改行しているので、次の行頭にコマンドプロンプトが表示されるが、nオプションでこの改行を出力しないこともできる。

$ echo -n 出力文字

Hello!の次の改行を表示しないようにしてみよう。

$ echo -n Hello!

08:echo-8

Hello!の次の改行が出力されないため、続けてコマンドプロンプトが表示される。

出力を画面ではなくファイルに出力する

echoコマンドは初期設定では画面に表示する。

画面ではなく、ファイルに出力することもできる。これはechoの機能というよりもリダイレクトと呼ばれるLinuxシェルの機能だ

画面に表示されるものを、別のところに挿入できる。

echoコマンドで新規作成したファイルに出力する

echoコマンドで文字列をファイルに出力する場合は、>で出力するファイル名を指定する。

$ echo 文字列 > ファイル名

例えば簡単なスタイルシートを作るのであれば次のように入力すればよい。

$ echo "h1{font-size:20px;}" > style.css

09:echo-9

ファイルstyle.cssが作成され、その内容として、「h1{font-size:20px;}」が書き込まれた。

echoコマンドでファイルに追記する

ファイルに文字列を追記するのであれば、次のように入力する。

$ echo 追記する文字列 >> ファイル名

先ほどのスタイルシートの2行目に2つ目のスタイルを追記する。

$ echo "h2{font-size:16px;}" >> style.css

10:echo-10

ファイルstyle.cssの2行目に、「h2{font-size:16px;}」が追記された。

クォーテーションの解釈のされ方

シングルクォーテーション「'」の場合

シングルクォーテーションの場合、中はすべて文字列であると解釈される。

例えば、「pwd」という文字列を$DIR変数に入れたとする。

$ DIR=pwd

これをシングルクォーテーションで囲んで出力すると「$DIR」という文字列が表示される。

echoコマンド12

ダブルクォーテーション「"」の場合

ダブルクォーテーションの場合は、変数が展開されて表示される。上記と同じ例を使うと、

$ echo "$DIR"

で「pwd」が表示される。

echo13

バッククォーテーション「」の場合

バッククォーテーションの場合、引用符内をコマンドであるとみなして、その実行結果と置き換える。変数も展開される。

$echo $DIR

で「pwd」コマンドがそのまま実行される。

echo 14

関連コマンド

最後にechoコマンドに関連して、基本的な画面表示のコマンドも紹介しておく。

unset

セットした変数を削除するにはunsetコマンドを利用する。

unset 変数名

で利用できる。

export

環境変数を定義するコマンド。「=」で定義したシェル変数は新しく起動したシェルから利用できないので、環境変数に設定する必要がある。

cat

ファイルの中身を標準出力するコマンドその他にも様々な使い方がある。詳細はリンク先のcatコマンドを参照。

clear

画面をクリアにし、入力をしやすくする。

まとめ

今回は、echoコマンドを使った画面出力とファイル出力方法を解説した。

変数の扱いや改行の表現方法は多くのプログラミング言語の出力にも応用できる内容だ。

echoコマンドを使った様々な出力方法は応用範囲が広い。ぜひ活用して欲しい。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. qqq より:

    計算値を表示することもできる。計算値は「expr 計算式」で求め、exprを含めた計算式全体をバッククォーテーション「
    」で囲む。

    バッククォーテーションが表示されていない。

  2. fool より:

    バックスラッシュでダブルクォートをエスケープしないと正しく表示されないのでは。

    1. リカレントテクノロジー より:

      ご指摘いただきありがとうございます。
      クォート記号で文字コード表記をしなかった為に本文レイアウトが崩れた部分がありましたので訂正いたしました。

      引き続き、ご愛読のほど、よろしくお願いいたします。

  3. nh より:

    ・echoを含め上記解説のコマンド等の記述で、'echo Hello!'のよう に頭に'$'を付けないとエラーになりますか?
    ・変数を表示する場合、'$ echo ${a}のように変数を「{}」で囲ま ないとエラーになりませんか?

    1. リカレントテクノロジー より:

      いつもご愛読いただきありがとうございます。

      本記事のコマンド解説の中で意味合いの違う「$」が出てきますので、確かに混乱を招くところがあるかもしれません。

      【コマンドの頭にある「$」について】
      実際にCentOS等でコマンド練習を始めようとして頂くとわかりやすいのですが、echoの前にある「$」はコマンドを入力する前から表示されている「今は一般ユーザーの権限でログイン中ですよ」という印です。スーパーユーザー(rootなど)でログイン中の場合には「$」が「#」に変わります。なので実際にここから入力していただく必要はございません。

      【コマンドの途中にある「$」について】
      コマンドの途中で出てくる「$」は「その直後にある文字列を変数として扱う」ための印です。
      一例として「test」という文字列だけならファイル名やフォルダ名、あるいはコマンド名という可能性もありますが「$test」ならば必ず「testという名前の変数」であることがわかります。{}で囲む必要はありません。

      1. nh より:

        返信ありがとうございます。ネット上のシェルの解説で、'変数にアクセスするときは「${変数}」のように変数名の前に「$」を付けて変数を「{}」で囲む必要があります。'と書かれていたのですが、変数にアクセスするときも「{}」で囲む必要はないということでしょうか?
        ・echo△${a}⇒誤り?
        ・echo△$a⇒正?(「{}」で囲む必要はない?)

        1. リカレントテクノロジー より:

          いつもご愛読いただきありがとうございます。

          実はここがコマンド記述の面白い所でもあるのですが、実はどちらでも問題ないのです。
          ただし{}を使う理由はきちんとあって「どこからどこまでが変数名か分かりやすくなる」のが主な理由です。

          【例】
          $ hensu1=111111
          $ hensu2=222222

          まずは変数を2つ用意します。それぞれ中身は数字が6文字分ですね。
          これを{}無し、有りでそれぞれechoしてみます。

          $ echo $hensu1
          111111
          $ echo ${hensu1}
          111111

          もちろん、どちらも結果は同じです。
          さて {}の活用事例ですが、echoコマンドでは変数の前後に自由に文字列を挟むことも出来ますので、

          $ echo $hensu1から$hensu2まで
          111111から222222まで

          $ echo ${hensu1}から${hensu2}まで
          111111から222222まで

          こういった表記も出来ます。実行結果は同じですが、上の例ですと「$hensu1から$hensu2まで」のどこからどこまでが変数名か分かりずらいですよね。「$hensu」までが変数で「1から」という部分が文字かもしれません。下の例のように{}で囲めば「$hensu1」までが変数名であることがわかります。

          1. nh より:

            返信ありがとうございます。よく分かりました。「分かりやすさ」
            以外の点からすればどちらでも正しいということですね。

  4. nohohon より:

    -e は正確には「改行を表示する」ではありません。

    /bin/echo --help
    ...
    -e バックスラッシュによるエスケープを解釈する

    次の例では、タブ文字を表示します。

    echo -e \t

    1. リカレントテクノロジー より:

      いつもご愛読ありがとうございます。
      記事に反映させていただきました。
      ご指摘ありがとうございました。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する