Gibt es eine Möglichkeit, nur den Verlauf der aktuellen Sitzung zu überprüfen?

10

Ich wollte wissen, ob es einen Befehl oder eine andere Möglichkeit gibt, meinen Befehlsverlauf nur in der aktuellen Sitzung zu überprüfen.

Andrew
quelle

Antworten:

12

Die historyintegrierte Funktion bashermöglicht die Angabe von Dateinamen bei Verwendung mit -anrwFlags und die -aBeschreibung von Flags aus help historyStatus:

Hängen Sie Verlaufszeilen dieser Sitzung an die Verlaufsdatei an

Deshalb können wir tun:

~$ history -a this_session.history
~$ cat ./this_session.history 
history mysession.history 
cat mysession.history 
clear
history -a this_session.history

Für den Datensatz -wschreibt (Schreibverlauf in Dateioption) den gesamten Verlauf in die angegebene Datei, daher ist -a(Anhängen) hier die bevorzugte Wahl.


Es gibt andere manuelle Möglichkeiten. Insbesondere kshgibt es kein -aFlag wie bashdas, aber was ksh und mkshwas ist, ist eine HISTFILEUmgebungsvariable (und bashhat das auch, weil bashes viele kshFunktionen enthält); Übrigens ist diese Variable standardmäßig nicht festgelegt (zumindest mkshunter Ubuntu nicht). Um die aktuelle Sitzung in eine andere Datei HISTFILEauszugeben , rufen wir den Befehl prepended to auf, was in der Shell-Syntax bedeutet, dass der Befehl mit einer zusätzlichen Umgebungsvariablen ausgeführt wird, die Sie angeben. Wie so:

bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$ 
bash-4.4$ cat ./mykshfile.hist 
�echo 'Hello'
echo 'World'

Was Sie auch daran sehen können, ist, dass kshund die zugehörigen Shells den Verlauf mit Sonderzeichen anstelle von einfachem Text ausgeben bash. Vielleicht möchten Sie diese Datei mit öffnen ksh.

So weit wie der POSIX - /bin/sh Shell auf Ubuntu , die Debian Almquist Shell oder Dash ist, gibt es fcintegrierte in . Doch auf Ubuntu Strich ohne lib-edit zusammengestellt , die von Ubuntu - Entwickler aus Performance - Gründen eine bewusste Entscheidung ist, so fcund andere Modi , die Zeilenbearbeitung erfordern nicht funktionieren aus der Box (es sei denn recompile dashSie sich und installieren lib-edit).


Shell-neutrale Möglichkeiten wären, Ihre Sitzung mit vorhandenen Tools aufzuzeichnen oder Ihre eigene Funktion zu schreiben , um sie auf Befehlsbasis aufzuzeichnen.

Sergiy Kolodyazhnyy
quelle