• unixlerde ozellikle script yazarken işe yarayan, bir komutun çıktısını başka bir komuta efendi bir şekilde iletmekte etmekte kullanılan ingiliz anahtarı. neden doğrudan pipe etmiyoruz diye soranlar için her zaman her komutu bir diğer komutla kullanmak mümkün olmayabilir.

    bir örnekle anlatacak olursak

    find . -name "*tmp" -print | xargs rm

    komutu varsayalım 100 bin milyon temp dosyası olan bir dizinde zorunlu olarak kullanılacaktı. çünkü basit rm *tmp komutu çalışma esnasında rm ye argument olarak bir seferde uzun bir liste olarak sunulmaya çalışılacak bu da too many arguments benzeri bir hataya neden olacaktı. yada hadi varsayalım 100 bin milyon dosya olmasın silinebilir çoklukta 100 bin bin dosya olsun. bu durumda terbiyesiz rm komutu tabir yerindeyse hepsini bir anda silmeye çalışacak, yaptığı pis disk iosuyla, açgöz çocuklarınların ağızlarına herşeyi doldurup boğulayazması gibi sunucuda gereksiz tansiyona neden olacaktır. ancak en yukardaki komutla çocuğumuza sadece yiyebileceği kadar kurabiye sunarken yavaş yavaş yedirip yarasın tosunuma deme şansımız olacaktır. *
  • guvenli degildir. diyelim 2 dosyaniz var:
    a b c d.txt
    e f g h.txt

    ls | xargs rm
    dediginiz anda
    rm a b c d.txt e f g h.txt
    seklinde 8 dosya silinmeye calisilacaktir.

    nasil yapsak daha guvenli olur derseniz

    find ./* -print0 | xargs -0 rm

    iyidir. find'deki -print0 sirf xargs icin yaratilmistir, ayip etmeyin kullanmayarak.
  • find ile guzel bir ikili olusturuyor. iyi komut-kotu komut. saka saka: iyi komut-iyi komut. "komut" da nasil tuhaf bi kelimeymis yahu, yeni fark ettim. nohut.

    ilave: uzerine (yanina) grep de iyi gider.
  • kendisiyle ilgili en sevdigim ozelligi -i parametresi oldu dun itibariyle. positional placement yapabiliyor {} kullanarak:

    # date | xargs echo "normalde sona gelir:"
    normalde sona gelir: fri nov 7 03:27:11 utc 2014

    # date | xargs -i echo "buraya gelecek: {}, sona gelmeyecek:"
    buraya gelecek: fri nov 7 03:27:16 utc 2014, sona gelmeyecek:

    gnu utils'teki versiyonunda var yalniz bu, bsd versiyonlarinda (ornek os x) bulunmaz.
hesabın var mı? giriş yap