Bu kıvırcık diş telleri bash tarafından yalnız bırakılır; bunlar sırasıyla aittir findve kılavuz xargssayfalarında açıklanmıştır.
man find
-exec komuta ;
Yürütme komutu ; 0 durumu döndürülürse true. Bulmak için aşağıdaki tüm bağımsız değişkenler, oluşan bir bağımsız değişkenle ;karşılaşılana kadar komutun bağımsız değişkenleri olarak alınır . Dize {}, bazı sürümlerinde olduğu gibi, yalnızca yalnız olduğu bağımsız değişkenlerde değil, komutun bağımsız değişkenlerinde gerçekleştiği her yerde işlenen geçerli dosya adıyla değiştirilir find. Bu yapıların her ikisinin \de kabuk tarafından genleşmesini önlemek için kaçması (a ile ) veya alıntı yapılması gerekebilir . -execSeçeneğin kullanımına ilişkin örnekler için ÖRNEKLER bölümüne bakın . Belirtilen
komuteşleşen her dosya için bir kez çalıştırılır. Komut başlangıç dizininde yürütülür. -exec
Eylemin kullanımıyla ilgili kaçınılmaz güvenlik sorunları vardır ; Eğer kullanmalıdır -execdiryerine seçeneği.
-exec komuta {} +
-execEylemin bu değişkeni , seçilen dosyalarda belirtilen komutu çalıştırır , ancak komut satırı, seçilen her dosya adı sonuna eklenerek oluşturulur; komutun toplam çağrı sayısı, eşleşen dosya sayısından çok daha az olacaktır. Komut satırı, xargskomut satırlarını oluşturanla aynı şekilde oluşturulur. {}Komut içinde yalnızca bir örneğine izin verilir. Komut başlangıç dizininde yürütülür. Bir findhatayla karşılaşırsanız, bu bazen hemen çıkışa neden olabilir, bu nedenle bekleyen bazı komutlar hiç çalıştırılmayabilir. Bu varyant -execdaima doğrudur.
-execdir komuta ;
-execdir komuta {} +
Beğen -exec, ancak belirtilen komut, normalde bulmaya başladığınız dizin olmayan eşleşen dosyayı içeren alt dizinden çalıştırılır. Bu, eşleşen dosyalara giden yolların çözümü sırasında yarış koşullarından kaçındığı için komutları çağırmak için çok daha güvenli bir yöntemdir. Eylemde olduğu gibi -exec ,
+ biçimi, -execdir birden fazla eşleşen dosyayı işlemek için bir komut satırı oluşturur, ancak verilen herhangi bir komut çağrısı yalnızca aynı alt dizinde bulunan dosyaları listeler. Bu seçeneği kullanırsanız, $PATHortam değişkeninizin başvurmadığından emin olmalısınız.; aksi takdirde, bir saldırgan çalışacağınız bir dizinde uygun şekilde adlandırılmış bir dosya bırakarak istedikleri komutları çalıştırabilir -execdir. Aynı şey $PATH, boş veya mutlak dizin adları olmayan girdilere sahip olmak için de geçerlidir . Bir findhatayla karşılaşırsanız, bu bazen hemen çıkışa neden olabilir, bu nedenle bekleyen bazı komutlar hiç çalıştırılmayabilir. Eylemin sonucu +, ;varyantın mı yoksa varyantın mı kullanıldığına bağlıdır;
-execdir komut {} + her zaman true değerini döndürürken , -execdir komut {} ; yalnızca command 0 döndürür.
man xargs
-I replace-str
Replace -str örneklerini değiştirin adları standart giriş okunan başlangıç-argümanlar. Ayrıca, alıntılanmamış boşluklar giriş öğelerini sonlandırmaz; bunun yerine ayırıcı yeni satır karakteridir. Anlamına gelir -xve -L 1.
-i[ replace-str ],--replace [ =replace-str ]
Bu seçenek ile eşanlamlı -I-str replace eğer değiştirin-str belirtilir. Eğer -str yerine argüman eksik, etkisi aynıdır -I{}. Bu seçenek kullanımdan kaldırılmıştır; kullanın -I.
Düzenleme: ve burada NEDEN bash bu süslü parantezleri görmezden geliyor:
man bash
{ liste; }
liste sadece geçerli kabuk ortamında yürütülür. liste bir satırsonu veya noktalı virgülle sonlandırılmalıdır. Bu, grup komutu olarak bilinir. Dönüş durumu listenin çıkış durumudur. Meta karakterlerden ( ve ) farklı olarak , { ve } ayrılmış kelime ve ayrılmış bir sözcük kabul edilmesi için izin verilen durumlarda meydana gelmesi gerekir. Sözcük kesintisine neden olmadıkları için, boşluk veya başka bir kabuk metakarakteriyle listeden ayrılmalıdır.
Vurgu için: liste bir satırsonu veya noktalı virgülle sonlandırılmalıdır .
{}- komutlatargetshareket etmek, dosyalarıfindkaldırmak /rmbulmak için kullanılır.