Anzeigen des Befehlsverlaufs im Terminal

75

Gibt es eine Möglichkeit, alle meine eingegebenen Terminalbefehle zu speichern und sie wie einen Verlauf in einem Logbuch anzuzeigen?

rgr
quelle

Antworten:

92

Dies erfolgt automatisch. Bash speichert Ihre Befehle in ~/.bash_history. Wenn Sie sich den Verlauf ansehen möchten, drucken Sie die Ausgabe dieser Datei entweder mit einer der folgenden Methoden aus

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

Oder Sie können bashs eingebauten Befehl verwenden:

history

Um den Verlauf zu löschen, löschen Sie die Datei und den temporären Verlauf:

rm ~/.bash_history && history -c

Die Verlaufsgröße beträgt standardmäßig 500 Befehle. Sie können dies jedoch erhöhen, indem Sie Ihrer ~/.bashrcDatei eine Zeile hinzufügen , um die HISTSIZEVariable festzulegen:

HISTSIZE=<number of entries, -1 for unlimited>

Dies wird nicht sofort wirksam, sondern nur für neu gestartete Sitzungen. Um dies anzuwenden, geben Sie die .bashrcDatei erneut ein:

. ~/.bashrc

oder laufen Sie HISTSIZE=...in Ihrer aktuellen Sitzung.

s3lph
quelle
1
Standardmäßig werden jedoch nur die letzten 500 Befehle gespeichert. Sie können die zu speichernde Nummer ändern, müssen sie jedoch nur einmal versehentlich mit den Standardeinstellungen starten, und der gesamte ältere Verlauf wird gelöscht.
Kasperd
Dies funktioniert nicht für mich auf Ubuntu 16
Nam G VU
31

Sie können historyauf einem Terminal eingeben, um alle zuvor ausgeführten Befehle anzuzeigen.


Sie können die Ausgabe auf einige Zeilen kürzen (wobei 5 die Anzahl der Zeilen ist):

history 5

Wenn Sie nur Befehle anzeigen möchten, die eine Zeichenfolge enthalten (z. B. mv), können Sie dies tun:

history | grep mv

Sie können einen Befehl aufrufen, indem Sie !gefolgt von der Eintragsnummer eingeben .

Nehmen wir an, ich habe eine Geschichte wie diese:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • Zum Ausführen mkdir fookönnen Sie Folgendes eingeben !2.
  • Um den letzten Befehl auszuführen, können Sie !-1oder verwenden!!
  • Um das vorletzte Mal auszuführen, können Sie verwenden !-2

Wenn Sie einen Befehl ausführen, der fehlschlägt, weil er Root-Berechtigungen benötigt (z. B. touch /etc/foo), können Sie sudo !!den letzten Befehl als Root ausführen.


  • Wenn Sie eingeben, führen !manSie den letzten Befehl aus, der mit beginntman
  • Wenn Sie eingeben, !?man?wird der letzte Befehl ausgeführt, der enthält man(nicht unbedingt am Zeilenanfang)

Wenn Sie einen Tippfehler in einem Befehl haben, können Sie diesen auf diese Weise beheben. Angenommen, ich tippe cat .bash_hi, um .bash_hidurch zu ersetzen, muss .bash_historyich nur tippen ^hi^history^.


Quelle: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps

Helio
quelle
2
Sie können auch Strg-R drücken, um während der Eingabe eine Suche im Hostory durchzuführen.
Mhmd
historyarbeite für mich auf Ubuntu 16. Danke und sollte der Akzeptierte sein!
Nam G VU
9

Tipp einfach :

history > print.txt

Eine neue Datei mit dem Namen print.txt wird in Ihrem aktuellen Arbeitsverzeichnis erstellt.

Bilal
quelle
3
Schaltet die Befehle nach 1000 aus
Antoine
3

Ich möchte oft auch nur die letzten Befehle. Zu meinen Entwicklungsnotizen oder Stack-Exchange-Sites wie diesen zu posten ... Dies hat sich als sehr nützlich erwiesen und irrelevante Zeilennummern entfernt:

history | cut -c 8- | tail

oder, wenn Sie es als Alias ​​mögen, Zeilennummern werden entfernt und sofort eingerückt (genau wie für die Code-Anführungszeichen-Markierung benötigt)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"
Frank Nocke
quelle
1
Einfacher zu bedienen fc: askubuntu.com/a/839642/158442
muru
0

Möglicherweise möchten Sie https://github.com/dvorka/hstr ausprobieren, um das Durchsuchen , Navigieren und Filtern Ihres Bash-Verlaufs im Stil eines Postfachs zu vereinfachen:

Bildbeschreibung hier eingeben

Es kann leicht sein gebunden an Ctrl-rund / oderCtrl-s

Martin Dvorak
quelle