Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:pipes_und_umleitungen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
admin_grundlagen:pipes_und_umleitungen [2011/09/20 09:26]
stefan_hofmann
admin_grundlagen:pipes_und_umleitungen [2014/06/24 08:32] (aktuell)
Zeile 1: Zeile 1:
-Ergebnisse in ''​dateien.txt''​+===== Vorbereitung des Beispiels ===== 
-  ​find / -mount -name "​*.au"​ > /tmp/dateien.txt+Testdaten ins Heimatverzeichnis kopieren
 +  ​cd 
 +  cp -a /usr/share/doc .
  
-Fehlermeldungen unterdrücken+===== Ausgabe eines Befehls in Datei umleiten ===== 
-  find / -mount -name "*.au" > /tmp/dateien.txt 2> /dev/null+jpg-Bilder in ''​doc''​ suchen und Ergebnis in ''​bilder.txt''​ speichern
 +  find doc/ -xdev -name "*.jpg" > /tmp/bilder.txt
  
-''​dateien.txt''​ mit ''​touch''​ weiterverarbeiten+Das Selbe, aber Fehlermeldungen unterdrücken
-  ​xargs touch < /tmp/dateien.txt+  ​find doc/ -xdev -name "​*.jpg"​ > /tmp/bilder.txt 2> /dev/null
  
-Beide Operationen zusammenfassen+===== Dateiinhalt mit Befehl weiterverarbeiten ===== 
-  ​find -mount -name "​*.au"​ 2> /dev/null | xargs touch+Berechtigung der in der Datei ''​bilder.txt''​ aufgeführten Dateien mit ''​chmod''​ ändern
 +  ​xargs chmod g+w < /tmp/bilder.txt
  
-Das Selbe mit einer benannten Pipe: +===== Ausgabe eines Befehls ​mit zweitem Befehl weiterverarbeiten ===== 
-  mkfifo pipe +jpg-Bilder in ''​doc''​ suchen und Berechtigung mit ''​chmod''​ ändern
-  xargs touch < pipe & +  find doc/ -xdev -name "*.jpg" 2> /​dev/​null ​| xargs chmod g-w
-  find / -mount -name "*.au" 2> /​dev/​null ​> pipe+
  
-Fehlerausgabe und Standardausgabe zusammenfassen ​(für alle shells) +Verbesserte Version, die auch mit Leer- und Sonderzeichen in Dateinamen klar kommt: 
-  find / -mount -name "*.au" 2&>1 > /tmp/dateien.txt+  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>& 
 + 
 +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
  
-Zusammenfassen (bash) 
-  find / -mount -name "​*.au"​ &> /​tmp/​dateien.txt 
  
-Umgang mit Leer- und Sonderzeichen in Dateinamen: 
-  find Eigene\ Dateien/ -type f -print0 | xargs -0 chmod a-x 
  
 Todo: Beispiel für tee Todo: Beispiel für tee
Zeile 29: Zeile 46:
   wc -l ausgabe1 ausgabe2   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 ====== ====== Links ======
   * http://​www.tldp.org/​LDP/​abs/​html/​io-redirection.html   * http://​www.tldp.org/​LDP/​abs/​html/​io-redirection.html
  
admin_grundlagen/pipes_und_umleitungen.1316510798.txt.gz · Zuletzt geändert: 2011/09/20 09:26 von stefan_hofmann