GNU/Linux >> Linux の 問題 >  >> Linux

Linux で何もしない標準のダミー実行可能ファイルはありますか?

標準ユーティリティ 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

Linux
  1. :明示的に何もしないことを考えると、シェルスクリプトのコマンドの有用性は?

  2. Linux に標準の終了ステータス コードはありますか?

  3. Linuxシェルは、2番目の列に従ってファイルをソートしますか?

  1. (C/C++) Windows と Linux の両方で実行できる実行可能ファイルを生成する方法は?

  2. Linux でシャットダウンを記録するログはありますか?

  3. Bash(Linux シェル)で Ctrl + V が貼り付けられないのはなぜですか?

  1. Linux Bash Shell - 特定の範囲をグロビングするファイル?

  2. % は Linux シェル文字列で何をしますか?

  3. ファイルがそこにあり、PATH にあるにもかかわらず、Linux 実行可能ファイルが File not found で失敗する