Მაგალითად "xargs" ბრძანების გამოყენება

აღწერა და შესავალი

Xargs ბრძანება, როგორც წესი, გამოიყენება ბრძანებათა სიაში, სადაც ერთი ბრძანების output გადადის როგორც შეყვანის არგუმენტები სხვა ბრძანებაში.

ხშირ შემთხვევაში, არ არის სპეციალური ბრძანება, როგორიცაა xargs არის საჭირო, რომ "მილსადენი" და "გადამისამართება" ოპერატორები ასრულებენ იმავე ტიპის გარიგებას. თუმცა, ხანდახან არსებობს ძირითადი მილსადენების და გადამისამართების მექანიზმები, მაგალითად, თუ არგუმენტები შეიცავდეს ფართობებს, ეს გიგანტები გადალახავს.

გარდა ამისა, xargs ახორციელებს განსაზღვრულ ბრძანებას არაერთხელ, საჭიროების შემთხვევაში, დამუშავება მისთვის მიცემულ ყველა არგუმენტს. სინამდვილეში, თქვენ შეგიძლიათ მიუთითოთ რამდენი არგუმენტი უნდა წაიკითხოთ სტანდარტული შეყვანის ნაკადი ყოველ ჯერზე xargs ახორციელებს მითითებული ბრძანება.

ზოგადად, xargs ბრძანება უნდა იქნას გამოყენებული, თუ ერთი ბრძანების გამომუშავება გამოყენებული იქნება მეორე ბრძანების პარამეტრების ან არგუმენტების ნაწილად, რომლის მიხედვითაც მონაცემები streamed (მილის ოპერატორის "|" გამოყენებით). რეგულარული piping საკმარისია, თუ მონაცემები განკუთვნილი იქნება (სტანდარტული) შეყვანის მეორე ბრძანება.

მაგალითად, თუ გამოიყენეთ ls ბრძანება, რომ შეიტანოთ ფაილის სახელები და დასტა სია, და შემდეგ მიუთითეთ ეს სია xargs ბრძანების შესრულებისას echo , შეგიძლიათ მიუთითოთ რამდენი ფაილის სახელი ან დირექტორიის სახელი დამუშავებულია echo on every iteration :

ls | xargs -n 5 echo

ამ შემთხვევაში echo იღებს ხუთ ფაილს ან დირექტორია სახელს. მას შემდეგ, რაც echo დასძენს ახალი ხაზი ხასიათი ბოლოს, ხუთი სახელები წერილობითი თითოეული ხაზი.

თუ შეასრულებთ ბრძანებას, რომელიც დააბრუნებს დიდი და არაპროგნოზირებადი რაოდენობის ნომრებს (მაგ. ფაილების სახელები), რომლებიც გადაეცემა სხვა ბრძანებას შემდგომი დამუშავებისათვის, ეს არის კარგი იდეა, რომ არგუმენტების მაქსიმალური რაოდენობა გააკონტროლოს, რაც მეორე ბრძანება იღებს გადატვირთვისა და ავარიის თავიდან ასაცილებლად.

შემდეგი ბრძანების ქვედანაყოფები წარმოადგენენ იმ ფაილების ნაკადს, რომლებიც წარმოიქმნებიან 200-მდე ჯგუფიდან, რომლებიც გადაეცემა cp ბრძანებას, რომელიც ასლის გადაგზავნის სარეზერვო დირექტორიაში.

იპოვეთ ./-type f -name "* .txt" --print | xargs -l200 -i cp -f {} ./backup

"./" ელემენტის ძებნა ბრძანება განსაზღვრავს მიმდინარე დირექტორიაში ძიება. "-type f" არგუმენტი ზღუდავს ძებნის ფაილებს და "-name" * .txt "flag- ი დამატებით ფილტრებს ავრცელებს, რომელსაც არ გააჩნია" .txt "გაფართოება. } ნოტაცია წარმოადგენს ორთქლის თითოეული ფაილის სახელს.

შემდეგი ბრძანება პოულობს ფაილებს დაასახელა ბირთვში ან ქვემოთ მითითებულ ფაილში / tmp და წაშლის მათ.

მოვძებნოთ / tmp -name core -type fprint | xargs / bin / rm -f

გაითვალისწინეთ, რომ ეს არასწორად იმუშავებს, თუ არსებობს ახალი ფაილების შემცველი სახელები, ერთჯერადი ან ორმაგი შეთავაზებები, ან ფართები. შემდეგი ვერსია ახდენს filenames ისე, რომ ფაილი ან დირექტორია სახელები შემცველი ერთი ან ორმაგი შეთავაზებები, ფართები ან newlines სწორად სიფრთხილით.

მოვძებნოთ / tmp -name core-type f -print0 | xargs -0 / bin / rm -f

-i- ის პარამეტრის ნაცვლად შეგიძლიათ გამოიყენოთ -ი დროშა, რომელიც განსაზღვრავს სტრინს, რომელიც შეიცვლება შეყვანის ხაზით ბრძანების არგუმენტებში, მაგალითად:

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

ჩანაცვლების სიმები განისაზღვრება როგორც "{}". ეს იმას ნიშნავს, რომ "{}" - ს ნებისმიერი ბრძანება ბრძანების არგუმენტებში შეიცვალა მილების ოპერაციის საშუალებით მიცემული შემავალი ელემენტის მიერ. ეს საშუალებას გაძლევთ განათავსოთ შეყვანის ელემენტები კონკრეტულ პოზიციებზე ბრძანების არგუმენტებში (განმეორებით) შესრულებული.