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?

Code: [Select]
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:
Code: [Select]
set -x
und wieder ab mit:
Code: [Select]
set +x

Eine sehr elegante Methode ist die Arbeit dann mit subshells:
Code: [Select]
(set -x; df -a) >out.log 2>&1

Oder über eine Funktion ($@ entspricht allen Argumenten, die der Funktion übergeben werden):
Code: [Select]
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

Code: [Select]
(set -x; df -a) >out.log 2>&1
Das mit dem Kommando set ist mir nicht mehr eingefallen. Danke für den Tipp!!!