Android

Xargs-kommando i Linux

Linux команда xargs.

Linux команда xargs.

Innehållsförteckning:

Anonim

Med xargs verktyget kan du bygga och köra kommandon från standardinmatning. Det används vanligtvis i kombination med andra kommandon genom rörledningar.

Med xargs kan du tillhandahålla standardinmatning som argument till kommandoradsverktyg som mkdir och rm .

I denna handledning täcker vi grunderna för att använda kommandot xargs .

Hur man använder Linux xargs kommando

xargs läser argument från standardinmatningen, åtskilda med tomma mellanslag eller nylinjer, och kör det angivna kommandot med hjälp av ingången som kommandans argument. Om inget kommando tillhandahålls är standard /bin/echo .

Syntaxen för kommandot xargs är följande:

xargs]

Det mest grundläggande exemplet på att använda xargs skulle vara att passera flera strängar separerade med vitrum med ett rör för att xargs och köra ett kommando som kommer att använda strängarna som argument.

echo "file1 file2 file3" | xargs touch

I exemplet ovan rör vi standardingången till xargs , och xargs körs för varje argument och skapar tre filer. Detta är samma sak som om du skulle springa:

touch file1 file2 file3

Så här visar du kommandot och uppmanar användaren

För att skriva ut kommandot på terminalen innan du kör det använder --verbose alternativet -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Skriv y eller Y att bekräfta och köra kommandot:

touch file1 file2 file3 ?…y

Det här alternativet är användbart när du utför destruktiva kommandon.

Hur man begränsar antalet argument

Som standard bestäms antalet argument som skickas till kommandot av systemets gräns.

--max-args -n ( --max-args ) anger antalet argument som ska överföras till det givna kommandot. xargs kör det angivna kommandot så många gånger som behövs tills alla argument är uttömda.

I följande exempel är antalet argument som läses från standardinmatningen begränsat till 1.

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

Som du kan se från verbosutgången nedan körs beröringskommandot separat för varje argument:

touch file1 touch file2 touch file3

Hur du kör flera kommandon

För att köra flera kommandon med xargs , använder du -I alternativet. Det fungerar genom att definiera en replace-str efter alternativet -I och alla förekomster av replace-str ersätts med argumentet som skickas till xargs.

Följande xargs exempel kör två kommandon, först skapar de filerna med touch och sedan listar filerna med kommandot ls :

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

Ett vanligt val för replace-str är % . Du kan dock använda en annan platshållare, till exempel ARGS :

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

Så här anger du en avgränsare

Använd alternativet -d (- --delimiter ) för att ställa in en anpassad avgränsare, som kan vara antingen ett enda tecken eller en flygsekvens som börjar med \ .

Följande exempel använder vi ; som en avgränsare:

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

touch file1 file2 file3

Hur man läser artiklar från fil

Kommandot xargs kan också läsa objekt från en fil istället för standardinmatning. För att göra det använder du alternativet -a ( --arg-file ) följt av filnamnet.

I följande exempel kommer xargs kommandot att läsa ips.txt filen och pinga varje IP-adress.

ips.txt

8.8.8.8 1.1.1.1

Vi använder också alternativet -L 1 , som instruerar xargs att läsa en rad samtidigt. Om det här alternativet utelämnas kommer xargs att överföra alla IP till ett enda ping kommando.

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

Använda xargs med find

xargs används oftast i kombination med sökkommandot. Du kan använda find att söka efter specifika filer och sedan använda xargs att utföra operationer på dessa filer.

För att undvika problem med filnamn som innehåller nya linjer eller andra specialtecken, använd -print0 alternativet find -print0 , vilket gör att find skriver ut hela filnamnet följt av ett nolltecken. Denna utgång kan tolkas korrekt av xargs med xargs -0 , (- --null ).

I följande exempel kommer find att skriva ut de fullständiga namnen på alla filer i /var/www/.cache och xargs till kommandot rm :

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

Använda xargs för att trimma Whitespace-karaktärer

xargs kan också användas som ett verktyg för att ta bort mellanrum från båda sidor av en given sträng. Rör helt enkelt strängen till kommandot xargs , så gör det klippningen:

echo " Long line " | xargs

Long line

Detta kan vara användbart när man jämför strängar i skalskript.

#!/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.

Slutsats

xargs är ett kommandoradsverktyg på Linux som gör att du kan bygga och köra kommandon.

För mer detaljerad information om varje xargs alternativ, läs xargs man-sidan.

xargs terminal