Rozważ to polecenie:
ls /mydir/*.txt | xargs chown root
Intencją jest zmiana właścicieli wszystkich plików tekstowych mydir
na root
Problem polega na tym, że jeśli nie ma żadnych .txt
plików, mydir
xargs wyświetla błąd informujący, że nie określono ścieżki. Jest to nieszkodliwy przykład, ponieważ generowany jest błąd, ale w niektórych przypadkach, na przykład w skrypcie, którego muszę tutaj użyć, przyjmuje się, że bieżącym katalogiem jest pusta ścieżka. Więc jeśli uruchomię to polecenie /home/tom/
odtąd, jeśli nie będzie wyników dla, ls /mydir/*.txt
a wszystkie pliki w katalogu /home/tom/
mają swoich właścicieli zmienionych na root.
Więc jak mogę xargs zignorować pusty wynik?
git branch --merged | grep -v '^* ' | xargs git branch -d
, który również nie działa przy pustych danych wejściowych
ls
do celów programowych; patrz mywiki.wooledge.org/ParsingLs