Come utilizzare i comandi Bash xargs
“xargs è un comando bash che consente l'esecuzione di più comandi sulla stessa riga. Sia che i comandi prendano parametri o argomenti come input, possono essere eseguiti nella stessa riga se combinati con xargs. Con xargs, puoi creare ed eseguire più comandi tramite l'input standard, poiché xargs può prendere un input e convertirlo in un argomento di comando da utilizzare dal comando successivo. "
Per aiutarti a comprendere xargs e come utilizzarlo, questo articolo fornirà più esempi di utilizzo del comando xargs. Guarda!
Come utilizzare il comando xargs
Il modo in cui usi il comando xargs dipende da cosa vuoi ottenere. Se usi xargs senza input, riprodurrà tutto ciò che digiti sul terminale dopo aver premuto CTRL + D
Gestione di file e directory utilizzando xargs
Se vuoi trovare tutti i file con una determinata estensione, puoi usare xargs. Facciamo un esempio di utilizzo di ls con xargs per file di testo.
Nel comando precedente, utilizziamo il comando trova per cercare file nella directory corrente con estensione .txt.
Ecco il risultato
Se desideri eliminare tutti i file che abbiamo trovato utilizzando il comando sopra, puoi utilizzare il comando seguente.
Il flag -t indica verboso.
Supponiamo di voler creare più directory in cui aggiungere l'input dallo standard input. Potremmo combinare mkdir con echo, come nell'esempio seguente.
Se volessi rimuovere tutte le directory nella directory corrente, potresti usare xargs, come mostrato di seguito.
Xargs legge l'input da un file
Usando il flag -a , puoi istruire xargs a leggere elementi da un file, come nel caso seguente.
Con lo stesso esempio, possiamo dimostrare come combinare più comandi utilizzando xargs. Per questo, usa il flag -I.
Ad esempio, potremmo usare il comando seguente per leggere il contenuto di un file e creare una directory utilizzando ogni stringa nel file.
Puoi portare ulteriormente il comando per visualizzare in eco il contenuto del file durante la creazione della directory aggiungendo il comando echo, come mostrato di seguito.
Utilizzo di xargs con grep
Il comando grep viene utilizzato per la corrispondenza dei modelli e quando desideri cercare una determinata stringa in vari file, puoi utilizzare xargs per combinare find con grep, dove l'output di find verrà convertito nell'input che verrà utilizzato da grep.
Ecco un esempio in cui troviamo tutti i file di testo contenenti la stringa "linux-console."
Limitazione dell'output per linea
Supponiamo di voler leggere il contenuto di un file. Potresti limitare il numero di output per ciascuna riga utilizzando l'opzione -n .
Facciamo un esempio di stampa di numeri in un dato intervallo utilizzando il comando seq e limitiamo l'output per riga a 4
Specifica del delimitatore
Per impostazione predefinita, xargs assume uno spazio vuoto come delimitatore. Tuttavia, se devi utilizzare un altro delimitatore, devi utilizzare il comando -d seguito dal delimitatore.
Ecco un esempio che utilizza i due punti come delimitatore quando si lavora con un file per leggerne il contenuto e creare directory utilizzando le stringhe nel file.
Ecco il contenuto del nostro file.
Ora eseguiamo il comando seguente.
L'output sarebbe:
Il delimitatore nullo
Se provassimo a utilizzare xargs con file con spazi vuoti nei nomi, otterremmo risultati errati poiché xargs utilizza uno spazio vuoto come delimitatore. In tal caso, dobbiamo utilizzare il flag -0 , che segnala a xargs di utilizzare il delimitatore nullo. Inoltre, abbiamo bisogno del flag -print0 , che viene utilizzato da find per indicare un elenco separato da null.
Ad esempio, supponiamo di avere i file di immagine seguenti.
Se provassimo a eliminare tutti i file utilizzando il comando seguente, xargs stamperebbe solo i file immagine senza spazi nel nome, come mostrato di seguito.
Per superare questo problema, dobbiamo utilizzare il flag -0 e -print0.
Possiamo verificare di aver eliminato con successo tutti i file.
Conclusione
Questa guida ha trattato in modo approfondito il comando bash xargs, fornendo esempi di come utilizzarlo per ottenere vari aspetti. Facendo riferimento agli esempi presentati, puoi implementare xargs per eseguire varie attività. Inoltre, controlla la pagina man di xargs per ottenere maggiori dettagli sull'utilizzo.