Az xargs parancsot tipikusan olyan parancssorban használják, ahol egy parancs kimenete bemeneti argumentumként átadódik egy másik parancsnak.
Sok esetben nincs szükség speciális parancsra, például xargsra, mivel a "csővezeték" és "átirányítás" operátorok ugyanolyan típusú tranzakciót hajtanak végre. Azonban néha vannak problémák az alapvető csővezeték- és átirányítási mechanizmussal, például ha az argumentumok szóközöket tartalmaznak, az xargs felülbírálja.
Ezenkívül az xargs a megadott parancsot ismételten végrehajtja, ha szükséges, feldolgozza az összes megadott argumentumot. Valójában megadhatja, hogy hány argumentumot kell leolvasni a standard bemeneti adatfolyamról, amikor az xargs végrehajtja a megadott parancsot.
Általában az xargs parancsot kell használni, ha egy parancs kimenetét egy olyan második parancs opcióinak vagy argumentumainak részeként kell használni, amelyre az adatokat átirányítják (a "|" csővezérlő segítségével). Rendszeres csővezeték elegendő, ha az adatok a második parancs (standard) bemenete.
Ha például az ls parancsot használja a fájlnevek és könyvtárak listájának létrehozásához, majd ezt a listát az xargs parancs végrehajtó echo-ba, akkor megadhatja, hogy az egyes iterációk alapján mennyi fájlnevet vagy könyvtárnevet dolgozzon fel echo-val :
ls | xargs -n 5 echo
Ebben az esetben az echo öt fájlt vagy könyvtár nevet kap egyszerre. Mivel az echo egy új vonalat ad hozzá a végén, mindegyik soron öt nevet írunk.
Ha olyan parancsot futtat, amely nagy és kiszámíthatatlan számelemeket (például fájlneveket) visz vissza, amelyeket további feldolgozásra továbbítanak egy másik parancsra, jó ötlet, hogy szabályozza a második parancs által megkapott érvek maximális számát, hogy elkerülje a túlterhelést és összeomlást.
A következő parancssor felosztja a létrehozott fájlnevek áramát a 200-as csoportok megkeresése előtt, mielőtt továbblép a cp parancsra, amely átmásolja őket a biztonsági mentés Könyvtár.
./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup
A find parancsban található "./" elem a keresési aktuális könyvtárat adja meg. A "-type f" argumentum korlátozza a keresést a fájlokhoz, és a "-name" * .txt "jelző tovább kiszűri mindazokat, amelyek nem rendelkeznek" .txt "kiterjesztéssel. -én zászló xargs jelzi, hogy a {} A jelölés a gőz minden egyes fájlnevét jelöli.
A következő parancs a / tmp könyvtárban található vagy az alatt található fájlokat találja meg, és törli őket.
find / tmp -name core -type f -print | xargs / bin / rm -f
Ne feledje, hogy ez helytelenül működik, ha vannak olyan új fájlnevek, egysoros vagy kettős idézőjelek vagy szóközöket tartalmazó fájlnevek. A következő verzió a fájlneveket oly módon dolgozza fel, hogy az egyes vagy kettős idézőjeleket, szóközöket vagy új sorokat tartalmazó fájl- vagy könyvtárneveket megfelelően kezeljék.
find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f
Ahelyett, hogy a -én opciót is használhatja -ÉN flag, amely megadja azt a karakterláncot, amelyet az argumentum argumentumainak bemeneti sorával helyettesít, mint a jelen példában:
ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / kód>
A helyettesítő karakterlánc definíciója: "{}". Ez azt jelenti, hogy a parancselméletek "{}" minden előfordulását a bemeneti elem váltja fel a csővezeték műveletére. Ez lehetővé teszi a bemeneti elemek meghatározott pozíciókba történő helyezését a végrehajtandó (ismételten végrehajtandó) parancs argumentumaiban.