Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi1:pipes_und_umleitungen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

lpi1:pipes_und_umleitungen [2014/06/24 08:32] (aktuell)
Zeile 1: Zeile 1:
 +===== 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 ======
 +  * http://​www.tldp.org/​LDP/​abs/​html/​io-redirection.html
  
lpi1/pipes_und_umleitungen.txt · Zuletzt geändert: 2014/06/24 08:32 (Externe Bearbeitung)