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 -x
ist 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.output
sä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/:$ exitBeachten Sie, dass diese Datei einevollständigTerminaltranskript, daher werden alle Rücktasten alsSkript erstellt am Montag, 25. Juni 2012, 16:24:41 Uhr
^H
„oder“ ^?
(oder was auch immer die Rücktaste Ihres Terminals ist) angezeigt.