Wenn Sie die Ausgabe des history
Befehls aus einer aktiven Shell-Sitzung in einem Skript verwenden möchten , können Sie den Befehl zuerst mit einem Alias ausführen. Anschließend können Sie im gleichen Alias den Rest des Skripts aufrufen. Mit einer solchen Konfiguration erzielen Sie im Wesentlichen das gleiche Ergebnis wie mit dem history
Befehl im eigentlichen Skript.
Sie können beispielsweise einen Alias wie diesen erstellen, vorausgesetzt, der Name des Skripts lautet script.sh:
alias hy_tmp='history | tail -100 > /tmp/history.log ; bash /patch/to/script.sh'
Und ändern Sie das Skript folgendermaßen:
#!/bin/bash
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
Ich habe diese Frage gefunden, als ich einen Prozess zum Kombinieren, Sortieren und Synchronisieren von ~/bash_history
Dateien auf zwei Computern geschrieben habe, damit die Suche nach Befehlen, die ich in der Vergangenheit verwendet habe, einfacher wird.
Es ist viel einfacher, meine kumulative Verlaufsdatei zu aktualisieren, ohne sich bei einer neuen Shell anmelden zu müssen, um ~/bash_history
aktualisiert zu werden. Für die Überwachung eines Servers funktioniert dies natürlich nicht, wie in den anderen Antworten erwähnt.
Meine Verwendung ist insbesondere:
alias hbye='history | cut -c 8- > /home/chris/.bash_history_c; bash /hby.sh
Das Skript hby.sh
zieht dann alle eindeutigen Einträge aus allen ~/.bash_history*
Dateien.
histtest.sh: 5: set: Illegal option -o history