Ricerca nel sito web

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.

  1. 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 comando ls per recuperare i nomi dei file e quindi passare tali nomi a cat utilizzando xargs.

    
    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 
    
  2. 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
    
  3. 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 comando rm con xargs, poiché non si desidera eliminare accidentalmente alcun file. È possibile immettere y (sì) per confermare l'esecuzione del comando o n (no) per interromperlo.

    
    ls | xargs -p rm
    rm 1.txt 2.txt 3.txt ?...y
    
  4. 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 comando cat 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 esegue cat 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 usassimo invece -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
    
  5. 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 poi cat sui nostri tre file, i cui nomi vengono passati a xargs da ls.

    
    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
    
  6. 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 quindi cat 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
    


  7. 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 comando xargs. Ecco un esempio in cui cerchiamo i file .txt ed eseguiamo cat 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.

Articoli correlati: