Android

Xargs parancs a linuxban

Using xargs in Linux

Using xargs in Linux

Tartalomjegyzék:

Anonim

Az xargs segédprogram lehetővé teszi a parancsok készítését és végrehajtását a szokásos bemenetből. Általában a csöveken keresztül más parancsokkal kombinálva használják.

Az xargs segítségével argumentumként megadhatja a bemeneti parancssori segédprogramokat, például az mkdir és az rm .

Ebben az oktatóanyagban bemutatjuk az xargs parancs használatának alapjait.

Hogyan kell használni a Linux xargs parancsot

xargs beolvassa az argumentumokat a szabványos bemenetről, üres szóközökkel vagy új sorokkal elválasztva, és végrehajtja a megadott parancsot az input parancs argumentumaként. Ha nem adunk parancsot, akkor az alapértelmezés a /bin/echo .

Az xargs parancs szintaxisa a következő:

xargs]

Az xargs használatának legalapvetőbb példája az lesz, hogy több, a szóközökkel elválasztott karakterláncot xargs egy cső segítségével az xargs és futtasson egy parancsot, amely ezeket a karakterláncokat használja argumentumként.

echo "file1 file2 file3" | xargs touch

A fenti példában a szokásos bemenetet xargs az xargs , és az touch parancsot minden argumentumhoz futtatjuk, három fájlt hozva létre. Ez ugyanaz, mintha futtatná:

touch file1 file2 file3

A parancs megtekintése és a felhasználó kérése

A parancsnak a terminálra történő nyomtatásához a végrehajtás előtt használja a -t ( --verbose ) opciót:

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Írja be az y vagy Y a parancs megerősítéséhez és futtatásához:

touch file1 file2 file3 ?…y

Ez az opció akkor hasznos, ha romboló parancsokat hajt végre.

Az érvek számának korlátozása

Alapértelmezés szerint a parancsnak átadott argumentumok számát a rendszer korlátja határozza meg.

Az -n ( --max-args ) opció megadja az adott parancshoz továbbítandó argumentumok számát. xargs annyiszor futtatja a megadott parancsot, ameddig az összes argumentum kimerül.

A következő példában a szabványos bemenetről beolvasott argumentumok száma 1-re korlátozódik.

echo "file1 file2 file3" | xargs -n 1 -t touch

Mint az alábbiakban látható részletes kimenetből látható, az érintés parancsot minden argumentumra külön-külön végrehajtják:

touch file1 touch file2 touch file3

Több parancs futtatása

Több parancs futtatásához xargs segítségével használja az -I opciót. Úgy működik, hogy az -I opció után definiálja a replace-str parancsot, és a -I replace-str minden előfordulása helyébe az xargs átadott argumentum lép.

A következő xargs példa két parancsot fog futtatni, először az touch használatával hozza létre a fájlokat, majd felsorolja a fájlokat az ls paranccsal:

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'

-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3

A replace-str általános választása a % . Használhat azonban egy másik helyőrzőt, például az ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Hogyan határozhatunk meg elválasztót

A -d ( --delimiter ) opcióval állíthat be egy egyedi határolót, amely lehet egyetlen karakter vagy egy \ --delimiter kezdődő menekülési sorozat.

A következő példát használjuk ; határolóként:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

Hogyan lehet elemeket olvasni a fájlból

Az xargs parancs fájlokat is olvashat a szokásos bemenet helyett. Ehhez használja az -a ( --arg-file ) opciót, amelyet a fájlnév követ.

A következő példában az xargs parancs elolvassa az ips.txt fájlt, és ping minden IP-címet.

ips.txt

8.8.8.8 1.1.1.1

Az -L 1 opciót is használjuk, amely arra utasítja az xargs hogy olvassa el egy sort egyszerre. Ha ezt az opciót kihagyják, az xargs az összes IP-t egyetlen ping parancsnak adja át.

xargs -t -L 1 -a ips.txt ping -c 1

ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

xargs használata a find

xargs ot leggyakrabban a find paranccsal kombinálva használják. A xargs segítségével kereshet bizonyos fájlokat, majd az xargs segítségével hajthatja végre a fájlokat.

Az új sorokat vagy más speciális karaktereket tartalmazó fájlnevekkel kapcsolatos problémák elkerülése érdekében mindig használja a find -print0 beállítást, amely miatt a find a teljes fájlnevet, majd egy null karaktert nyomtatja ki. Ezt a kimenetet az xargs a -0 , ( --null ) opcióval helyesen értelmezheti.

A következő példában a find kinyomtatja az /var/www/.cache könyvtárban lévő fájlok teljes nevét, és az xargs átadja a fájl elérési útjait az rm parancsnak:

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Xargs használata a szóköz karakterek kivágásához

xargs eszközként is felhasználható a szóköz elhagyására az adott karakterlánc mindkét oldaláról. Egyszerűen csőzze be a karakterláncot az xargs parancsra, és ez elvégzi a vágást:

echo " Long line " | xargs

Long line

Ez hasznos lehet, ha a karakterláncokat összehasonlítja a shell parancsfájlokban.

#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi

Strings are not equal. Strings are equal.

Következtetés

xargs egy parancssori segédprogram Linuxon, amely lehetővé teszi parancsok készítését és végrehajtását.

Az xargs bővebben az xargs man oldalon olvashat.

xargs terminál