$ \time --version
time (GNU Time) UNKNOWN
Copyright (C) 2018 Free Software Foundation, Inc.
...
$ /bin/true --version
true (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
...
$ \true --version
$ echo 'nothing was printed on the previous line'
私はUbuntu 22.04、GNU bash、バージョン5.1.16(zsh 5.9でもテスト済み)を使用しています。
答え1
大きな打撃を受けた状態でtime
キーワードです(参照type time
)\time
そう解釈されません。\time
あなたの場合は、Bashに外部の実行可能ファイルを実行させるGNU time
。
ただし、true
これは組み込まれています(参考資料を参照type true
)。バックスラッシュを使用してtime
キーワード(またはtryなどのキーワード)を抑制できるという事実は、\if
バックスラッシュを使用して組み込み関数を抑制できると誤解する可能性があります。いいえ、\true
GNU以外の組み込み機能を実行し続けますtrue
。これは非常に明白です。外部実行ファイルではなく組み込みファイルを\:
実行します。:
:
おそらくオペレーティングシステムには存在しません(比較type -a :
またはtype -a true
試みenv :
)。
help true
組み込み機能が説明されていますが、オプションは言及されていません。
true
どのような措置を講じるべきかをどのように決定しますか?
組み込み関数は、それが何であれ、すべてのコマンドライン引数を無視するようです。 GNUは、true
引数が1つだけであり、その引数がor--help
でない限り、すべてのコマンドライン引数を無視します--version
。
Zshでは、物語は基本的に同じです。