最後のコマンドを開始してから経過した時間を表示する方法はありますか?私はこれを見つけました:PS1プロンプトに経過時間が表示されます。ただし、これは、最後のコマンドが完了してから新しいコマンドが完了するまでに経過した時間を示します。
私の考えは何とかプロンプトに追加することを強制することです。time
今後私が入力するすべてのコマンドは良い方法でフォーマットします。
このような:
$ ls
. ..
Last command took 0.001s
$
答え1
2つの機能とタイマーが必要です。最初の機能は、コマンドラインでEnterを押してから実際のコマンドが開始される前に実行されます。 2 番目の機能は、コマンドの完了後にプロンプトが表示される前に実行されます。タイマーは、シェルが始まってからの秒数を計算します。これら3つのフックを、zsh
と呼びます。precmd
preexec
SECONDS
bash
タイマーの名前が同じ場合、関数は変数にprecmd
なりますが、PROMPT_COMMAND
残念ながらpreexec
関数がないため、直接作成するか(難しいことではありませんが、マイナーではありません)、外部ソースからすでに作成されたフックをインストールする必要があります。はいhttps://github.com/rcaloras/bash-preexec。
今、すべての部分を一緒に貼り付けるだけです。最小限のコードは次のとおりです。
preexec() {
cmd_start="$SECONDS"
}
precmd() {
local cmd_end="$SECONDS"
elapsed=$((cmd_end-cmd_start))
PS1="$elapsed "
}
それにすべてを入れてください.bashrc
。