Wie bekomme ich Befehle vor Zeitstempeln in `history` in Bash?

310
DiiP

Ich habe diese Antwort auf die Zeitstempelgeschichte von Bash gefunden.

Gibt es eine Möglichkeit, die Ausgabe zu permutieren? Im Speziellen

Number command time-stamp 

eher, als

Number time-stamp command 
0

1 Antwort auf die Frage

1
Kamil Maciorowski

Sie können die Ausgabe von historyBuiltin verarbeiten. Bereiten Sie sich zuerst HISTTIMEFORMATauf die Antwort vor, mit der Sie verlinkt haben:

export HISTTIMEFORMAT="%d.%m.%y %T " 

Um die gewünschte Ausgabe zu erhalten, rufen Sie Folgendes auf:

history | awk '{ printf "%s\t",$1; for(i=4; i<=NF; i++) printf "%s",$i OFS; printf "\t%s %s\n",$2,$3 }' 

Wenn Sie historyBuiltin mit einer Funktion überschreiben :

history() { builtin history | awk '{ printf "%s\t",$1; for(i=4; i<=NF; i++) printf "%s",$i OFS; printf "\t%s %s\n",$2,$3 }'; } 

dann reicht es zu schreiben history, um zu bekommen, was Sie wollen.

Hinweis: Führende Leerzeichen und Spaltenformatierungen aus der bloßen historyAusgabe gehen verloren. Da das Befehlsfeld keine feste Länge hat, ist es nicht die beste Idee, es in einer Mitte zu haben. Ich habe die Felder absichtlich mit Tabulatoren (anstelle von Leerzeichen) getrennt, um die Ausgabe lesbarer zu machen. Wenn Sie Leerzeichen bevorzugen, ersetzen Sie sie \tin meinem Code durch (Leerzeichen).