Kennt jemand ein Mittel, um vor jedem Befehl in einer Bash-Sitzung einen Zeitbefehl zu setzen?
Kennt jemand ein Mittel, um vor jedem Befehl in einer Bash-Sitzung einen Zeitbefehl zu setzen?
Antworten:
Entschuldigen Sie die falsche Antwort, ich habe Ihre Frage missverstanden.
Um die Zeit vor jedem Befehl hinzuzufügen, den Sie auf der Shell ausführen, können Sie so etwas tun
bind 'RETURN: "\e[1~time \e[4~\n"'
Dadurch wird die Eingabetaste erneut gebunden. Jetzt wird jedes Mal, wenn Sie die Eingabetaste drücken, anstatt eine neue Zeile zu schreiben, an den Anfang der Zeile gesprungen. Geben Sie den Text 'time' und ein Leerzeichen ein, gehen Sie zum Ende der Zeile und geben Sie die neue Zeile ein, um die gewünschte Zeile zu erstellen bewirken.
Wenn Sie Ihre Eingabetaste nicht opfern möchten, können Sie eine zweite Benchmark-Eingabetaste wie F12 erstellen, indem Sie den Befehl wie folgt binden
bind '"\e[24~": "\e[1~time \e[4~\n"'
Anstatt jetzt die Eingabetaste zu ersetzen, haben Sie F12 gebunden.
Der Hintergrund all dessen ist, dass bash GNU readline verwendet, um Befehle zu lesen. Readline wäre also ein guter Ausgangspunkt für weitere Befehlsmanipulationen usw.
Mir ist klar, dass dies außerhalb des Rahmens dieser Frage liegt, aber ...
In zsh
(was meines Wissens eine super Menge von Bash ist), wenn Sie die folgende Variable in Ihrer .zshrc
Datei festlegen :
export REPORTTIME=5
Jeder Befehl, der länger als 5 Sekunden dauert (da bin ich mir ziemlich sicher), zeigt die Ausgabe von an time
. Alle Befehle, die schneller ausgeführt werden, werden nicht ausgeführt. Und in solchen Fällen ist es einem eigentlich egal, also ist es schön, die Dinge nicht unübersichtlich zu machen. Es gibt auch viele andere coole Funktionen zsh
, die Sie vielleicht genießen werden, wenn Sie gerade dabei sind.
Fügen Sie \ t in Ihre Eingabeaufforderungszeichenfolge ein. Die Uhrzeit wird an der Stelle, an der Sie sie eingeben, in Ihre Eingabeaufforderung aufgenommen. Siehe: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/
PS1 scheint der Standard zu sein, um so etwas zu tun.
time
tut (es misst, wie lange es gedauert hat, bis ein Befehl ausgeführt wurde).