- Echo は、シェルスクリプトから可視出力を受け取り、変数、ファイル名、ディレクトリを含めることができる重要なコマンドです。
- Echo には、Bash シェルに組み込まれたバージョンとバイナリ実行可能バージョンという 2 つのバージョンがあります。
- Echo は、ターミナルウィンドウにテキストを書き込んだり、動的出力のために変数を使用したり、コマンド出力を組み込んだり、バックスラッシュでエスケープされた文字でテキストを書式設定したり、ファイルとディレクトリを一覧表示したり、ファイルに書き込んだりするために使用できます。
echo
コマンドは、書式設定されたテキストをターミナルウィンドウに書き込むのに最適です。また、静的テキストである必要はありません。シェル変数、ファイル名、ディレクトリを含めることができます。また、echo をリダイレクトしてテキストファイルやログファイルを作成することもできます。この簡単なガイドに従って、その方法を確認してください。
Echo の機能
Echo は、繰り返すように言われたことを繰り返します。これは単純な機能ですが、重要な機能です。echo
がなければ、シェルスクリプトから可視出力を得ることができません。
多数の機能が備わっているわけではありませんが、echo
には知らなかったり、忘れていたりする機能がいくつかある可能性があります。
Echo には 2 つのバージョンがあります
ほとんどの Linux システムでは、echo
の 2 つのバージョンが提供されます。Bash シェルには独自のecho
が組み込まれており、echo
のバイナリ実行可能バージョンもあります。
次のコマンドを使用して、2 つの異なるバージョンを確認できます。
type echo
whereis echo
type
コマンドは、引数として渡したコマンドがシェルビルトイン、バイナリ実行可能ファイル、エイリアス、または関数であるかどうかを教えてくれます。echo
がシェルビルトインであることを報告します。
type
は答えを見つけるとすぐに、それ以上のマッチングの検索を停止します。そのため、システム内に同じ名前のコマンドが他にもあるかどうかは教えてくれません。しかし、最初にどれが見つかったかは教えてくれます。そして、それがそのコマンドを発行するときにデフォルトで使用されるものです。
whereis
コマンドは、コマンドラインパラメータとして渡されたコマンドのバイナリ実行可能ファイル、ソースコード、およびマニュアルページを探します。シェルビルトインは別個のバイナリ実行可能ファイルを持たないため、シェルビルトインは検索しません。これらは Bash 実行可能ファイルの不可欠な部分です。
whereis
コマンドは、echo
が/bin
ディレクトリにあるバイナリ実行可能ファイルであると報告します。
echo
のそのバージョンを使用するには、コマンドラインで実行可能ファイルへのパスを指定して明示的に呼び出す必要があります。
/bin/echo --version
シェルビルトインは--version
コマンドライン引数が何であるかわからず、ターミナルウィンドウでそれを繰り返すだけです。
echo --version
ここで示した例はすべて、Bash シェルのデフォルトバージョンのecho
を使用しています。
Echo を使用してターミナルにテキストを書き込む
単純なテキスト文字列をターミナルウィンドウに書き込むには、echo
と表示させたい文字列を入力します。
echo My name is Dave.
テキストが繰り返されます。しかし、試してみると、事態が少し複雑になることがすぐにわかります。この例を見てください。
echo My name is Dave and I'm a geek.
ターミナルウィンドウに>
記号が表示され、待機状態になります。Ctrl+C を押すと、コマンドプロンプトに戻ります。何が起こったのでしょうか?
「I'm」という単語のシングルクォートまたはアポストロフィがecho
を混乱させました。echo
は、そのシングルクォートを引用されたテキストセクションの開始と解釈しました。echo
は閉じシングルクォートを検出できなかったため、さらに多くの入力を待機していました。そのさらなる入力には、待機していたシングルクォートが含まれると予想していました。
文字列にシングルクォートを含めるには、最も簡単な方法は文字列全体を二重引用符で囲むことです。
echo "My name is Dave and I'm a geek."
これにより、「geek」という単語が二重引用符で囲まれます。これらのバックスラッシュエスケープ文字については、まもなく詳しく説明します。
Echo で変数を使用する
これまで、ターミナルウィンドウに定義済みのテキストを書いてきました。echo
で変数を使用すると、より動的な出力を生成し、シェルによって値を挿入することができます。このコマンドで単純な変数を定義できます。
my_name="Dave"
my_name
という変数が作成されました。これは、「Dave」というテキストの値が割り当てられています。echo
に渡す文字列で変数名を使用すると、変数の値がターミナルウィンドウに書き込まれます。echo
に変数であることを知らせるには、変数名の前にドル記号$
を付ける必要があります。
注意点があります。文字列をシングルクォートで囲んでいる場合、echo
はすべてを文字通りに扱います。変数の名前ではなく、変数の値を表示するには、ダブルクォートを使用します。
echo 'My name is $my_name'
echo "My name is $my_name"
かなり適切なことに、繰り返す価値があります。
- シングルクォートを使用すると、テキストが文字通りにターミナルウィンドウに書き込まれます。
- ダブルクォートを使用すると、変数が解釈されます(変数展開とも呼ばれます)。そして、値がターミナルウィンドウに書き込まれます。
Echo でコマンドを使用する
echo
でコマンドを使用し、その出力をターミナルウィンドウに書き込まれる文字列に組み込むことができます。コマンドが変数であるかのようにドル記号$
を使用し、コマンド全体を括弧で囲む必要があります。
date コマンドを使用します。1 つのヒントは、echo
で使用を開始する前に、コマンドを単独で使用することです。そうすれば、コマンドの構文に問題がある場合は、echo
コマンドに含める前にそれを特定して修正できます。その後、echo
コマンドが期待どおりに動作しない場合は、コマンドの構文はすでに証明されているため、問題はecho
の構文にあることがわかります。
ターミナルウィンドウでこれを実行してください。
date +%D
そして、date コマンドから期待どおりの結果が得られたことを確認したら、echo
コマンドに統合します。
echo "Today's date is: $(date +%D)"
コメントする