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. true
と false
コマンドの違いは何ですか?
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
改訂履歴
- 2025/05/05 初版