/bin/true

/bin/true

Linuxで何もしない標準の仮想実行ファイルはありますか?パラメータを手動で入力するために、ビルドプロセスの前に常に$ EDITORを開くシェルコマンドがあります。私の場合、パラメータは常に設定されている(自動化されたスクリプトです)、まったく必要ありませんが、まだポップアップが表示され、ユーザー入力を待ちます。

この問題を解決するために何もしない空の実行可能ファイルを作成したので、設定してEDITOR=dummyビルドスクリプトがそれを呼び出すと終了し、ビルドプロセスが開始される可能性があります。

私の質問は、実行時に何もしないLinux上の既存の公式文書、つまりこの目的に使用できるプレースホルダーですか?

答え1

true標準ユーティリティがあり、false最初のユーティリティは何もしません。正常な実行を示すために終了ステータス 0 を返します。、2番目は何もせず、失敗した結果を表すゼロ以外の値を返します(*)。あなたはおそらく最初のものが欲しいでしょう。

一部のテキスト(コミットメッセージなど)を入力する必要があるシステムによっては、「編集済み」ファイルが実際に変更されたことを確認しますが、trueこの場合は実行だけでは機能しません。逆にtouch動作することもできます。パラメータで取得したすべてのファイルのタイムスタンプを更新する

ただし、エディタがファイル名以外のパラメータを取得すると、そのtouchパラメータはファイルとして生成されます。多くのエディタでは、最初の行にカーソルを置いてエディタを呼び出すことができるパラメータをサポートしています。 (例えば、そうではないようです。)+NNN$EDITOR +123 filename.txtlessgit


trueたとえば、を使用する必要があります/bin/true。まず、シェルが含まれている場合は、パスなしでコマンドを指定すると、シェルは組み込みの実装を使用できます。そうでない場合、バイナリはとにかく見つかりますPATH。第二に、すべてのシステムがあるわけではありません/bin/true。たとえば、macOSでは/usr/bin/true

(*または以下のようにGNU のマニュアルページには次の内容が記載されています。、false「何もしない、失敗する」。 @8bittree ありがとうございます。 )

答え2

シェルでは組み込みを使用できます:。実行可能ファイルではありませんが、シェルスクリプトまたはシェルスクリプトで実行されているすべての項目では、次の操作を行います。

$ help :
:: :
    Null command.
     
    No effect; the command does nothing.
     
    Exit Status:
    Always succeeds.

これはwhileステートメント()に使用することが最もよく知られていますが、while :; do break; doneこの用途に限定されません。これを複数回実行する必要がある場合は、別のプロセスを開始しない方が速いです。

$ time for i in $(seq 1000); do :; done

real    0m0,007s
user    0m0,002s
sys     0m0,004s
$ time for i in $(seq 1000); do /bin/true; done

real    0m0,686s
user    0m0,462s
sys     0m0,217s

答え3

コマンドの使用に関する@ilkkachuの提案はtrueおそらく最善の答えです。ただし、コマンドを使用することもできます

sleep 0

答え4

/bin/true

trueいずれの操作も正常に実行されませんでした。

false何もしようとしましたが失敗しました。

/bin/trueこれはおよびで実装されています/bin/false

しかし、時には何もしない方が良い時もあるので、内蔵シェルもありますtrue。時には何もせずに素早く失敗したいときがあるので、内蔵シェルがありますfalse

成功と失敗の違いは終了状態です$?。これは0失敗ではなく成功に関するものです。終了ステータスは単に失敗を示すために使用されますが、何が間違っているかを詳細に説明する1エラーコードかもしれません。254

$ true
$ echo $?
0
$ false
$ echo $?
1
$ false
$ echo $?
1
$ echo $?
0

前の項目が成功したため、最後の項目がどのようにecho返されるかを確認してください。0echo

&&終了ステータスは、「and」()や「or」(||)などの論理演算子と共に使用されます。

$ true && echo "success"
success
$ false && echo "failure"
$ true || echo "success"
$ false || echo "failure"
failure

その後はfalse && echo "failure"何もtrue || echo "success"印刷されません。

関連情報