Odpowiedzi:
Nie sądzę, że można osiągnąć dokładnie ten sam efekt bez modyfikacji źródła bash. Ale możesz się zbliżyć, mam nadzieję, że wystarczająco blisko ciebie.
Możesz połączyć haczykowaty haczyk bash ze SECONDS
zmienną, aby wyświetlać czas zegara ściennego w nieinwazyjny sposób. Oto prosta implementacja dzięki Ville Laurikari . Funkcje timer_start
i timer_stop
są wykonywane bezpośrednio przed uruchomieniem polecenia i bezpośrednio przed wyświetleniem następnego monitu.
function timer_start {
timer=${timer:-$SECONDS}
}
function timer_stop {
timer_show=$(($SECONDS - $timer))
unset timer
}
trap 'timer_start' DEBUG
PROMPT_COMMAND=timer_stop
PS1='[last: ${timer_show}s][\w]$ '
Aby uzyskać pełne time
informacje o każdym poleceniu, oto sposób, dzięki Dennisowi Williamsonowi :
bind '"\C-j": "\C-atime {\C-e;}\C-m"'
Gdy naciśniesz Ctrl+ Jzamiast, Enteraby uruchomić polecenie, otrzymasz informacje o czasie. Ponowne wiązanie Enter(tj. Ctrl+ M) Nie jest zalecane, ponieważ zmodyfikowane polecenie jest czasami niepoprawne pod względem składniowym.
Zobacz Jak można ustawić czas ostatniej komendy na ścianie w wierszu polecenia Bash? i automatycznie mierzy czas każdego wykonanego polecenia i pokazu w monicie Bash? w przypadku przepełnienia stosu dla innych metod (należy jednak pamiętać, że większość z nich podaje tylko upływ czasu rzeczywistego, a nie procesora).