Wie kann ich die Datei `.bash_history` über die Befehlszeile anzeigen?

72

Ich möchte den Inhalt meiner .bash_historyDatei anzeigen, weiß aber nicht, wie ich über die Befehlszeile dorthin komme.

isupportopensource
quelle
7
Wie wäre es mithistory | less
MadMike
2
Hast du nachgesehen /home/username/.bash_history ?
Mitch
2
NB: .bash_historyWird nur angehängt, wenn ein Terminal geschlossen ist.
Nicolas VERHELST

Antworten:

56

Wenn Sie die tatsächliche Datei selbst zugreifen möchten, benutzen Sie einfach Ihre bevorzugten Texteditor (ich benutze emacsaber Sie verwenden können , plumavon geditoder vimoder was auch immer):

emacs ~/.bash_history

Dies ist der Standardspeicherort für Ihre Verlaufsdatei. Wenn Sie dort nichts finden, haben Sie möglicherweise den Namen der Verlaufsdatei geändert. Dies ist in der $HISTFILEVariablen gespeichert , drucken Sie es also aus, um den aktuellen Wert zu überprüfen:

echo $HISTFILE

Wenn Sie anstelle der Datei nur Ihren Verlauf historyanzeigen möchten, können Sie sie wie in @ minerz029 vorgeschlagen ausführen. Der historyBefehl ohne Optionen gibt nur den Inhalt von your aus, $HISTFILEgefolgt von den in der aktuellen Shell ausgeführten Befehlen, die noch nicht in diese Datei geschrieben wurden, mit Zeilennummern.

terdon
quelle
49

Wenn Sie tatsächlich benötigen die Ausgabe der .bash_historyDatei, ersetzen historymit
cat ~/.bash_historyin alle unten stehenden Befehle.

Wenn Sie die Befehle tatsächlich ohne vorangestellte Zahlen haben möchten, verwenden Sie diesen Befehl anstelle von history:

history | cut -d' ' -f 4-

Andernfalls gibt es keinen Unterschied (außer wenn Sie eine andere Shell verwenden).


Letzte 15 Befehle

Sie können verwenden

history | tail -n 15

um nur die letzten 15 Zeilen Ihres Verlaufs mit dem zuletzt ausgeführten Ausdruck (unten) abzurufen.


Befehl suchen

Alternativ verwenden Sie

history | grep "apt-get" | tail -n 15

um die letzten 15 Befehle zu erhalten, die apt-getden zuletzt ausgeführten Ausdruck (unten) enthielten . Sie können durch apt-getjeden Befehl (oder jedes Befehlsargument) ersetzen, nach dem Sie suchen möchten (es kann ein regulärer Ausdruck sein).


Durch die Geschichte scrollen

Sie können verwenden

history | tac | less

um durch alle ausgeführten Befehle zu scrollen, beginnend mit dem letzten oben. Drücken Sie, qum das Menü zu verlassen.

Ebenso verwenden

history | grep "apt-get" | tac | less

um durch alle Befehle zu scrollen, die mit " apt-get" in ihnen ausgeführt wurden (einschließlich Argumenten), beginnend mit dem letzten oben. Drücken Sie, qum das Menü zu verlassen.

kiri
quelle
15

Zusätzlich zur hervorragenden Antwort von minerz029.

Zur Wiederholung: Der Befehl 'history' gibt den Verlauf zusammen mit einer Nummer daneben aus.

Sie können die Ausgabe des Verlaufs in grep, less usw. umleiten.

Die Ausgabe der Historie zeigt auch links neben dem Ausgang eine Zahl an. z.B

  469  free
  470  ps -fA
  471  ps -fA | grep xend
  472  free
  473  sudo vi /etc/xen/xend-config.sxp 
  474  cat /etc/default/grub 

Mit dieser Nummer können Sie den Befehl erneut ausführen.

zB um 473 neu zu starten würde ich in das Terminal tippen

 admin@xen1~$ !473

gefolgt von der Eingabetaste, um den Befehl neben 473 in der Verlaufsausgabe zu wiederholen.

Sie können im Befehlsverlauf auch interaktiv rückwärts suchen, indem Sie ctrl + rTasten eingeben und dann einen Teil des Befehlsinhalts eingeben. Anschließend wird der Befehl gesucht und ausgefüllt. Wenn Sie es gefunden haben, können Sie enter eingeben, um es zu wiederholen, oder die [tab]Taste drücken, um es in die Befehlszeile zu kopieren und den Befehl zuerst zu bearbeiten.

Natürlich funktionieren die letzten beiden Optionen in der Bash-Shell. Ich bin nicht sicher, ob diese Funktionen in anderen Shells funktionieren. Aber da bash die Ubuntu-Standardshell ist, sollten Sie sie dort finden.

Matt H
quelle
1

Bildbeschreibung hier eingeben

Versuchen Sie es mit einem "Feld vorschlagen" -ähnlichen Verlauf: https://github.com/dvorka/hstr. Er liest den Bash-Verlauf und ermöglicht eine schnelle Navigation.

Martin Dvorak
quelle