Come utilizzare xargs per elaborare argomenti con pipe in Linux
Scopri come convertire l'input standard in argomenti della riga di comando con xargs.
Se provi a reindirizzare l'output da un comando Linux a un altro, potresti incorrere in errori in cui il comando fallisce perché il suo elenco di argomenti è troppo lungo.
Fortunatamente, c'è un comando sui sistemi Linux che formatta correttamente gli argomenti in comandi. Si chiama xargs ed ecco come usarlo.
Perché usare xargs?
Ciò che xargs fa è che riceve l'output standard e lo formatta in modo che un altro comando possa riceverlo. Sebbene molte utilità Linux possano accettare input standard, alcune accettano solo argomenti come input.
Questi potrebbero non riuscire se si tenta di reindirizzare l'input standard al comando. Alcuni comandi accettano ancora solo un certo numero di argomenti e xargs se ne occupa per te.
Come usare xargs su Linux
Puoi chiamare xargs in questo modo:
xargs [command]
xargs tiene traccia della lunghezza degli argomenti accettati da un comando e formatta l'input standard per produrre un elenco di argomenti da fornire al comando. Quando raggiunge il limite di una riga di comando, richiamerà nuovamente il comando con gli argomenti rimanenti.
Utilizzo di xargs nelle pipeline
L'utilità di xargs arriva quando viene utilizzata nelle pipeline. Un esempio artificioso potrebbe essere il piping cat su echo, che è un comando che accetta solo argomenti, non input standard.
cat | echo
Ciò farà sì che echo stampi tutto ciò che digiti su una riga non appena premi Ctrl + D.
xargs è più comunemente usato con il comando find, con il comando find usato per elencare i file e xargs usato per elaborare l'elenco dei file in qualche modo.
La sintassi del comando find è abbastanza pelosa, quindi perché inserire un altro comando? Se usi l'opzione "-exec" di find, avvierà un nuovo processo ogni volta che cerca un file nella directory. L'uso di xargs è più efficiente.
Potresti voler eliminare i file in una directory che sono più vecchi di una certa data, ad esempio 90 giorni. Per fare ciò, utilizzeresti questa pipeline:
find . -mtime +90 -print | xargs rm
xargs aiuta i comandi di Linux a elaborare correttamente l'input
Con xargs, ora puoi assicurarti che i comandi accettino gli argomenti nel modo in cui ti aspetti. In combinazione con find, ti consentirà di elaborare rapidamente i file sulla tua macchina.
La capacità di reindirizzare l'input e l'output nella shell è uno dei punti di forza duraturi di Linux come conseguenza della filosofia Unix. Se vuoi saperne di più su come funziona il reindirizzamento input/output di Linux, continua a leggere.