少し前からTLの影響でXonsh使ってます。
以前のシェルで「実行したコマンドの実行時間」を表示させてたことがあったのですが、Xonshでもやりたくなったので、超雑に作ってみました。
event_handlers.xsh
@events.on_postcommand
def _print_proc_time(
cmd: str, rtn: int, out: str or None, ts: list) -> None:
"""Print time process after running command
"""
dt_ = ts[1] - ts[0]
print(f"{dt_:.2f} secs")
Xonshには結構なイベント用デコレータが存在しており、on_postcommand
イベント を使えばコマンド実行後に処理を追加できそうです。
しかも、引数にある通りts
という処理開始前後のタイムスタンプを持つリストを渡してくれるので、何も考えずにそのまま使うのが一番楽そう。
組み込むとこんな感じで、プロンプト表示の手前に「何秒かかったか」が出るようになります。