Skip to main content

Példa Az "xargs" parancs használata

【台北旅遊攻略】烏來瀑布,走吊橋、搭台車、踩老街、看瀑布、泡溫泉,深入泰雅族文化的知性旅遊│Wulai Waterfall and Atayal Aboriginal Village. (Április 2025)

【台北旅遊攻略】烏來瀑布,走吊橋、搭台車、踩老街、看瀑布、泡溫泉,深入泰雅族文化的知性旅遊│Wulai Waterfall and Atayal Aboriginal Village. (Április 2025)
Anonim

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.