Bu komutu düşünün:
ls /mydir/*.txt | xargs chown root
Amaç, tüm metin dosyalarının sahiplerini mydir
kökten değiştirmek
Sorun, eğer .txt
dosya yoksa mydir
o zaman xargs belirtilen bir yol olmadığını söyleyen bir hata çözer. Bu zararsız bir örnektir, çünkü bir hata atılır, ancak bazı durumlarda, burada kullanmam gereken komut dosyasında olduğu gibi, boş bir yolun geçerli dizin olduğu varsayılır. Bu komutu oradan çalıştırırsam, /home/tom/
sonuç yoksa ls /mydir/*.txt
ve altındaki tüm dosyalar /home/tom/
sahiplerinin kök değiştirmesini sağlar.
Peki xargs'ın boş bir sonucu yoksaymasını nasıl sağlayabilirim?
git branch --merged | grep -v '^* ' | xargs git branch -d
da boş girişte başarısız oluyor
ls
Programlı kullanım için asla boru çıkışını yapmayın ; bkz. mywiki.wooledge.org/ParsingLs