Ausgabeumleitung eines Kommandos

Started by bluelupo, 2014/02/02, 12:57:15

Previous topic - Next topic

bluelupo

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.

hefee

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

bluelupo

#2
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!!!