Adibidea "xargs" komandoaren erabilerak

Deskribapena eta Sarrera

Xargs komandoa normalean komando lerroan erabiltzen da, komando bat irteera beste komando batekin sarrerako argumentu gisa pasatzen denean.

Kasu askotan, komando berezirik ez dago, hala nola xargs behar den hori lortzeko, "kanalizazio" eta "birbideratze" operadoreek transakzio mota bera egiten dutelako. Hala ere, batzuetan oinarrizko hoditeria eta birbideratze mekanismoarekin arazoak daude, adibidez, argumentuak espazioak badituzte, xargs gainditzen badira.

Gainera, xargsek zehaztutako komandoa behin eta berriro exekutatzen du, behar izanez gero, bertan emandako argumentu guztiak prozesatzeko. Izan ere, zehaztutako komandoak exekutatzen dituen bakoitzean zenbat argibide irakurri behar diren zehaztu dezakezu korronte estandarraren arabera.

Oro har, xargs komandoa komando baten irteera erabili behar da datuak kommutazioaren bigarren komando baten aukera edo argumentuen bidez (kanalizazio operadorea erabiliz "|"). Hoditeria arrunta nahikoa da bigarren komandoaren (estandarra) sarrera izateko.

Adibidez, ls komandoa erabiltzen baduzu fitxategi izen eta direktorioen zerrenda bat sortzeko, eta ondoren zerrendako hodi hau echo exekutatzen ari den xargs komandoan, zenbat fitxategi izen edo direktorio izenek ochoaren bidez prozesatuko dira iterazio bakoitzaren arabera :

ls | xargs -n 5 oihartzuna

Kasu honetan, echoak aldi berean bost fitxategi edo direktorio izen jasotzen ditu. Oihartzuna azkeneko lerroko karaktere bat gehitzen denean, lerro bakoitzean bost izenak idatziko dira.

Zenbaki handiago eta ezusteko zenbakiak (adib. Fitxategi izenak) beste komando batera pasatzen diren komandoak exekutatzen badituzu, komandoak bigarren komandoa jasotzen duen gehienezko kopurua kontrolatzeko ideia ona da.

Ondorengo komandoak partekatzen ditu find int-eko 200 izeneko taldeen korrontea cp komandoari pasatu baino lehen, kopiatu egiten duten kopia- kopiara .

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

Bilaketa komandoaren "./" elementua zehazten du bilaketa egiteko uneko direktorioa. "-type f" argumentuak fitxategien bilaketa mugatzen du eta "-name" * .txt "markak" .txt "luzapenik ez duen ezer iragazten du." -i flag in xargs " } notazioa lurrunaren izen bakoitzaren izena adierazten du.

Ondorengo komandoa direktorio / tmp izeneko core edo azpitik aurkitzen ditu eta ezabatzen ditu.

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

Kontuan izan hau gaizki funtzionatzen duela, lerro berriak, komatxo bakunak edo bikoitzak edo espazioak badituzte. Hurrengo bertsioan fitxategien izenak prozesatzen ditu, komatxo bakarreko edo bikoitzak, espazioak edo lerro berriak modu egokian kudeatzen dituzten fitxategi edo direktorio izenak.

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

Horren ordez, -i aukeran, adibidez, komandoaren argudioetan lerro-lerroan ordezkatutako katea zehazten duen I-aren bandera erabil dezakezu.

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

Ordezko katea "{}" gisa definitzen da. Horrek esan nahi du komandoaren argumentuetan "{}" agerraldi bat ordeztuko den sarrera-elementu batek ordezkatuko duela kanalaren funtzionamenduaren bidez. Horrek aukera ematen du sarrerako elementuak kokapen zehatzetan jarrita dauden komandoaren argumentuak (behin eta berriro) exekutatzeko.