Ausgeführten Befehl zusammen mit Ausgabe in Protokolldatei anzeigen

Ausgeführten Befehl zusammen mit Ausgabe in Protokolldatei anzeigen

Gibt es eine schnelle und einfache Möglichkeit, nicht nur die Ausgabe einer Shell-Datei, sondern auch die darin verwendeten Befehle zu protokollieren?

Zum Beispiel:

whoami > who.dmp

würde eine Datei ausgeben, die etwa Folgendes enthält:

my_username

Was ist bei einer längeren Shell-Datei die effektivste Möglichkeit, den Befehl, der das Ergebnis verursacht hat, auch in der Protokolldatei anzuzeigen?

Ex:

log.txt
###############

echo whoami  <- I want this to show in the file as well
my_username

time   <- I want this to show in the file as well

real    0m0.00s
user    0m0.00s
sys     0m0.00s

Gibt es eine Möglichkeit, dies zu tun, ohne den Befehl jedes Mal fest in die Ausgabedatei zu exportieren?

Antwort1

Die Verwendung der integrierten Shell set -xist wahrscheinlich die einfachste Möglichkeit, dies zu tun. In Shell-Skripten werden Sie häufig eine Zeile wie diese sehen:

#set -x

Das hat jemand einfach durch Auskommentieren hinterlassen. Ich denke, Sie könnten das in der interaktiven Befehlszeile verwenden, aber Ihnen gefällt vielleicht nicht, was es dort bewirkt.

Antwort2

Sie könnten sich das Tool ansehen script, das die gesamte Terminalsitzung speichert, bis Sie das aufgerufene Programm beenden (standardmäßig wäre das eine Shell). Beispiel-Anwendungsfall:

~/:$ Skript test.ausgabe
Skript gestartet, Ausgabedatei ist test.output
~/:$ mkdir Beispiel
~/:$ cd Beispiel
~/Beispiel/:$ touch new\ Datei.txt
~/Beispiel:/$ ls
neue Datei.txt
~/Beispiel:/$ exit

Der Inhalt der Datei test.outputsähe dann wie folgt aus:

Skript gestartet am Montag, 25. Juni 2012, 16:24:28 Uhr
~/:$ mkdir Beispiel
~/:$ cd Beispiel
~/Beispiel/:$ touch new\ Datei.txt
~/Beispiel/:$ ls
neue Datei.txt
~/Beispiel/:$ exit

Skript erstellt am Montag, 25. Juni 2012, 16:24:41 Uhr

Beachten Sie, dass diese Datei einevollständigTerminaltranskript, daher werden alle Rücktasten als ^H„oder“ ^?(oder was auch immer die Rücktaste Ihres Terminals ist) angezeigt.

verwandte Informationen