bashとzshで "time"キーワード(組み込み関数を使用)を使用すると、どのコードが機能しますか?

bashとzshで

Bashでは通常、いくつかのtime cmdタイプに対して次のことを行います。cmd

$ time true
real    0m0.000s
user    0m0.000s
sys     0m0.000s

出力形式を変更できます(time -pを使用してposix形式でも可能です)。

$ TIMEFORMAT='real %R'; time true
real 0.000

ただし、zshは単純なコマンドの時間を報告しません(try time echo)。

% time true

コマンドをパイプに変換すると、他の内容が報告されます。

$ zsh -c 'time echo yes | cat'
yes
echo yes  0.00s user 0.00s system 26% cpu 0.001 total
cat  0.00s user 0.00s system 85% cpu 0.002 total

シェルがサブシェルを介して時間出力を提供するように強制できます(…)

$ zsh -c 'time ( true )'
( true; )  0.00s user 0.00s system 26% cpu 0.005 total

ただし、これは機能せず、次の{…}組み込み関数でも機能しませんfor

$ zsh -c 'time { for i in $(seq 100); do ls; done >/dev/null; }'

zshはどのようにサブシェルなしで簡単なコマンドを受け入れることができますか?

またはより簡単な質問:

timeキーワードを使用してksh、bash、zshで実行されるコードを書く方法はありますか?

ベストアンサー1

time命令の時間が決まっていません。 ~からシングル Unix 仕様理由:

用語便利代わりに使用注文する、シェル複合コマンド、パイプ、特殊な組み込みコマンドなどが直接使用できないことを強調します。

これステンレス鋼time結果も指摘された。特別な組み込みコマンドは定義されておらず、その結果は以下を除いて使用されます。簡単なコマンド(つまり、パイプまたはコマンドのグループ化で)指定されていません。

これtimeだからだいいえ特別なシェル構文は必要なく、組み込みコマンドも必要ありません。初めて標準化されたときにたくさん変わったのか、今でもたくさん変わりました。

  • Almquist および (Heirloom) Bourne シェルでは、timeこれは予約語でも組み込みコマンドでもありません。外部コマンドなので、他のコマンドには適用できません。簡単なコマンドtimeBSDの外部コマンドは、wait4()ライブラリ関数によってカーネルから返されたプロセス使用量情報を使用します。シェル組み込みコマンドとパイプの時間を測定するには、時間を測定するプログラムがシェルである必要があります。したがって、time bindkey実行するユーティリティを見つけることができないものとtime echoタスクタイミングなど外部 echoシェルに組み込まれていないコマンド。
  • Cシェルには、time次のようには適用できない組み込みコマンドがあります。簡単なコマンド。待たなければならない子プロセスは、必要なtimeライブラリ関数の結果を確認して機能します。wait4()だからCシェルはtime 常に子プロセスを分岐します。、他の組み込みコマンドの場合も同様です。これは、time bindkey -v子プロセスで実行された結果であるため、役に立たないことがわかりますtime
  • Korn および Bourne Again シェルからtimeパイプに適用できるシェル構文の予約語です。これらのシェルは、ライブラリ関数から返されたサブプロセス使用情報を使用せず、代わりにwait4()コマンド呼び出しをその呼び出しと一緒に角括弧で囲んだ後、getrusage()それを減算して時間を計算します。
  • Zシェルがtimeパイプに適用できるシェル構文の予約語。 Zシェルはライブラリ関数によってカーネルから返されたプロセス使用情報を使用しますwait4()が、組み込みコマンドを強制的に分岐しません。だから何も報告しません。子プロセスが分岐していない場合(組み込みコマンドの場合と同様)実際に何かを達成するのtrueと同じです。time set -o vi

基本原則に規定されているように、シングル Unix 仕様他のすべての動作を可能にするために緩く表現されています。これは、タイミングシェルの組み込みに問題があることを示します。

おすすめ記事