この記事は合計 1559 文字で構成されており、推定読了時間は 6 分です。
目次
端末印刷
ターミナルは対話型ツールであり、ターミナル内のテキストの印刷は、ほとんどのスクリプトの基本タスクです。
基本的な文法
ターミナル印刷でテキストを出力するには、echoとprintf (C/C++ のもの) という 2 つの方法があります。
デフォルトでは、echo は各呼び出しに改行文字を追加します。
テキストを出力するにはさまざまな方法があります。
たとえば、文字列を二重引用符で囲むことができます。
echo "Hello world!"
テキストを直接入力して同じ効果を実現することもできます。
echo Hello world!
一重引用符を使用することもできます
echo 'Hello world!'
ただし、これら 3 つの印刷方法には一定の制限があります。
引用符なしで echo を使用する場合、Bash シェルではセミコロンが区切り文字として使用されるため、テキスト内でセミコロン (;) を使用することはできません。例えば:
echo Hello;world
この文は「Hello」が出力された後に終了し、world という名前の命令が見つかって実行されます。
ターミナルの印刷に使用できるもう 1 つのコマンドは printf (はい、C 言語の printf です) です。
printf "Hello world"
デフォルトでは、printf は echo コマンドのように改行を自動的に追加しません。必要に応じて手動で追加する必要があります。同時に、Bash の printf コマンドは C 言語と同じで、次のスクリプトのように出力形式 (文字列の幅、左右の配置など) を制御できます。
#!/bin/bash
#文件名: printf.sh
printf "%-5s %-10s %-4s\n" No. Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Curry 92.32
printf "%-5s %-10s %-4.2f\n" 2 James 94.87
printf "%-5s %-10s %-4.2f\n" 3 Kevin 91.89
出力結果:
テキストがフォーマットされた形式で出力されていることがわかります。
このうち%s、%fやその他の%c、%dなどはすべて書式置換文字であり、C 言語を勉強したことがある人ならこの概念はよく理解できると思います。
拡大する:
%-5sの'-' は左揃えを意味し (そのような記号がない場合は、デフォルトで右揃えが使用されます)、直後の数字'5' は文字幅を表し、文字数を指定するために使用されます。特定の変数用に予約されており、内容が指定された文字数に満たない場合、残りの文字はスペースで埋められます。
Mark フィールドの書式設定形式は%-4.2fです。ここで、.2 は小数点以下 2 桁を保持することを意味します。
次の「\n」は改行文字を表します。
興味深い拡張機能
エコーでのエスケープシーケンスの使用
デフォルトでは、echo は出力テキストの末尾に改行文字を追加します。オプション -n を使用すると、末尾の改行を無視できます。
さらに、echo は二重引用符で囲まれた文字列内のエスケープ シーケンスをパラメータとしてサポートします。エスケープ シーケンスを使用する場合は、echo -e "エスケープ シーケンスを含む文字列"を使用します。
例えば:
echo -e "Hello\tBash\tWorld"
出力結果:
色付きのテキストを出力する
印刷されるテキストは常に白であるとは限りません。エスケープ シーケンスを使用して色を調整できます。
各色には対応するカラーコードがあり、以下のリスト項目を参照して、出力する文字の色を設定できます。
色 | カラーコード |
リセット | 0 |
黒 | 30 |
赤 | 31 |
緑 | 32 |
黄色 | 33 |
青 | 34 |
赤紫色 | 35 |
青 | 36 |
白 | 37 |
たとえば、緑色の「Hello World」を出力します。
echo -e "\e[0;32mHello World \e[0m"
出力結果:
出力テキスト形式 (太字、下線、フラッシュなど) を設定することもできます。対応するスタイル コードは次のとおりです。
スタイル | スタイルコード |
普通 | 0 |
大胆な | 1 |
ドッジ | 2 |
イタリック体 | 3 |
下線 | 4 |
点滅する | 5 |
背景色を同じフォント色に設定します | 7 |
フォント透明 | 8 |
取り消し線 | 9 |
たとえば、取り消し線を使用してフォントを緑色に設定すると、「Hello World!」と出力されます。
echo -e "\e[9;32mHello World \e[0m"
出力結果:
もちろん文字の背景色も設定可能で、使用するカラーコードは以下の通りです。
色 | カラーコード |
リセット | 0 |
黒 | 30 |
赤 | 31 |
緑 | 32 |
黄色 | 33 |
青 | 34 |
赤紫色 | 35 |
青 | 36 |
白 | 37 |
たとえば、背景色として青を使用し、フォント フォームで取り消し線を使用し、「Hello World」を出力したいとします。
echo -e "\e[9;44mHello World \e[0m"
出力結果: