Linuxで何もしない標準の仮想実行ファイルはありますか?パラメータを手動で入力するために、ビルドプロセスの前に常に$ EDITORを開くシェルコマンドがあります。私の場合、パラメータは常に設定されている(自動化されたスクリプトです)、まったく必要ありませんが、まだポップアップが表示され、ユーザー入力を待ちます。
この問題を解決するために何もしない空の実行可能ファイルを作成したので、設定してEDITOR=dummy
ビルドスクリプトがそれを呼び出すと終了し、ビルドプロセスが開始される可能性があります。
私の質問は、実行時に何もしないLinux上の既存の公式文書、つまりこの目的に使用できるプレースホルダーですか?
答え1
true
標準ユーティリティがあり、false
最初のユーティリティは何もしません。正常な実行を示すために終了ステータス 0 を返します。、2番目は何もせず、失敗した結果を表すゼロ以外の値を返します(*)。あなたはおそらく最初のものが欲しいでしょう。
一部のテキスト(コミットメッセージなど)を入力する必要があるシステムによっては、「編集済み」ファイルが実際に変更されたことを確認しますが、true
この場合は実行だけでは機能しません。逆にtouch
動作することもできます。パラメータで取得したすべてのファイルのタイムスタンプを更新する。
ただし、エディタがファイル名以外のパラメータを取得すると、そのtouch
パラメータはファイルとして生成されます。多くのエディタでは、最初の行にカーソルを置いてエディタを呼び出すことができるパラメータをサポートしています。 (例えば、そうではないようです。)+NNN
$EDITOR +123 filename.txt
less
git
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
返されるかを確認してください。0
echo
&&
終了ステータスは、「and」()や「or」(||
)などの論理演算子と共に使用されます。
$ true && echo "success"
success
$ false && echo "failure"
$ true || echo "success"
$ false || echo "failure"
failure
その後はfalse && echo "failure"
何もtrue || echo "success"
印刷されません。