Using xargs in Linux
Sommario:
- Come usare il comando
xargs
Linux - Come visualizzare il comando e richiedere all'utente
- Come limitare il numero di argomenti
- Come eseguire più comandi
- Come specificare un delimitatore
- Come leggere gli elementi dal file
- Utilizzo di
xargs
confind
- Uso di xargs per tagliare i caratteri degli spazi bianchi
- Conclusione
L'utilità
xargs
consente di creare ed eseguire comandi dall'input standard. Di solito viene utilizzato in combinazione con altri comandi tramite tubazioni.
Con
xargs
, è possibile fornire input standard come argomento alle utility della riga di comando come
mkdir
e
rm
.
In questo tutorial, tratteremo le basi dell'uso del comando
xargs
.
Come usare il comando
xargs
Linux
xargs
legge gli argomenti dall'input standard, separato da spazi vuoti o newline, ed esegue il comando specificato usando l'input come argomento del comando. Se non viene fornito alcun comando, il valore predefinito è
/bin/echo
.
La sintassi per il comando
xargs
è la seguente:
xargs]
L'esempio più basilare dell'uso di
xargs
sarebbe passare diverse stringhe separate da spazi bianchi usando una pipe a
xargs
ed eseguire un comando che userà quelle stringhe come argomenti.
echo "file1 file2 file3" | xargs touch
Nell'esempio sopra, eseguiamo il piping dell'input standard su
xargs
e il comando
touch
viene eseguito per ogni argomento, creando tre file. È lo stesso che se avessi eseguito:
Come visualizzare il comando e richiedere all'utente
Per stampare il comando sul terminale prima di eseguirlo, utilizzare l'opzione
-t
(
--verbose
):
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
echo "file1 file2 file3" | xargs -p touch
Digitare
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.
L'opzione
-n
(
--max-args
) 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.
Nel seguente esempio, il numero di argomenti letti dall'input standard è 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
, utilizzare l'opzione
-I
. Funziona definendo una
replace-str
dopo l'opzione
-I
e tutte le occorrenze della
replace-str
vengono sostituite con l'argomento passato a xargs.
Il seguente esempio di
xargs
eseguirà due comandi, prima creerà i file usando
touch
, quindi elencherà i file con il comando
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
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
Utilizzare l'opzione
-d
(
--delimiter
) per impostare un delimitatore personalizzato, che può essere un singolo carattere o una sequenza di escape che inizia con
\
.
Il seguente esempio che stiamo usando
;
come delimitatore:
echo "file1;file2;file3" | xargs -d ; -t touch
Come leggere gli elementi dal file
Il comando xargs può anche leggere elementi da un file anziché dallo standard input. Per fare ciò, usa l'opzione
-a
(
--arg-file
) seguita dal nome del file.
Nel seguente esempio, il comando
xargs
leggerà il file
ips.txt
e
ips.txt
il ping di ciascun indirizzo IP.
8.8.8.8 1.1.1.1
Stiamo anche usando l'opzione
-L 1
, che indica a
xargs
di leggere una riga alla volta. Se questa opzione viene omessa,
xargs
passerà tutti gli IP a un singolo comando
ping
.
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
viene spesso utilizzato in combinazione con il comando
find
. Puoi usare
find
per cercare file specifici e quindi usare
xargs
per eseguire operazioni su quei file.
Per evitare problemi con i nomi di file che contengono newline o altri caratteri speciali, utilizzare sempre l'opzione find
-print0
, che consente a
find
di stampare il nome file completo seguito da un carattere null. Questo output può essere interpretato correttamente da
xargs
usando l'opzione
-0
, (
--null
).
Nel seguente esempio,
find
stamperà i nomi completi di tutti i file all'interno della directory
/var/www/.cache
e
xargs
passerà i percorsi dei file al comando
rm
:
find /var/www/.cache -type f -print0 | xargs -0 rm -f
Uso di xargs per tagliare i caratteri degli spazi bianchi
xargs
può anche essere usato come strumento per rimuovere spazi bianchi da entrambi i lati di una determinata stringa. Basta reindirizzare la stringa al comando
xargs
, 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]; 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.
Conclusione
xargs
è un'utilità della riga di comando su Linux che consente di creare ed eseguire comandi.
Per informazioni più dettagliate su ciascuna opzione di
xargs
, leggi la pagina man di xargs.
Cogli la riga di comando con il comando Take

Integra il prompt dei comandi, la GUI e un potente linguaggio batch con il potente toolkit Take Command.
Comando chmod in linux (permessi dei file)

In Linux l'accesso ai file è gestito attraverso le autorizzazioni, gli attributi e la proprietà dei file. Questa esercitazione illustra come utilizzare il comando chmod per modificare le autorizzazioni di accesso a file e directory.
Comando chgrp in linux (cambia gruppo)

In Linux, ogni file è associato a un proprietario e un gruppo e dispone di autorizzazioni che determinano quali utenti possono leggere, scrivere o eseguire il file. Il comando chgrpc modifica la proprietà del gruppo di determinati file.