すべてのbashコマンドに関する時間とその他の情報を報告する方法は? [コピー]

すべてのbashコマンドに関する時間とその他の情報を報告する方法は? [コピー]

端末で実行されるほとんどのタスクは計算に時間がかかり、bashに最後に時間レポートを出力させたいと思います。すべてコマンドが端末に入力されます。このためにbashrcに追加できるものはありますか?

例:

$ find / -ls
<find / -ls return info>
start time = 10:21:54 | end time = 10:31:34 | time lapsed = 00:10:20
$

または

$ make all
<make all return info>
start time = 10:21:54 | end time = 10:31:34 | time lapsed = 00:10:20

cdなどのコマンドの例外リストを追加できればと思いますが、あまり気にしません。

ベストアンサー1

私は次のことを試しました.bashrc

echo -ne "$PS1"
while IFS= read -er line;do
    eval "time $line"
    echo -ne "$PS1"
done

これはおおよその目的を果たしますが、いくつかの注意事項があります。

  • プロンプトが実際に破損しています(シェルは通常、\Wプロンプトをエコーする前にプロンプ​​トの同様のシーケンスを解釈します)。
  • コマンドライン編集機能が失われます(例:CTRL+は利用できません)。Lclear
  • 他にもいくつかあります。

私はシェル機能を通してこれを選択的に有効にするのが良い妥協だと思います。

timed_commands() {
    [ "$1" = off ] && exec bash
    PS1='$ '  # Put something simple here
    while IFS= read -erp "$PS1" line;do
        eval "time $line"
    done
}

以下を使用して開閉timed_commandsします。timed_commands off

コメントをいただいた@jthillに感謝-eしますread

おすすめ記事