"Xargs" komandasining misollari

Tavsif va Kirish

Xargs buyrug'i odatda buyruq satrida ishlatiladi, bu erda bitta buyruq chiqishi boshqa argumentga kiritilgan argument sifatida kiritiladi.

Ko'pgina hollarda, "trubka" va "qayta yo'naltirish" operatorlari bir xil turdagi operatsiyalarni amalga oshirganligi uchun xargs kabi maxsus buyruq kerak emas. Biroq ba'zida asosiy quvur va qayta yo'naltirish mexanizmlari bilan bog'liq muammolar mavjud, masalan, agar argumentlar bo'shliqni o'z ichiga olsa, bu to'siqlarni engib chiqadi.

Bundan tashqari, xargs, agar kerak bo'lsa, berilgan barcha argumentlarni qayta ishlash uchun ko'rsatilgan buyruqni qayta-qayta bajaradi. Aslida, har safar xargs ko'rsatilgan buyruqni bajarganda standart kirish oqimidan necha argumentlarni o'qib chiqish kerakligini belgilashingiz mumkin.

Odatda xargs komandasi bitta buyruqning chiqishi ma'lumotlarning oqimlangan ikkinchi buyrug'ining variantlari yoki argumentlarining bir qismi sifatida ishlatilishi kerak (quvur operatori yordamida "|"). Muntazam quvurlash ma'lumotlarning ikkinchi buyruqning (standart) kiritilishi bo'lishi uchun etarli bo'lsa.

Misol uchun, ls buyrug'ini fayl nomlari va kataloglari ro'yxatini yaratish uchun foydalansangiz va ushbu ro'yxatni echo ijro etuvchi xargs komandasiga o'tkazib yuborsangiz, har bir iteratsiyada qancha fayl nomlari yoki katalog nomlari echo bilan ishlashi mumkinligini belgilashingiz mumkin :

ls | xargs -n 5 echo

Bunday holda, echo bir vaqtning o'zida beshta fayl yoki katalog nomini oladi. Ekranda oxirida yangi satr qo'shiladi, chunki har bir satrda beshta nom beriladi.

Keyinchalik qayta ishlov berish uchun boshqa buyruqqa uzatilgan buyuk va noaniq raqamli elementlarni (masalan, fayl nomlari) qaytaradigan buyruqni bajaradigan bo'lsangiz, ortiqcha yuklanish va ishdan chiqishning oldini olish uchun ikkinchi buyruq olgan maksimal parametrlarni nazorat qilish yaxshi bo'ladi.

Quyidagi buyruq qatori, int guruhlari tomonidan 200 oldin topilgan cp buyrug'iga o'tadi va ularni zaxira katalogiga ko'chiradigan fayl nomlari oqimini ajratadi.

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

Find buyrug'idagi "./" elementi qidirish uchun mavjud katalogni belgilaydi. "-type f" argumenti fayllarni izlashni cheklaydi va "-name" * .txt "bayrog'i" .txt "kengaytmasiga ega bo'lmagan narsalarni filtrlaydi.Xyzdagi -i bayrog'i { } belgisi bug 'har bir fayl nomini ifodalaydi.

Quyidagi buyruq, / tmp katalogidagi yoki ostidagi yadrolarni topadi va ularni o'chiradi.

find / tmp -name yadrosi-f -print | xargs / bin / rm -f

Yangi satrlarni, bitta yoki ikkita tirnoqlarni yoki bo'sh joylarni o'z ichiga olgan har qanday fayl nomlari mavjud bo'lsa, bu noto'g'ri ishlaydi. Quyidagi versiya fayl nomlarini bitta yoki ikkita tirnoq, bo'shliq yoki yangi satrlarni o'z ichiga olgan fayl yoki katalog nomlari to'g'ri ishlov beradigan tarzda ishlov beradi.

find / tmp -name yadrosi-f -print0 | xargs -0 / ming / rm -f

-i variantini o'rniga, bu misolda bo'lgani kabi, argumentlarga buyruq satrida kiritilgan satrni belgilaydigan I- flagni ham ishlatishingiz mumkin:

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

Zahiralash zanjiri "{}" deb ta'riflanadi. Bu shuni anglatadiki, buyruq argumentlarida "{}" ning har qanday ko'rinishi quvur operatsiyalari orqali argsga yuborilgan kirish elementi bilan almashtiriladi. Bu sizga (takroran) amalga oshiriladigan buyruqlar argumentlari uchun maxsus elementlarga kirish elementlarini joylashtirish imkonini beradi.