外部コマンドではなく、bashで組み込みの「time」コマンドを使用する


12

timeコマンドを使用してtime、外部のGNU timeコマンドではなく、組み込みのコマンドを使用する必要がある状況に遭遇しました/usr/bin/time。だから、どうすればこれを行うことができますか?私はどこかで使用enableおよび/またはcommand役立つだろうを見ましたが、彼らはしませんでした。

これはユースケースです:

watch "time ls"

外部/usr/bin/timeコマンドを使用しますが、これは望ましくありません!これは、端末で次のようtimeに実行するときに内部bash関数を呼び出すと発生しますtime ls

$ time ls

正反対の要求はここで回答されていることに注意してください。

2つのコマンドには多くの違いがあります。内部timeはより正確ですが(必要な場合)、外部コマンドにはより多くのオプションがあります(必要ありません)。


watch 'bash -c "builtin time ls"'たぶん?
グレンジャックマン

1
参照ここで組み込みコマンドを使用するためにはbashを強制する方法については、ペトルUtzlによってANSWER2を参照してください:builtin timeトリックを行う必要があります。
フィクシマン

2
@Fiximanが、time中に組み込みではありませんbashあなたは、時間のパイプライン(のようなことができますので、それは言語の予約語ですtime foo | bar)または化合物のコマンド(のようなtime for i in...;done
ステファンChazelas

回答:


13

デフォルトでwatchは、コマンドを実行する/bin/sh -c '...'ので、表示される出力/bin/shtimeコマンドの解釈方法です。/bin/shどうやらあなたは組み込みがありませんtime

別のシェルでコマンドを実行するに-xは、デフォルトを削除するオプションを使用してから、組み込みが必要なシェルの明示的な呼び出しを追加します。

watch -x bash -c 'time ls'
watch -x zsh -c 'time ls'

実行方法に関係watchなく、監視しているコマンドはコマンドを実行したシェルの子ではないwatchため、シェルの設定は直接関係しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.