Жишээ нь "xargs" командын хэрэглээ

Тодорхойлолт ба танилцуулга

Xargs тушаал нь ихэвчлэн тушаалын мөрөнд нэг оруулгын гаралт дээр оролтын аргумент байдлаар дамждаг.

Ихэнх тохиолдолд, "хоолой", "дахин чиглүүлэлт" гэсэн операторууд ижил төрлийн гүйлгээг хийдэг учраас иймэрхүү зорилгод хүрэхийн тулд тусгай тушаал хэрэггүй. Гэсэн хэдий ч заримдаа үндсэн хоолой болон дахин чиглүүлэх механизмтай холбоотой асуудлууд байдаг. Жишээлбэл, хэрэв нэмэлт өгөгдлүүд зайг агуулдаг бол тэдгээр нь давхцдаг.

Үүнээс гадна, xargs нь шаардлагатай бүх утгыг давталттайгаар ажиллуулдаг. Үнэндээ xargs тушаалыг заасан тушаалыг ажиллуулахдаа стандарт оролтыг уншихад хэдэн аргументийг унших хэрэгтэй.

Еренхийд нь нэг тушаалын гаралтыг опционы нэг хэсэг эсвэл хоёрдох тушаалын урсгалыг ашигладаг бол "xargs" тушаалыг ашиглах хэрэгтэй (хоолой оператор "|"). Өгөгдөл нь хоёр дахь тушаалын (стандарт) оролт байхаар бол тогтмол хоолойг хангалттай.

Жишээлбэл, хэрэв та ls тушаал ашиглаж файлын нэрс болон сангуудын жагсаалтыг гаргаад дараа нь энэ жагсаалтыг xargs тушаалын цуурай ажиллуулах цэс рүү залгавал, та хичнээн давталтын хэлбэрээр давталт бүрийн нэрний файлын нэрс эсвэл сангийн нэрүүдийг давтахаар болгож өгч болно. :

ls | xargs -n 5 echo

Энэ тохиолдолд цуурай нь таван файл эсвэл сангийн нэрсийг нэг удаа авдаг. Эхлээд давталт дээр шинэ мөрийг нэмдэг тул мөр бүр дээр таван нэрийг бичдэг.

Хэрвээ та командыг ажиллуулж байгаа том, урьдчилан тааварлашгүй тоо (жишээ нь файлын нэр) -ийг өөр команд руу шилжүүлэх тушаалыг ажиллуулбал илүү их ачаалал болон сүйрлээс зайлсхийх хамгийн их тооны аргуудыг хянах нь зүйтэй юм.

Дараах тушаалын мөрөнд cp тушаалыг cp тушаал руу шилжүүлэхийн өмнө 200 бүлэг бүлгүүдийг үүсгэсэн файлын нэрсийг үүсгэх бөгөөд тэдгээрийг нөөц сан руу хуулна.

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

Find гэсэн хэсэгт байгаа "./" элемент хайж байгаа одоогийн лавлахыг заана. "Type f" хувьсагч нь хайлтыг файлд хайхыг хязгаарлаж, "-name" * .txt "туг нь" .txt "өргөтгөлгүй ямар ч зүйлийг шүүх болно.xargs-ийн -i туг нь { } тэмдэглэгээ нь уурын файлын нэрийг тусгадаг.

Дараах тушаал нь / tmp сан доторх үндсэнд юмуу доор дурдсан гол файлуудыг олох бөгөөд тэдгээрийг устгаарай.

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

Шинэ мөр, ганц эсвэл давхар ишлэл, зайгаар бүрдсэн файлын нэр байгаа бол энэ нь буруу ажиллах болно гэдгийг анхаарна уу. Дараахь хувилбар нь файлын нэрийг нэг эсвэл хоёр ишлэл, зай эсвэл шинэ мөр агуулсан файлын эсвэл лавлах нэрийг зөвөөр зохицуулдаг.

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

-i тохируулгын оронд -I тугийг бас ашиглаж болно. Энэ жишээнд орсон тушаалын нэмэлт өгөгдлөөр орлуулах мөрөөр солигдох мөрийг зааж өгч болно:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / код>

Орлуулах мөрийг "{}" гэж тодорхойлдог. Энэ нь тушаалын аргументэд "{}" ямар нэгэн тохиолдлууд хоолойн үйл явцаар дамжуулан аргуудад дамжуулагдах элементээр солигдоно гэсэн үг юм. Ингэснээр тушаалын аргументууд (давтан) гүйцэтгэгдэж байгаа оролтын элементүүдийг тодорхой байрлалд байрлуулна.