Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi1:pipes_und_umleitungen

Vorbereitung des Beispiels

Testdaten ins Heimatverzeichnis kopieren:

cd
cp -a /usr/share/doc .

Ausgabe eines Befehls in Datei umleiten

jpg-Bilder in doc suchen und Ergebnis in bilder.txt speichern:

find doc/ -xdev -name "*.jpg" > /tmp/bilder.txt

Das Selbe, aber Fehlermeldungen unterdrücken:

find doc/ -xdev -name "*.jpg" > /tmp/bilder.txt 2> /dev/null

Dateiinhalt mit Befehl weiterverarbeiten

Berechtigung der in der Datei bilder.txt aufgeführten Dateien mit chmod ändern:

xargs chmod g+w < /tmp/bilder.txt

Ausgabe eines Befehls mit zweitem Befehl weiterverarbeiten

jpg-Bilder in doc suchen und Berechtigung mit chmod ändern:

find doc/ -xdev -name "*.jpg" 2> /dev/null | xargs chmod g-w

Verbesserte Version, die auch mit Leer- und Sonderzeichen in Dateinamen klar kommt:

mv doc 'Eigene Dateien'
find Eigene\ Dateien -xdev -name "*.jpg" -print0 2> /dev/null | xargs -0 chmod g+w
mv Eigene\ Dateien doc

Alle Grafikdateien in das Verzeichnis Bilder kopieren:

find / -name "*jpg" -exec cp {} Bilder/ \; 2>/dev/null
find / -name "*jpg" -print0 2> /dev/null | xargs -0 cp -t Bilder

Fehlerausgabe und Standardausgabe zusammenfassen

Lange Version, geht auch mit anderen Shells als bash:

find doc/ -xdev -name "*.jpg" > /tmp/bilder.txt 2>&1 

Nur mit bash:

find doc/ -xdev -name "*.jpg" &> /tmp/bilder.txt

Fehlerausgabe und Standardausgabe mit zweitem Befehl weiterverarbeiten

find /var -xdev -type d -ls 2>&1 | less

Nur mit bash:

find /var -xdev -type d -ls |& less

Todo: Beispiel für tee

tee ausgabe1 ausgabe2 < /etc/passwd | wc -l
wc -l ausgabe1 ausgabe2

Sonderfall: stdout und stderr unterschiedlich weiterverarbeiten

((ls -l null eins |nl) 3>&1 1>&2 2>&3 | grep -v 'spezielle fehlermeldung' ) 3>&1 1>&2 2>&3

Es werden dazu stdout und stderr zweimal reihum getauschst.

Links

lpi1/pipes_und_umleitungen.txt · Zuletzt geändert: 2014/06/24 08:32 (Externe Bearbeitung)