15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
28.10.2024
1 +1

Linux’ta `xargs` Komutu Nasıl Kullanılır: Eksiksiz Bir Kılavuz

xargs komutu, Unix/Linux sistemlerinde mevcut olan en güçlü ve çok yönlü araçlardan biridir. Standart girdiden argümanlar okuyarak komutlar oluşturur ve çalıştırır; böylece çıktı üreten komutlar ile argüman tüketen komutlar arasındaki boşluğu etkin biçimde kapatır. Binlerce dosyayı yönetiyor, tekrarlayan kabuk görevlerini otomatikleştiriyor veya karmaşık komut ardışık düzenleri oluşturuyor olun, xargs konusunda uzmanlaşmak terminaldeki verimliliğinizi önemli ölçüde artıracaktır.

Bu kapsamlı kılavuzda, xargs‘ın arka planda nasıl çalıştığını ele alacak, pratik gerçek dünya örneklerini inceleyecek, tüm temel seçenekleri açıklayacak ve yaygın tuzaklardan nasıl kaçınacağınızı göstereceğiz.

xargs Komutu Nedir ve Nasıl Çalışır?

Özünde, xargs standart girdiden (stdin) — genellikle boşluk veya satır sonlarıyla ayrılmış — öğeler okur ve bunları belirtilen bir komuta argüman olarak iletir. Bu kritik öneme sahiptir; çünkü pek çok Unix komutu, iletilen girdiyi doğrudan argüman olarak kabul etmez; komut satırında argüman bekler. xargs bu sorunu zarif bir şekilde çözer.

Temel sözdizimi şöyledir:

command | xargs [options] another_command

Örneğin, geçerli dizindeki tüm .txt dosyalarını bulup silmek için:

find . -name "*.txt" | xargs rm

Burada find, .txt dosya adlarının bir listesini oluşturur ve stdout’a yazar. xargs bu listeyi okur ve dosya adlarını rm‘e argüman olarak iletir; bu da dosyaları siler — hepsi tek, verimli bir işlemde.

> Neden sadece rm $(find . -name "*.txt") kullanmıyorsunuz? Komut değiştirme, argüman listesi son derece uzun olduğunda veya dosya adları özel karakterler içerdiğinde başarısız olabilir ya da beklenmedik şekilde davranabilir. xargs her iki senaryoyu da daha güvenli ve verimli biçimde ele alır.

xargs‘ın Temel Kullanımı

Gelişmiş örneklere geçmeden önce, temel çağırma kalıbını net bir şekilde anlayalım.

Basit Bir Argüman Listesi İletme

echo "file1.txt file2.txt file3.txt" | xargs touch

Bu komut, üç adı touch‘e argüman olarak ileterek — file1.txt, file2.txt ve file3.txt — üç dosya oluşturur. xargs olmadan, her dosya adını manuel olarak yazmanız ya da bir döngü yazmanız gerekirdi.

xargs‘ın Ne Çalıştıracağını Doğrulama

Potansiyel olarak yıkıcı bir komutu çalıştırmadan önce, oluşturulan komutu çalıştırmadan önce stderr’e yazdırmak için -t bayrağını kullanın:

echo "file1.txt file2.txt" | xargs -t rm

Çıktı:

rm file1.txt file2.txt

Bu, ardışık düzenleri çalıştırmaya karar vermeden önce hata ayıklamak için son derece değerlidir.

xargs Kullanımına İlişkin Pratik Örnekler

1. find Tarafından Bulunan Dosyaları Silme

xargs‘ın en yaygın ve güçlü kullanımlarından biri, belirli kriterlere uyan dosyaları silmek için find ile birleştirmektir:

find /var/log -name "*.log" -mtime +30 | xargs rm

Bu, /var/log içinde 30 günden eski tüm .log dosyalarını bulur ve siler. Bu tür otomatik temizlik, disk kullanımını kontrol altında tutmak için düzenli olarak uğraşan VPS Hosting veya Dedicated Sunucular çalıştıran yöneticiler için sunucu bakımında vazgeçilmezdir.

2. -n ile Çalıştırma Başına Argüman Sayısını Sınırlama

Varsayılan olarak, xargs tek bir çağrıda komuta mümkün olduğunca çok argüman iletir. -n seçeneği, çalıştırma başına kaç argüman iletileceğini tam olarak kontrol etmenizi sağlar:

echo "one two three four five six" | xargs -n 2 echo

Çıktı:

one two
three four
five six

Bu, özellikle bir komutun kabul edebileceği argüman sayısında bir sınır olduğunda veya öğeleri kontrollü gruplar halinde işlemek istediğinizde kullanışlıdır.

3. -0 Kullanarak Boşluk ve Özel Karakter İçeren Dosya Adlarını İşleme

Bu, xargs kullanırken en önemli güvenlik uygulamalarından biridir. Boşluk, satır sonu veya diğer özel karakterler içeren dosya adları, basit ardışık düzenleri bozar. Çözüm, find‘ı -print0 ile (dosya adlarını satır sonları yerine null baytlarla ayırır) ve xargs‘ı -0 ile birlikte kullanmaktır:

find . -name "*.txt" -print0 | xargs -0 rm

Null bayt (

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın