標準ユーティリティ true
があります と false
. 1 つ目は実行が成功した場合に終了ステータス 0 を返すだけであり、2 つ目は何もせず、失敗した結果を示すゼロ以外の値を返します。おそらく最初のものが必要です。
いくつかのテキスト (コミット メッセージなど) を入力することを本当に必要とする一部のシステムでは、「編集された」ファイルが実際に変更されたかどうかを確認し、true
を実行するだけです。 その場合は飛びません。代わりに、touch
うまくいくかもしれません。引数として取得したファイルのタイムスタンプを更新します。
ただし、エディターがファイル名 touch
以外の引数を取得した場合 それらをファイルとして作成します。多くのエディタは +NNN
のような引数をサポートしています 最初の行にカーソルを置くように指示するため、エディターは $EDITOR +123 filename.txt
として呼び出される場合があります . (例:less
これを行います、git
ないようです。)
true
を使用することに注意してください 、例ではありません。 /bin/true
.まず、シェルが関係している場合、パスなしでコマンドを指定すると、シェルは組み込み実装を使用できます。シェルが使用されていない場合、バイナリ ファイルは PATH
にあります。 とりあえず。次に、すべてのシステムに /bin/true
があるわけではありません;例えばmacOS では /usr/bin/true
です . (ありがとう @jpaugh.)
(* または、GNU の man ページにあるように、false "[does] 何もせず、失敗しました"。@8bittree に感謝します。)
シェルでは、組み込みの :
を使用できます .これは実行可能ファイルではありませんが、シェル スクリプトまたはシェル スクリプトから実行されるものであれば、次のようになります。
$ 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
true
の使用に関する @ilkkachu の提案 コマンドはおそらく最良の答えですが、コマンドを使用することもできます
sleep 0