Esempi su come utilizzare il comando xargs su Linux
Il comando xargs Linux consente a un utente di eseguire righe di comando da input standard. Se questo suona confuso, potrebbe essere più facile guardare un esempio di base. Il comando seguente userebbe xargs
per cat
tutti i file elencati dal comando ls
.
ls
1.txt 2.txt 3.txt
ls | xargs cat
this is file1
this is file2
this is file3
Nel comando precedente, abbiamo reindirizzato l'output del comando ls a xargs e abbiamo utilizzato il comando cat per elencare il contenuto in ciascuno dei tre file. La maggior parte degli usi di xargs comporta il reindirizzamento ad esso da un comando diverso e l'utilizzo per eseguire un altro comando in successione. Se vuoi iniziare con ulteriori esempi di base, consulta le nostre guide su xargs per principianti o esempi di xargs multi-thread.
In questa guida, esamineremo vari esempi di riga di comando del comando xargs, in modo che tu possa imparare a usarlo in modo efficace su un sistema Linux. Segui mentre esaminiamo le basi e gli aspetti più complicati del comando xargs.
In questo tutorial imparerai:
- Come utilizzare il comando xargs su Linux, attraverso esempi
Vari esempi di comandi xargs su Linux
Esempi di comandi xargs
Segui gli esempi seguenti per vedere come utilizzare xargs in vari scenari su Linux.
Torniamo al nostro esempio originale per spiegare esattamente cosa succede quando eseguiamo il comando xargs. In questo momento abbiamo tre file di testo e l'obiettivo è visualizzare il contenuto di tutti e tre con il comando
cat
. Poiché questi sono gli unici tre file nella nostra directory corrente, possiamo utilizzare il comandols
per recuperare i nomi dei file e quindi passare tali nomi acat
utilizzandoxargs
.ls | xargs cat this is file1 this is file2 this is file3
Ciò che sta realmente accadendo qui equivale al seguente comando:
cat 1.txt 2.txt 3.txt
Per vedere il comando xargs in esecuzione, è possibile utilizzare l'opzione
-t
. Questo eseguirà comunque il comando, ma ci dà un modo per vedere come il comando finale è stato effettivamente formattato.ls | xargs -t cat cat 1.txt 2.txt 3.txt this is file1 this is file2 this is file3
Possiamo anche utilizzare l'opzione
-p
, che ci chiederà conferma prima di eseguire il comando. Questo è utile da usare, ad esempio, quando si esegue il comandorm
con xargs, poiché non si desidera eliminare accidentalmente alcun file. È possibile immetterey
(sì) per confermare l'esecuzione del comando on
(no) per interromperlo.ls | xargs -p rm rm 1.txt 2.txt 3.txt ?...y
Nell'esempio precedente, xargs esegue
cat 1.txt 2.txt 3.txt
. In altre parole, sta eseguendo un solo comando e tutti i nomi dei file vengono aggiunti. Possiamo fare in modo che xargs esegua ogni comandocat
separatamente utilizzando l'opzione-n
(max arguments). Ecco un esempio in cui abbiamo incluso anche l'opzione-t
, in modo da poter vedere come questo comando eseguecat
tre volte separate, invece di una sola.ls | xargs -t -n 1 cat cat 1.txt this is file1 cat 2.txt this is file2 cat 3.txt this is file3
L'opzione
-n 1
in questo caso sta dicendo a xargs che può utilizzare solo un nome di file alla volta (massimo). Ecco come differirebbe se usassimoinvece -n 2
.ls | xargs -t -n 2 cat cat 1.txt 2.txt this is file1 this is file2 cat 3.txt this is file3
xargs può anche eseguire più comandi se si utilizza l'opzione
-I
. È necessario specificare una "stringa di sostituzione" da utilizzare con questa opzione. Uno molto comune da utilizzare è un segno di percentuale, che usiamo di seguito. Per un semplice esempio, il seguente comando eseguiràtouch
e poicat
sui nostri tre file, i cui nomi vengono passati a xargs dals
.ls | xargs -t -I % sh -c '{ touch %; cat %; }' sh -c '{ touch 1.txt; cat 1.txt; }' this is file1 sh -c '{ touch 2.txt; cat 2.txt; }' this is file2 sh -c '{ touch 3.txt; cat 3.txt; }' this is file3
Un altro uso utile di xargs è la sua capacità di accettare input dai file. Questo viene fatto con l'opzione
-a
. Prendiamo ad esempio il seguente comando in cui passiamo un elenco di nomi di file a xargs e quindicat
quei file.xargs -t -a files.txt cat cat 1.txt 2.txt 3.txt this is file1 this is file2 this is file3
Come probabilmente puoi immaginare, il contenuto di
file.txt
è simile a questo:1.txt 2.txt 3.txt
Uno degli usi più comuni di xargs è quando è combinato con il comando
find
.find
include già l'opzione-exec
quindi è in grado di eseguire comandi su qualsiasi file trovato, ma xargs è molto più efficiente. Nel comando find, è necessario aggiungere l'opzione-print0
in modo che venga stampato un carattere nullo aggiuntivo dopo ogni nome di file. Sarà anche necessario includere un'opzione-0
corrispondente nel comandoxargs
. Ecco un esempio in cui cerchiamo i file .txt ed eseguiamocat
su ciascuno di essi. Ancora una volta, aggiungeremo l'opzione-t
per vedere il comando xargs finisce per essere eseguito.find . -name "*.txt" -print0 | xargs -t -0 cat cat ./3.txt ./2.txt ./1.txt this is file3 this is file2 this is file1
Questi esempi dovrebbero essere sufficienti per aiutarti a ottenere il massimo dal comando xargs. C'è molto che puoi fare con il comando e tonnellate di scenari diversi in cui può tornare utile. Se vuoi saperne di più, ti consigliamo di controllare la pagina man per ulteriori esempi di utilizzo.
man xargs
Pensieri conclusivi
In questa guida, abbiamo visto come utilizzare il comando xargs attraverso vari esempi su Linux. Lo abbiamo combinato con molti altri comandi e abbiamo anche imparato a usarlo per leggere il contenuto di un file. Il comando xargs ha infinite applicazioni diverse e si rivela uno degli strumenti più versatili sulla riga di comando di Linux.