BashシェルでのEchoコマンド:多くの用途を発見する

管理者として、Linuxシステムを管理する際には、定期的にBashでechoコマンドを実行することがあります。しかし、テキストを表示すること以外に、echoコマンドが提供できるものはあるのでしょうか?

このチュートリアルでは、echoコマンドを詳しく見て、その中で最も役立つ実用的な例を学びます。

準備はいいですか?お楽しみにして、echoコマンドのアイデアを再構築しましょう!

前提条件

このチュートリアルは、実演を含んでいます。一緒に進めるためには、Ubuntuマシンが必要です。このチュートリアルではUbuntu 20.04を使用していますが、他のLinuxディストリビューションでも動作します。

echoコマンドを使用して文字列をBashシェルに表示する

echoコマンドについて考えると、まず思い浮かぶのは文字列の値をコンソールに表示することです。そうです、echoコマンドはコマンドやスクリプトから文字列を直接返します。

しかし、このチュートリアルの後半では、echoコマンドを別の視点で見てみます。今は、このコマンドがどのように文字列をコンソールに表示するかを見てみましょう。

echoコマンドの構文は次のようになります:

  • string – 表示するテキストです。
  • options – 出力を変更するために指定できるオプション引数です。
echo string options

以下のechoコマンドをオプションなしで実行して、単純なテキストをコンソールに表示します。このコマンドでは、文字列をechoコマンドの引数として渡します。

echo "Echo command bash"
Printing a string to the console

文字列内の改行を抑制する

echoコマンドはデフォルトで各文字列の末尾に改行文字を追加します。その結果、複数の文字列を印刷すると、おそらく1つの文字列を別の文字列に接続すると、各文字列が新しい行に印刷されます。

-nオプションは、echoコマンドに末尾の改行を抑制するように指示し、複数の文字列を1行に印刷するようにします。たとえば、コンソールに進捗バーを印刷する際に、このオプションは役立ちます。

以下のコマンドを実行してProgress:と50%を印刷します。

echo -n "Progress: " && echo "50%"

下には、2つの文字列が改行で区切られているのが見えます。

echo command bash : newlines separate the two strings

今、次のコマンドを実行し、-nオプションを追加してProgress:と50%を印刷します。

echo -n "Progress: " && echo "50%"

以下のように、-nオプションを使用して改行を抑制したため、両方の文字列が1行に収まっています。

Suppressing trailing newlines

変数の値を印刷する

スクリプトを作成する際、通常は一時的に変数に値を格納し、その値をechoコマンドで印刷できます。これは、シェルスクリプトをデバッグする際に変数の値を確認するのに役立ちます。

以下のコマンドを実行して、number変数の値を10に設定し、その値をコンソールに印刷します。

# number変数に値10を格納
number=10
# number変数に格納されている現在の値を印刷
echo The number is $number
Printing the Value of a Variable

エスケープシーケンスの解釈

エスケープシーケンスは特殊文字を表す一連の文字であり、-eオプションを使用してエスケープシーケンスを解釈できます。

例えば、\tエスケープシーケンスはタブ文字を表します。-eオプションを使用してコンソールに\tを出力すると、\tは文字通りに印刷されるのではなく、タブ文字として解釈されます。

最も一般的なエスケープシーケンスのいくつかは次のとおりです。

Escape Sequence Function
\b backspace
\t tab
\n new line
\\ backslash
\$ dollar sign

以下のコマンドを実行して、Hello\tWorldをコンソールに出力します。

echo "Hello\tWorld"

下記のエコーコマンドが文字列Hello\tWorldをそのまま印刷したことがわかります。

Printing a string without an escape sequence

次に、下記のコマンドを実行してHello\tWorldを出力し、-eオプションを追加して\tをタブ文字として解釈します。

echo -e "Hello\tWorld"

下記のHelloとWorldの間に大きな隙間があることに注目してください。

Interpreting an escape sequence

新しい行に文字列を挿入する

長い単一の文字列を印刷すると、ユーザーはその全体を読むのに苦労します。幸いにも、\nオプションを使用すると、文字列の途中に改行文字を追加できます。このオプションは、テキストを複数行に印刷する際によく使用され、実際のテキストを明確にします。

下記のコマンドを実行して、文字列Echo command bash\nAnother lineを印刷し、\nオプションが文字列を2行に分割します。

echo -e "Echo command bash\nAnother line"

下記では、\nオプションが文字列Another lineを新しい行に配置したことがわかります。

Inserting a string into a new line

文字列間に垂直タブを挿入する

\tエスケープシーケンスが文字列間に水平タブ文字を配置する方法を見てきましたが、垂直タブはどうでしょうか?\vオプションを使用すると、文字列を垂直タブで区切ることができ、テキストバナーを作成するのに最適です。

このオプションは、テキストを複数の列に印刷する際によく使用され、各列が新しい行にあり、先頭に新しいタブスペースがある状態で表示されます。

以下のコマンドを実行して、テキスト「Echo command bash demo」を印刷しますが、各単語の間に垂直タブ(\v)を挿入します。

echo -e "Echo \vcommand \vbash \vdemo
Inserting vertical tabs in between strings

拡張子に基づいてファイル名を印刷する

特定のファイルタイプのファイルを見つける方法を探している場合、echoコマンドのこの機能は同じように機能します。echoコマンドはワイルドカード文字(*)を使用して、特定の拡張子を持つディレクトリ内のファイルをリストアップする機能をサポートしています。

1. 現在のディレクトリ内の拡張子が.txtで終わるすべてのファイルを印刷するには、次のコマンドを実行します。

echo *.txt
Printing all .txt files in the current directory

2. 次に、現在のディレクトリ内の拡張子が.debファイルのファイルをすべて印刷するには、次のコマンドを実行します。

echo *.deb
Printing all .deb files in the current directory

3. 最後に、次のコマンドを実行して、~/Downloadsディレクトリ内の.txt拡張子を持つファイルを印刷します。~/Downloads/をファイルの実際のディレクトリパスに置き換えることができます。

echo ~/Downloads/*.txt

以下のように、echoコマンドはファイルが存在するディレクトリパスを指定する機能をサポートしています。

Finding .txt files in the specific directory

ファイルへの出力を書き込む

コマンドの結果が大量の場合、コンソール上で全てを読むことはほとんどできません。代わりに出力をファイルに書き込むことは素晴らしいアイデアです。しかし、どのようにしてファイルに書き込むのでしょうか?echoコマンドは、テキストをコンソールに表示するだけでなく、直接ファイルに出力することもサポートしています。

以下のコマンドを実行してください。このコマンドは出力を提供しませんが、出力はファイルecho-bash.txt に書き込まれます。

なお、echo-bash.txtというファイルが既に存在する場合、新しい内容で上書きされます。

echo "echo command bash" > echo-bash.txt

次に、以下のcatコマンドを実行して、echo-bash.txtファイルの内容を表示してください。

cat echo-bash.txt

以下のように、echoコマンドの出力がecho-bash.txtファイルに書き込まれていることがわかります。

Verifying the output written to file

既存のファイルに出力を追加する

先述のように、>演算子は既存のファイルを新しい内容で上書きします。しかし、上書きする代わりに既存のファイルに出力を追加したい場合はどうすればよいでしょうか?

>演算子の代わりに、二つの>>を使用します。この機能により、既存の内容を保持し、新しいエントリをファイルの末尾に追加することができます。

以下のコマンドを実行して、既存のecho-bash.txtファイルに新しいテキスト(Appending text)を追加してください。

echo "Appending text" >> echo-bash.txt

次に、以下のcatコマンドを実行して、echo-bash.txtファイルの内容を表示してください。

cat echo-bash.txt

以下のように、echoコマンドの出力が上書きせずにファイルに追加されていることがわかります。

Appending output to an existing file

結論

bashシェルのechoコマンドは、さまざまな方法で使用できるシンプルでパワフルなツールです。そして、このチュートリアルでは、echoコマンドの最も人気のあるオプションを使用してその潜在能力を最大限に活用する方法を学びました。

コンソールにテキストを出力するだけではなく、テキストの出力をファイルに書き込んだり、出力を追記したり、出力の見た目を変更する方法も見てきました。

なぜ、いくつかのechoコマンドの使用方法を選んで、それらをあなたのスクリプトに記述してみませんか?どんな創造的な方法が思いつくか試してみてください!

Source:
https://adamtheautomator.com/echo-command-in-bash/