True (UNIX)

Unix系オペレーティングシステムにおいて、`true`コマンドは、常に終了コード0を返すだけの非常にシンプルなコマンドです。これは、シェルスクリプトにおける論理的な「」の状態を表現するために使用され、条件文やループ構造において重要な役割を果たします。シェルは、この終了コード0を論理値のとして解釈します。

`true`コマンドの概要



`true`コマンドは、主にシェルスクリプトの条件文やループ内で利用されます。スクリプトの制御フローを決定する際に、偽値を必要とする場面で頻繁に登場します。プログラムの終了コードは、ブーリアン型の値として扱われ、`true`コマンドが返す0は「」を意味します。

例えば、以下のBourne shellスクリプトは、割り込みが発生するまで文字列 `hello` を繰り返し表示します。

bash
while true
do
echo hello
done


この例では、`while true` の部分が無限ループを形成し、`true`コマンドが常にの条件を提供し続けるため、スクリプトは `hello` を表示し続けます。`true`コマンド自体は引数を必要としませんが、一部のバージョンでは `help` オプションで使用法の概要を表示したり、`version` オプションでプログラムのバージョンを表示したりすることができます。

ヌルコマンドとしての `true`



`true`コマンドは、単独のコロン(`:`)としても記述することができます。この形式は「ヌルコマンド」と呼ばれ、多くのシェルで組み込みコマンドとして提供されています。ヌルコマンドは、`true`コマンドよりもさらに基本となるコマンドであり、同じくを意味します。

上記の例を、`true`の代わりにヌルコマンド `:` を使用して書き換えることができます。

bash
while :
do
echo hello
done


この例でも、`:` が常にの条件を提供するため、スクリプトは `hello` を繰り返し表示します。

ヌルコマンド形式の `:` は、ダミーコマンドとしても使用できます。特に、パラメータに値を代入する際に、`${parameter:=word}` の形式で利用されることがあります。例えば、bashのバグレポートスクリプト `bashbug` では、以下のように使用されています。

bash
: ${EDITOR:=vi}


このコードは、環境変数 `EDITOR` が設定されていない場合、デフォルト値として `vi` を設定します。ここで、ヌルコマンド `:` は、代入操作のためだけに存在し、実際のコマンド実行は行いません。

実装と組み込み版



`true`コマンドは通常、独立した実行ファイルとしても提供されていますが、ほとんどのシェルでは組み込みコマンドとしても実装されています。組み込みコマンド版は、シェル内部で直接実行されるため、外部ファイルを実行するよりも高速に処理できます。このため、スクリプトのパフォーマンス向上に貢献します。

まとめ



`true`コマンドは、そのシンプルさにもかかわらず、シェルスクリプトにおいて非常に重要な役割を果たしています。条件分岐やループを制御し、スクリプトの実行フローを適切に管理するために不可欠な要素と言えるでしょう。また、ヌルコマンド `:` としての使用は、スクリプトの柔軟性を高め、より複雑な処理を可能にします。

関連事項



  • - `false` (UNIX): `true`コマンドとは反対に、常に終了コード1を返すコマンドで、偽を表現するために使用します。
  • - `yes` (UNIX): 指定された文字列を無限に表示し続けるコマンドです。対話的な処理で、yes/noのような入力を自動化する際に役立ちます。

参考資料




これらの情報源を参考に、`true`コマンドとその関連コマンドについて、さらに理解を深めていただければ幸いです。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。