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 [2020/12/04 14:11]
holger_jakobs [Ausgabe eines Befehls mit zweitem Befehl weiterverarbeiten]
admin_grundlagen:pipes_und_umleitungen [2021/11/02 22:27] (aktuell)
Zeile 30: Zeile 30:
 Hier schreibt ''​find''​ die gefundenen Namen durch ein Nullbyte ''​\0''​ getrennt in die Pipe, aus der ''​xargs''​ liest. Durch die Option ''​-0''​ erwartet ''​xargs'',​ dass die Dateinamen nicht durch ein Zeilenende (''​\n''​),​ sondern durch ein Nullbyte getrennt sind. ''​xargs''​ baut für ''​cp''​ eine lange Parameterliste aus Dateinamen zusammen und übergibt sie. Falls mehr Namen ankommen als auf eine Kommandozeile passen, wird ''​cp''​ ggf. mehrfach aufgerufen, aber viel seltener als im vorigen Beispiel. ​ Hier schreibt ''​find''​ die gefundenen Namen durch ein Nullbyte ''​\0''​ getrennt in die Pipe, aus der ''​xargs''​ liest. Durch die Option ''​-0''​ erwartet ''​xargs'',​ dass die Dateinamen nicht durch ein Zeilenende (''​\n''​),​ sondern durch ein Nullbyte getrennt sind. ''​xargs''​ baut für ''​cp''​ eine lange Parameterliste aus Dateinamen zusammen und übergibt sie. Falls mehr Namen ankommen als auf eine Kommandozeile passen, wird ''​cp''​ ggf. mehrfach aufgerufen, aber viel seltener als im vorigen Beispiel. ​
  
-Weil ''​cp''​ üblicherweise das Ziel als letzten Parameter erwartet, muss hier die Option ''​-t''​ verwendet werden, um das Zielverzeichnis zu Beginn anzugeben. ​''​xargs''​ kann halt nur am Ende des Kommandos Parameter anfügen. +Weil ''​cp''​ üblicherweise das Ziel als letzten Parameter erwartet, muss hier die Option ''​-t''​ verwendet werden, um das Zielverzeichnis zu Beginn anzugeben. ​
-+
-  ​+
   ​   ​
 +Eine Variante ohne ''​xargs''​ und ohne das ''​cp''​-Kommando für jede gefundene Datei aufzurufen:
 +  find / -name "​*jpg"​ -exec cp -t Bilder/ {} + 2>/​dev/​null
 +Das ''​+''​-Zeichen braucht nicht geschützt zu werden. Es werden ganz viele Dateinamen am Ende des Kommandos anstelle des ''​{}''​ eingefügt. ​
 ===== Fehlerausgabe und Standardausgabe zusammenfassen ===== ===== Fehlerausgabe und Standardausgabe zusammenfassen =====
 Lange Version, geht auch mit anderen Shells als bash: Lange Version, geht auch mit anderen Shells als bash:
admin_grundlagen/pipes_und_umleitungen.txt · Zuletzt geändert: 2021/11/02 22:27 (Externe Bearbeitung)