Linux true コマンド
true コマンドとは
trueLinux/Unix システムの中で最も単純なコマンドの1つで、機能はただ1つだけです:常に成功(終了ステータスコード 0)を返します。
このコマンドは一見単純ですが、シェルスクリプトプログラミングにおいて重要な用途があります。「何もしないが常に成功する」操作に相当します。
基本構文
例
オプションの説明
| オプション | 説明 |
|---|---|
| --help | ヘルプ情報を表示して終了 |
| --version | バージョン情報を表示して終了 |
動作原理
trueコマンドの実行プロセスは非常に簡単です:
- ターミナルで入力し
trueEnter キーを押すと - システムがこのコマンドを実行します
- コマンドは即座に完了し、何も操作を行いません
- 終了ステータスコード 0(成功を示す)を返します
実際の使用例
1. 無限ループの条件として
例
echo 「これは無限ループです」
sleep 1
done
この例では、while true無限ループが作成されます。なぜならtrueが常に成功(0)を返すため、ループ条件が常に真になるからです。
2. デフォルトの成功操作として
例
この書き方は、もしcommandの実行が失敗した場合に、true(常に成功)を実行することを意味します。これにより、式全体が常に成功状態を返すことを保証できます。
3. スクリプト内のプレースホルダーとして
例
: # 何もしない
else
true # このように何もしないことを表すこともできます
fi
ここではtrueが空操作の代替として使用され、コード構造がより明確になります。
false コマンドとの比較
Linux には対応するfalseコマンドもあり、これは常に失敗(終了ステータスコード 1)を返します。以下の表にそれらの違いを示します:
| コマンド | 機能 | 終了ステータスコード | 典型的な用途 |
|---|---|---|---|
| true | 何もしないで成功を返す | 0 | 無限ループ、エラーを無視する |
| false | 何もしないで失敗を返す | 1 | エラーハンドリングのテスト、条件分岐 |
実装原理
ほとんどの Linux システムでは、trueは組み込みコマンド(shell builtin)ですが、通常は独立したバイナリ版も存在します:
例
true is a shell builtin
true is /usr/bin/true
true is /bin/true
その実装は非常に単純で、C 言語では次のように表せます:
例
return 0;
}
実践演習
ターミナルで直接実行してみましょうtrueその後、終了ステータスコードを確認します:
例
echo $? # 0 が出力されます
5秒ごとに現在時刻を出力する無限ループスクリプトを作成します:
例
while true; do
date
sleep 5
done
テストtrue条件分岐での動作:
例
echo 「これは常に実行されます」
fi
よくある質問
Q: true コマンドは本当に何もしないのですか?A: はい、実際の操作は何も行わず、成功の終了ステータスを返すだけです。
Q: なぜこのような一見役に立たないコマンドが必要なのでしょうか?A: スクリプトプログラミングでは、常に成功するプレースホルダーや条件が必要な場合があり、trueがまさにそのニーズを満たします。
Q: true とコロン(:)の違いは何ですか?A: ほとんどのシェルでは、:も何もしないコマンドで、動作はtrueと同じです。ただし、:は純粋なシェル組み込みコマンドですが、trueには独立したバイナリ版がある場合があります。
まとめ
trueコマンドは単純ですが、シェルスクリプトプログラミングにおいて実用的なツールです。主な特徴は次のとおりです:
- 常に成功(終了ステータスコード 0)を返す
- 実際の操作を何も行わない
- 無限ループ、エラーハンドリング、コードのプレースホルダーとしてよく使用される
Linux コマンド大全