web-dev-qa-db-ja.com

コマンド実行時にプロンプ​​トをスタンプする方法は?

コマンドの開始時にプロンプ​​トにタイムスタンプを追加するにはどうすればよいですか? 静的プロンプト連続クロック の中間の解決策を探しています。

主な違いは静的プロンプトであり、プロンプトがロードされた時刻が表示されます。数分間そのままにしてからコマンドを入力すると、別のタイムスタンプを追加する必要があります。私の目標は、コマンドの実行にかかる時間差と、プロンプトがアイドル状態になっている時間を簡単に確認できるようにすることです。 bashを使用したいという事実は別として、連続クロックの回答の問題は、全体を更新するため、開始タイムスタンプが失われることです。

たとえば、新しいシェルを開くと、プロンプトは次のようになります。

10:30:21 jeff ~ $

次に、実際にコマンドの入力を終了してヒットする前に、1分間そこにとどまっているとしましょう。 Enter

10:30:21 jeff ~ 10:31:28 $ ./long_running.sh
10:36:52 jeff ~ $

実際にコマンドを実行した時期を示す別のタイムスタンプが追加されていることに注意してください。また、次のプロンプトの開始タイムスタンプから減算すると、コマンドの実行に約5分かかったことが簡単にわかります。

4
Jeff Puckett

すべてのコマンドが実行される前に呼び出すことができるDEBUGトラップがあります

例えば

trap 'echo -e "\nStarted at: $(date)\n"' DEBUG

だから私がそれをするなら:

$ trap 'echo -e "\nStarted at: $(date)\n"' DEBUG
$ pwd

Started at: Thu Aug 18 11:59:33 EDT 2016

/home/sweh
$ echo hello

Started at: Thu Aug 18 11:59:35 EDT 2016

hello
$ sleep 100

Started at: Thu Aug 18 11:59:37 EDT 2016

プロンプトを書き直すわけではありませんが、すべてのコマンドの前に出力するように作成する方法を確認できます。トラップ機能は必要に応じて複雑にすることができます。

4
Stephen Harris

bash_command_timer.sh by jichu4nをチェックしてください。

https://github.com/jichu4n/bash-command-timer/

自分の.bashrcを変更して、完全な日付を含めました。

# https://github.com/jichu4n/bash-command-timer
. bin/bash_command_timer.sh
export BCT_TIME_FORMAT='%Y-%m-%d %H:%M:%S'

出力:

$ echo 1; echo 2; echo 3
1
2
3
[ 0s031 | 2017-09-18 17:30:29 ]

彼のREADMEによると:

スクリプトがどのように機能するかの説明については、私のブログ投稿をチェックしてください:BashのDEBUGトラップとPrompt_COMMAND。

2
Josh Hansen