Wie bekomme ich die letzten N Befehle aus dem Verlauf?

37

Ich möchte sehen, was die letzten N Befehle in meinem sind history. Ich dachte history | tail -n 5, ich würde es schaffen, aber ich bemerkte, dass ein mehrzeiliger Befehl für so viele Zeilen zählt, wie er hat.

$ echo "hello
how are you"
$ history | tail -2
how are you"
1051  history | tail -2

Meine Frage lautet also: Muss ich die Ausgabe des Befehls analysieren, um dies zu erreichen?

fedorqui
quelle
1
//, Deshalb liebe ich Stackexchange
Nathan Basanese

Antworten:

46

Ich habe es gefunden!

Geschichte [n]

Ein Argument von n listet nur die letzten n Zeilen auf.

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2
fedorqui
quelle
4
Das scheint zu sein tcsh, yashund bash. Möglicherweise möchten Sie die entsprechenden Informationen geben für andere Shells wie zsh, fish, kshund die POSIX Art und Weise.
Stéphane Chazelas
1
Ich würde es gerne tun, obwohl ich keines davon auf meinem Computer installiert habe. Empfehlen Sie eine bestimmte Quelle, um die Informationen zu erhalten? In opengroup sehe ich einen Verweis auf pubs.opengroup.org/onlinepubs/9699919799
fedorqui
6
fc -l -2Funktioniert auch (fügt aber keinen Strom fc -l -2zur Ausgabe hinzu)
Evgeny Vereshchagin
fcÜbrigens zeigt die letzten n Befehle mit -n. Es from n commands until lastwird nur angezeigt n(was nicht sehr sinnvoll ist, da Sie die Gesamtzahl kennen müssen). Auf deutsch würden wir sagen ein kleiner aber feiner unterschied: Ein kleiner aber feiner Unterschied. Vergessen Sie nicht, -lals @EvgenyVereshchagin bereits darauf hinzuweisen, da Sie sonst in einem Editor landen, der nicht das ist, was Sie wollen.
Timo
0

Getestet in OpenBSD 6.3 (PD KSH v5.2.14 99/07 / 13.2).

history [b]

Zeigt den gesamten Verlauf ab einem Eintrag mit einer Nummer an [b]

history [b] [e]

Zeigt das Verlaufsintervall von [b] bis [e] an

CrimsonPermanentAssurer
quelle
0

Sie können auch negative Zahlen verwenden, z.

history -1

Oder verwenden Sie einen Bereich (die letzten 10):

history -1 -11 
robertrv
quelle
Funktioniert bei mir nicht mit bash 5.0.11.
joelostblom
0

Wenn Sie den Verlauf anwenden, wird auch der letzte Verlaufsbefehl angezeigt. Um diese Platzverschwendung zu verhindern, könnte ein solcher Alias ​​nützlich sein:

alias hs=' history 16 | head -n 15'

(der Befehl selbst history 16 | head -n 15)

Ein weiterer nützlicher Verlaufs-Alias:

  alias hsg=' history | grep ' 

(Wenn Strg + R zu klein ist, um eine Auswahl zu treffen)

Das Leerzeichen vor _history führt einen Befehl aus, der nicht in history geschrieben wurde

fc -l # listet auch 16 letzte Befehle (und mehr) auf

Alexey K.
quelle
2
Obwohl dies zutrifft, geht keines davon auf die vorliegende Frage ein.
Jeff Schaller