Siduction Forum

Siduction Forum => Scripting & Kernelhacking => Topic started by: bluelupo on 2014/02/02, 12:57:15

Title: Ausgabeumleitung eines Kommandos
Post by: bluelupo on 2014/02/02, 12:57:15
Hallo zusammen,
kann man das nachfolgende Beispiel besser lösen?


echo "df -a" > out.log; df -a >> out.log


Was will ich erreichen?
Ich möchte den Kommandoaufruf, in diesem Fall df -a und die Ausgabe desselben Kommandos, in eine Logdatei schreiben. Das obige Beispiel funktioniert, aber ich denke das es eleganter zu lösen ist.
Title: Re: Ausgabeumleitung eines Kommandos
Post by: hefee on 2014/02/02, 16:39:24
Du könntest die Debugfähigkeiten (xtrace) von sh/bash nutzen:

set -x

und wieder ab mit:

set +x


Eine sehr elegante Methode ist die Arbeit dann mit subshells:

(set -x; df -a) >out.log 2>&1


Oder über eine Funktion ($@ entspricht allen Argumenten, die der Funktion übergeben werden):

logcommand() { echo "$@"; $@;  }
logcommand "df -a" > out.log
Title: Re: Ausgabeumleitung eines Kommandos
Post by: bluelupo on 2014/02/02, 19:24:24
hi hefee,
das ist genau das was ich gesucht habe ;D

(set -x; df -a) >out.log 2>&1

Das mit dem Kommando set ist mir nicht mehr eingefallen. Danke für den Tipp!!!