Вам нужны две функции и таймер. Первая функция выполняется сразу после того, как вы нажмете Enter в командной строке, но до того, как запустится фактическая команда. Вторая функция выполняется после завершения команды, но до отображения подсказки. Таймер просто считает секунды с момента запуска оболочки. В 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
.