Lesen Sie den gesamten Terminalbefehlsverlauf in OS X.

10

Es wäre großartig, auf alle meine Befehle zuzugreifen, die im Terminal unter OS X ausgeführt werden, damit ich sie überprüfen und als laufendes Erinnerungsblatt verwenden kann.

Ich verwende die Reverse-I-Search-Eingabeaufforderung und habe mein .bash_profile aktualisiert, um meinen gesamten Verlauf zu speichern, wie hier unter Mactoids: So durchsuchen Sie den Verlauf des Terminalbefehls .

  1. Starten Sie das Terminal.

  2. Navigieren Sie zum Home-Ordner, indem Sie Folgendes eingeben:

    cd ~/
    
  3. Erstellen Sie .bash_profile, indem Sie Folgendes eingeben:

    touch .bash_profile
    
  4. Bearbeiten Sie nun entweder .bash_profile in Ihrem bevorzugten Texteditor oder geben Sie dies in das Terminalfenster ein, um die Datei automatisch im Standard-TextEdit zu öffnen:

    open -e .bash_profile
    
  5. Zuletzt fügen Sie dies der Datei .bash_profile hinzu:

    HISTFILESIZE=1000000000 HISTSIZE=1000000
    
  6. Speichern und schließen.

Haben Sie Ideen, wie ich darauf zugreifen kann, um den Terminalbefehlsverlauf in OS X auszugeben?

Cameron McGrane
quelle
4
Ich nehme an, Sie haben gelesen man bash, also sollten Sie wissen, dass der Verlauf in der Datei gespeichert ist ~/.bash_history. Was müssen Sie noch wissen, können Sie klarstellen?
Ja, da ich neu war, gab es den Befehl 'man'. Dann las ich das Handbuch, fand die Antwort und beschloss, die obige Frage nur zum Spaß zu stellen. Vielen Dank an fideli für die schnelle, klare und unprätentiöse Antwort.
Cameron McGrane

Antworten:

6

Ihr gesamter Verlauf wird dort gespeichert ~/.bash_history, wo beide reverse-i-searchund die Auf- / Ab-Tasten verwendet werden. Diese Datei wird regelmäßig beschnitten. Wenn Sie jedoch die Anleitung in Ihrem Link befolgt haben, wird die .bash_historyDatei praktisch nie beschnitten.

Fideli
quelle
FIFO- oder LIFO-Schnitt?
Pacerier
@Pacerier, ich kann nicht ganz sicher sein, da ich macOS nicht mehr benutze, aber wenn ich raten müsste, FIFO-Bereinigung.
Fideli
2

Persönlich würde ich es vorziehen, es einfacher zu machen und alles zu drucken , anstatt die letzte Sitzung zu überprüfen, die nicht alle Terminalfenster und alle Befehle abdeckt.

Holen Sie sich eine vollständige Geschichte

cd ~/.bash_sessions
cat *.historynew *.history

Wenn Sie nach Sitzungsdatum sortieren möchten

cd ~/.bash_sessions
cat `ls -tr *.historynew *.history`
Laimison
quelle
1

Für den Fall, dass Sie noch eine Lösung dafür benötigen, habe ich meine hier beschrieben. Auf diese Weise kann ich den Verlauf auf allen Registerkarten SPEICHERN UND ZUGRIFFEN (dh wenn Sie einen Befehl auf einer Registerkarte eingeben, dann eine neue Registerkarte öffnen und nach oben drücken, wird der Befehl vorgeschlagen, den Sie gerade auf der vorherigen Registerkarte eingegeben haben).

Sie benötigen zwei Dinge: 1. Geben Sie diesen Befehl in Ihr Terminal ein, um sicherzustellen, dass histappend aktiviert ist:

shopt -s histappend && shopt histappend

2. Sie müssen auch wissen, wo Ihre Verlaufsbefehle gespeichert sind.

Meine Verlaufsdateien werden in ~ / .bash_sessions gespeichert, sodass mein Code dies widerspiegelt. Wenn Ihre in ~ / .bash_history oder einem anderen Verzeichnis gespeichert sind, tauschen Sie diese einfach gegen ~ / .bash_sessions aus, wenn wir sie in unser bash_profile aufnehmen.

Wenn Sie das herausgefunden haben, öffnen Sie Ihr bash_profile und fügen Sie den folgenden Code hinzu:

source ~/.bash_sessions/*.history        #<--sources prev sessions through your bash_profile. If you don't use ~/.bash_sessions to store your history, replace it with whatever you use (i.e. source ~/.bash_history/*.history

export HISTCONTROL=ignoredups:erasedups #<-- auto-erases duplicates in your history
export HISTSIZE=1000                    #<-- assigns # of results to return
export HISTFILESIZE=100000              #<-- assigns # of results to store in your .bash_history
shopt -s histappend                     #<-- appends & saves history throughout all tabs

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"  <--appends history from all tabs, clears & uses appended history file as current  
Sharpharp
quelle
1
source ~/.bash_sessions/*.history
Beachten Sie,