GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Xargs in Linux

Il xargs l'utilità consente di creare ed eseguire comandi dallo standard input. Di solito viene utilizzato in combinazione con altri comandi tramite piping.

Con xargs , puoi fornire un input standard come argomento alle utilità della riga di comando come mkdir e rm .

In questo tutorial, tratteremo le basi dell'utilizzo di xargs comando.

Come usare Linux xargs Comando #

xargs legge gli argomenti dallo standard input, separati da spazi vuoti o nuove righe, ed esegue il comando specificato utilizzando l'input come argomenti del comando. Se non viene fornito alcun comando, l'impostazione predefinita è /bin/echo .

La sintassi per xargs il comando è il seguente:

xargs [OPTIONS] [COMMAND [initial-arguments]]

L'esempio più semplice di utilizzo di xargs sarebbe passare diverse stringhe separate da spazi bianchi usando una pipe a xargs ed esegui un comando che utilizzerà quelle stringhe come argomenti.

echo "file1 file2 file3" | xargs touch

Nell'esempio sopra, stiamo reindirizzando l'input standard a xargs e il touch il comando viene eseguito per ogni argomento, creando tre file. È come se eseguissi:

touch file1 file2 file3

Come visualizzare il comando e richiedere all'utente #

Per stampare il comando sul terminale prima di eseguirlo utilizzare il -t (--verbose ) opzione:

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

Se vuoi ricevere una richiesta se eseguire ciascun comando prima di eseguirlo, usa il -p (--interactive ) opzione:

echo  "file1 file2 file3" | xargs -p touch

Digita y o Y per confermare ed eseguire il comando:

touch file1 file2 file3 ?...y

Questa opzione è utile quando si eseguono comandi distruttivi.

Come limitare il numero di argomenti #

Per impostazione predefinita, il numero di argomenti passati al comando è determinato dal limite del sistema.

Il -n (--max-args ) l'opzione specifica il numero di argomenti da passare al comando dato. xargs esegue il comando specificato tutte le volte necessarie fino all'esaurimento di tutti gli argomenti.

Nell'esempio seguente, il numero di argomenti letti dallo standard input è limitato a 1.

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

Come puoi vedere dall'output dettagliato di seguito, il comando touch viene eseguito separatamente per ogni argomento:

touch file1
touch file2
touch file3

Come eseguire più comandi #

Per eseguire più comandi con xargs , usa il -I opzione. Funziona definendo un replace-str dopo il -I opzione e tutte le occorrenze di replace-str vengono sostituiti con l'argomento passato a xargs.

Il seguente xargs example eseguirà due comandi, prima creerà i file usando touch , quindi elencherà i file con ls comando:

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

Una scelta comune per replace-str è % . Tuttavia, puoi utilizzare un altro segnaposto, ad esempio ARGS :

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

Come specificare un delimitatore #

Usa -d (--delimiter ) opzione per impostare un delimitatore personalizzato, che può essere un singolo carattere o una sequenza di escape che inizia con \ .

Nell'esempio seguente stiamo usando ; come delimitatore:

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

Come leggere gli elementi dal file n.

Il comando xargs può anche leggere gli elementi da un file invece dello standard input. Per farlo, usa il -a (--arg-file ) seguita dal nome del file.

Nell'esempio seguente, xargs il comando leggerà il ips.txt file ed esegui il ping di ogni indirizzo IP.

ips.txt
8.8.8.8
1.1.1.1

Stiamo anche usando il -L 1 opzione, che indica xargs per leggere una riga alla volta. Se questa opzione viene omessa xargs passerà tutti gli IP a un singolo ping comando.

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

Utilizzo di xargs con find #

xargs è più spesso usato in combinazione con find comando. Puoi usare find per cercare file specifici e quindi utilizzare xargs per eseguire operazioni su quei file.

Per evitare problemi con i nomi dei file che contengono nuove righe o altri caratteri speciali, usa sempre trova -print0 opzione, che causa find per stampare il nome completo del file seguito da un carattere nullo. Questo output può essere interpretato correttamente da xargs usando il -0 , (--null ) opzione.

Nell'esempio seguente, find stamperà i nomi completi di tutti i file all'interno di /var/www/.cache directory e xargs passerà i percorsi dei file a rm comando:

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

Utilizzo di xargs per tagliare i caratteri degli spazi bianchi #

xargs può anche essere usato come strumento per rimuovere gli spazi bianchi da entrambi i lati di una determinata stringa. Basta reindirizzare la stringa a xargs comando, e farà il taglio:

echo "  Long line " | xargs
Long line

Questo può essere utile quando si confrontano stringhe negli script di shell.

#!/bin/bash

VAR1=" Linuxize "
VAR2="Linuxize"

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

## Using xargs to trim VAR1
if [[ $(echo "$VAR1" | xargs) == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi
Strings are not equal.
Strings are equal.

Conclusione #

xargs è un'utilità della riga di comando su Linux che consente di creare ed eseguire comandi.

Per informazioni più dettagliate su ogni xargs opzione, leggi la manpage di xargs.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. 11 Esempi di comandi Xargs in Linux

  2. comando IP Linux

  3. comando cd di Linux

  4. 10 Esempi di comandi Xargs in Linux / UNIX

  5. Esempi di comandi xargs in Linux

Tipo di comando Linux

Linux quale comando

Comando W in Linux

Al comando in Linux

Comando Df in Linux

Esempi di comandi xargs di Linux