true コマンド

成功の終了ステータス(0)を返します。

概要

true コマンドは成功の終了ステータス(0)を返す以外は何もしません。主にシェルスクリプトで無限ループの作成、プレースホルダー、または条件ロジックのテストに使用されます。

オプション

true コマンドは成功ステータスコードで終了することが唯一の目的であるため、オプションはありません。

使用例

基本的な使い方

$ true
$ echo $?
0

シェルスクリプトで無限ループを作成する

$ while true; do echo "Ctrl+Cで終了"; sleep 1; done
Ctrl+Cで終了
Ctrl+Cで終了
Ctrl+Cで終了
^C

条件文でプレースホルダーとして使用する

$ if [ "$DEBUG" = "yes" ]; then echo "デバッグ情報"; else true; fi

論理OR演算での使用

$ true || echo "これは表示されない"
$ false || echo "これは表示される"
これは表示される

ヒント:

true: の違い

true: (コロン) コマンドは本質的に同じことを行います - どちらも成功の終了ステータスを返します。コロンはシェル組み込みコマンドでわずかに効率的ですが、true はより読みやすく明示的です。

条件付き実行での使用

true&&|| 演算子を使った条件付き実行で便利です。例えば、command && true は最初のコマンドが成功するかどうかに関わらず、全体のコマンドが成功することを保証します。

空ファイルの作成

主な目的ではありませんが、true > ファイル名 を使用して空のファイルを作成できます(touch と同様)。

よくある質問

Q1. truefalse コマンドの違いは何ですか?

A. true は常にステータスコード0(成功)で終了し、false は常にステータスコード1(失敗)で終了します。

Q2. true はシェル組み込みコマンドですか、それとも外部コマンドですか?

A. 効率性のために、ほとんどのシェルは true を組み込みコマンドとして実装していますが、同じことを行う外部の /bin/true コマンドも存在します。

Q3. コメントの代わりに true を使う理由は何ですか?

A. コメントとは異なり、true は実際に実行されるコマンドであるため、ループ構造や条件分岐のプレースホルダーなど、構文がコマンドを必要とする場所で役立ちます。

Q4. true はエラーを抑制するために使用できますか?

A. はい、command || true を使用すると、最初のコマンドが失敗しても全体のコマンドが成功を返すことを保証します。

参考資料

https://www.gnu.org/software/coreutils/manual/html_node/true-invocation.html

改訂履歴