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

Nächste Überarbeitung
Vorherige Überarbeitung
Nächste Überarbeitung Beide Seiten, nächste Überarbeitung
admin_grundlagen:pipes_und_umleitungen [2009/01/13 12:42]
127.0.0.1 Externe Bearbeitung
admin_grundlagen:pipes_und_umleitungen [2014/06/24 08:32]
127.0.0.1 Externe Bearbeitung
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+ 
 +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
  
-Fehlerausgabe und Standardausgabe zusammenfassen:​ 
-  find / -mount -name "​*.au"​ 2&>1 > /​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 26: 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.txt · Zuletzt geändert: 2022/11/21 14:32 von ingo_wichmann