Archiv/Howto/Dauer der Befehlsausführung im Terminal automatisch anzeigen

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Achtung!

Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von lionlizard am 22.11.2016 unter Lubuntu 16.04 erfolgreich getestet.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

  2. Einen Editor verwenden

  3. Rechte für Dateien und Ordner ändern

Vorwort

Gelegentlich kommt es vor, dass man im Terminal einen Befehl ausführen lässt, der einige Zeit in Anspruch nimmt. In der Zwischenzeit erledigt man etwas anderes und hat dann das Terminalfenster nicht mehr im Blick. Wenn man wieder ins Terminal zurück wechselt, stellt man fest, dass der Befehl ausgeführt wurde, aber man würde nun gern wissen, wie lange die Ausführung gedauert hat. Dafür gibt es verschiedene Methoden, aber am praktischsten wäre es, wenn man einfach in der Zeile vor dem neuen Prompt die Start- und Endzeit im Terminal angezeigt bekäme.

Wie man dies mit Hilfe eines Skripts bewerkstelligen kann, soll Thema dieses Howtos sein.

Auf Github.com findet sich ein Skript, dass in der Bash zwei Funktionen zur Verfügung stellt.

  1. preexec() - Diese Funktion wird ausgeführt wenn ein Befehl gerade eingelesen wurde und unmittelbar bevor er ausgeführt wird.

  2. precmd() - Diese Funktion wird ausgeführt, bevor der Prompt ausgegeben wird.

Installation

Um das Skript zu installieren, gibt man im Terminal folgenden Befehl ein:

curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh 

Damit wird das Skript im eigenen Home-Verzeichnis mit den erforderlichen Rechten gespeichert.

Nun müssen die Funktionsaufrufe festgelegt werden. Der bash-Befehl date +%T.%N gibt die aktuelle Zeit im Format Minuten:Sekunden.Hundertstel aus. Um die Startzeit eines Befehls zu speichern wird diese in die Variable "start" gespeichert:

preexec() { start=`date +%T.%N`; } 

Um die Start- und Endzeit auf dem Bildschirm auszugeben, wird folgender Funktionsaufruf definiert:

precmd() { echo "Start:=$start"; echo "Ende: =`date +%T.%N`"; } 

Um auf die Funktionen des Skripts in der Bash zugreifen zu können, muss es als Quelle im Bash-Profil festgelegt werden. Am einfachsten fügen wir daher am Ende der Datei ~/.bashrc folgende 3 Zeilen ein:

preexec() { start=`date +%T.%N`; }
precmd() { echo "Start:=$start"; echo "Ende: =`date +%T.%N`"; }
source ~/.bash-preexec.sh

Nach dem Speichern der Datei wird nun bei jedem Aufruf des Terminal die aktuelle Zeit ausgegeben, und nach jedem Befehl die Start- und Endzeit für diesen Befehl