it-swarm.com.de

Ich möchte ein Protokoll aller im Terminal eingegebenen Befehle erstellen

Ich hätte gerne ein Protokoll aller Befehle, die am Terminal eingegeben wurden.

Ich habe "script" überprüft, aber dies generiert eine Datei mit den Befehlen und antwortet alle zusammen. Gibt es eine Möglichkeit, nur die Befehle zu haben?

5
Siedrix

Wenn Sie die Standard-Shells verwenden, werden alle Befehle bereits in $ HOME/.bash_history protokolliert. Es gibt mehrere Umgebungsvariablen, die sich auf die Protokollierung auswirken. Lesen Sie dazu Folgendes:

info bash
Type: / HIST

Wenn Sie die Einstellung auf alle Benutzer anwenden möchten, bearbeiten Sie/etc/profile.

Beispiel:

export HISTFILESIZE=5000
6
João Pinto

Alles, was ein Benutzer von Hand in das Terminal eingibt, wird in ~/.bash_history Gespeichert, wobei ~ Die Abkürzung für das aktuell im Benutzerverzeichnis angemeldete Benutzerverzeichnis ist. Beachten Sie auch, dass Dateien, die mit einem . Beginnen, ausgeblendet sind. In Nautilus kannst du sie durch Schlagen zeigen Ctrl+H.

Schauen Sie sich das an, indem Sie etwas eingeben

cat .bash_history

Geben Sie zum Anzeigen Ihres Verlaufs, der mit fortlaufenden Nummern versehen ist, Folgendes ein

history

Sie können Befehle, die Sie dort sehen, erneut ausführen, indem Sie beispielsweise !2129 Eingeben, wodurch der Befehl Nummer 2129 ausgeführt wird, der durch den Befehl history angezeigt wird.

Beachten Sie, dass der Befehl history Sie bis zu den zweiten Protokollen anzeigt, wobei .bash_history Erst gespeichert wird, nachdem Sie sich vom Terminal abgemeldet haben.

Kleine interessante Information:

  • Befehle, die mit einem Leerzeichen beginnen, werden nicht in .bash_history Gespeichert. Wenn Sie einen Befehl wie rm -R mydir/ Ausführen, möchten Sie ihm möglicherweise ein Leerzeichen voranstellen, um zu verhindern, dass er versehentlich erneut ausgeführt wird, indem Sie den Aufwärtspfeil drücken.

Wie Joāo sagt, kann die Größe des gespeicherten Verlaufs mit export HISTFILESIZE=5000 Gesteuert werden.

6
Stefano Palazzo

Wenn Sie alle Befehle protokollieren möchten, die Sie in einer interaktiven Shell ausführen, lesen Sie BashFAQ 88 - Wie kann ich vermeiden, dass Verlaufszeilen verloren gehen?

0
geirha

Sie können auch verwenden CTRL+R im Terminal, um Ihren Verlauf zu durchsuchen.

  1. CTRL+R
  2. geben Sie Suchbegriffe ein (z. B. "Sudo apt-get").
  3. drücken Sie CTRL+R durch jedes Spiel zu radeln
0
user244368

Ich habe dazu eine Funktion geschrieben:

function begin_install_log() {
if [ $# -eq 0 ]
then
    echo "No arguments supplied"
    HIST_NUM=""
else
    HIST_NUM=$(history|tail -n 1|awk '{ print $1  }')
    HIST_NUM=$((HIST_NUM + 2))
    OUTPUT_FILE=$HOME/environment/ansible/.install_cache/${1}
fi
}
function capture_install_log() {
if [ ! $HIST_NUM ]
then
    echo "run 'begin_install_log' first"
else
    history|grep -A999 $HIST_NUM|awk '{$1=""; print $0}' >> $OUTPUT_FILE
    HIST_NUM=""
fi

Verwendung:

$ begin_install_log some_file_name
$ blah
$ blah
$ blah
$ capture_install_log

Natürlich müssen Sie die Variable OUTPUT_FILE an Ihre Bedürfnisse anpassen.

Prost!

0
nargetdev