"Xargs" komandasının nümunəsi

Təsvir və Giriş

Xargs əmri tipik olaraq bir komanda çıxışının başqa bir əmrə giriş arqumenti kimi qəbul edildiyi bir komanda xəttində istifadə olunur.

Bir çox hallarda, "boru" və "təkrar istiqamətləndirici" operatorlar eyni tip əməliyyatları yerinə yetirmək üçün xargs kimi heç bir xüsusi əmr lazım deyil. Ancaq bazən əsas boru və redirection mexanizmi ilə əlaqədar məsələlər var, məsələn, əgər arqumentlər boşluqlar yaranarsa, bu da üstünlük təşkil edir.

Bundan əlavə, xargs, verilən bütün dəlilləri işlədirmək üçün zəruri hallarda müəyyən edilmiş əmrləri dəfələrlə yerinə yetirir. Əslində, xargs hər dəfə göstərilən əmri yerinə standart giriş axınından neçə argumentin oxunması lazım olduğunu müəyyən edə bilərsiniz.

Ümumiyyətlə, bir komandanın çıxışı məlumatların axın etdiyi ikinci bir əmrin variantları və ya arqumentlərinin bir hissəsi kimi istifadə ediləcəyi halda xargs komandanlığı istifadə olunmalıdır (boru operatoru istifadə edərək "|"). Məlumatların ikinci komandanın (standart) giriş olması nəzərdə tutulursa, müntəzəm boru kəməri kifayətdir.

Məsələn, fayl adları və dizinləri siyahısını yaratmaq üçün ls komutunu istifadə etsəniz və bu siyahıdan echo işləyən xargs əmrinə boru yazarsanız, hər bir iteriyədə neçə fayl adı və ya qovluq adının yankıla işləndiyini göstərə bilərsiniz :

ls | xargs-n 5 echo

Bu halda, eko bir anda beş fayl və ya qovluq adını alır. Echo yeni xətt əlavə edildikdən sonra hər bir satırda beş ad yazılıb.

Daha çox işləmə üçün başqa bir komandaya ötürülən böyük və gözlənilməz ədəd maddələrini (məsələn, fayl adları) qaytaran bir əmri yerinə yetirirsinizsə, ikinci komandanın yüklənməsinin və şaqqılmanın qarşısını almaq üçün qəbul etdiyi ən çox arqumentləri nəzarət etmək yaxşı bir fikirdir.

Aşağıdakı komanda xətti, int qruplarını 200-dən cp komutuna ötürülmədən tapmaqla yaradılan fayl adlarının axını bölüşdürür və onları yedek qovluğa çıxarır .

tapa bilərsiniz. / -type f -name "* .txt" -print | xargs -l200 -i cp -f {}. / backup

Bulma əmrindəki "./" elementi axtarış üçün mövcud kataloqları göstərir. "-type f" arqumenti axtarışları faylları məhdudlaşdırır və "-name" * .txt "bayrağı" .txt "uzantısı olmayan bir şeyi filtreler. Xargs -i bayrağı { } qeyd, buxarın hər bir faylının adını əks etdirir.

Aşağıdakı komanda kataloq / tmp altındakı və ya altındakı faylları tapır və onları sildikdə verir.

tapmaq / tmp -name core -type f -print | xargs / bin / rm -f

Yeni satırlar, tək və ya cüt tırnakları və ya boşluqları olan hər hansı bir fayl varsa, bu düzgün işləməyəcəyini unutmayın. Aşağıdakı versiya fayl adlarını tək və ya cüt tırnakları, boşluqları və ya yeni satırlarını ehtiva edən fayl və ya kataloq adları düzgün şəkildə işlədilir.

tapmaq / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

-i variantının əvəzinə, bu nümunədə olduğu kimi, komanda argumentlərindəki giriş xətti ilə əvəzlənən simli müəyyən edən I- ı istifadə edə bilərsiniz:

dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

Əvəzli simli "{}" kimi müəyyən edilir. Bunun anlamı, "{}" komut argümanlarının hər hansı bir baş verməsi boru əməliyyatından sonra args'a göndərilən giriş elementi ilə əvəz olunur. Bu, giriş elementlərini əmrlərin ardıcıllarında (təkrarlanan) yerinə yetirmək üçün xüsusi mövqelərin yerləşdirilməsinə imkan verir.