Betrachten Sie diesen Befehl:
ls /mydir/*.txt | xargs chown root
Es ist beabsichtigt, die Eigentümer aller Textdateien in mydir
root zu ändern
Das Problem ist, dass wenn xargs keine .txt
Dateien enthält, mydir
xargs 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/*.txt
und 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
ls
für den programmatischen Gebrauch leiten. siehe mywiki.wooledge.org/ParsingLs