Betrachten Sie diesen Befehl:
ls /mydir/*.txt | xargs chown root
Es ist beabsichtigt, die Eigentümer aller Textdateien in mydirroot zu ändern
Das Problem ist, dass wenn xargs keine .txtDateien enthält, mydirxargs einen Fehler ausgibt, der besagt, dass kein Pfad angegeben ist. Dies ist ein harmloses Beispiel, da ein Fehler ausgegeben wird, aber in einigen Fällen, wie in dem Skript, das ich hier verwenden muss, wird angenommen, dass ein leerer Pfad das aktuelle Verzeichnis ist. Wenn ich diesen Befehl /home/tom/dann ausführe, wenn es kein Ergebnis für gibt ls /mydir/*.txtund alle Dateien unter /home/tom/ihren Besitzern in root geändert wurden.
Wie kann ich xargs ein leeres Ergebnis ignorieren lassen?
git branch --merged | grep -v '^* ' | xargs git branch -d, dass auch bei leerer Eingabe fehlschlägt
lsfür den programmatischen Gebrauch leiten. siehe mywiki.wooledge.org/ParsingLs