English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
xargs (inglese: eXtended ARGuments) è un filtro per passare parametri ai comandi e uno strumento per combinare più comandi.
xargs può convertire i dati di tubo o stdin in argomenti di riga di comando, e anche leggere i dati dall'output del file.
xargs può anche convertire l'input di testo su una riga o su più righe in altri formati, ad esempio, più righe in una riga, una riga in più righe.
Il comando predefinito di xargs è echo, il che significa che l'input trasmesso a xargs tramite il tubo contiene newline e spazi, ma tramite il processo di xargs, newline e spazi vengono sostituiti dagli spazi.
xargs è un comando potente che può catturare l'output di un comando e trasmetterlo a un altro comando.
La ragione per cui possiamo utilizzare questo comando è principalmente perché molti comandi non supportano il tubo (pipe) per passare parametri, ma c'è bisogno di questo nella vita quotidiana, quindi è stato creato il comando xargs, ad esempio:
find /sbin -perm +700 |ls -l # Questo comando è errato find /sbin -perm +700 |xargs ls -l # Questo è corretto
xargs viene generalmente utilizzato insieme al tubo (pipe).
Formato del comando:
somecommand |xargs -item command
Parametri:
-a file Leggere dal file come stdin
-e flag, notare che a volte potrebbe essere -E, flag deve essere un flag separato da spazi, quando xargs analizza un flag contenente flag, interrompe.
-p Chiedere all'utente di confermare ogni volta che si esegue un argumento.
-n num Aggiungere il numero dietro per indicare il numero di argumenti utilizzati per volta durante l'esecuzione del comando, il valore predefinito è utilizzare tutti gli argumenti.
-t Stampa il comando prima di eseguirlo.
-i oppure -I, dipende dal supporto di Linux, assegnare ogni nome dell'elemento di xargs, di solito una riga alla volta, a {}, può essere sostituito con {}.
-r no-run-if-empty Quando l'input di xargs è vuoto, fermare xargs senza eseguire ulteriori operazioni.
-s num il numero massimo di caratteri della riga di comando, si riferisce al numero massimo di caratteri della riga di comando del comando dopo xargs.
-L num legge num righe dalla standard input e le invia al comando
-l è lo stesso di -L.
-d delim delimitatore, il delimitatore predefinito di xargs è il ritorno a capo, il delimitatore degli argomenti è lo spazio, qui si modifica il delimitatore di xargs.
-x l'exit significa, principalmente utilizzato con -s...
-P modifica il numero massimo di processi, il valore predefinito è 1, 0 significa 'quanti ne posso', questo esempio non l'ho pensato, dovrebbe essere utilizzato di solito, vero?
xargs viene utilizzato come strumento di sostituzione, legge i dati di input, li formatta e li output.
Definire un file di test contenente dati multilinia.
# cat test.txt a b c d e f g h i j k l m n o p q r s t u v w x y z
Input multilinea output singola riga:
# cat test.txt | xargs a b c d e f g h i j k l m n o p q r s t u v w x y z
L'opzione -n per l'output a multilinea:
# cat test.txt | xargs -n3 a b c d e f g h i j k l m n o p q r s t u v w x y z
L'opzione -d può definire un delimitatore personalizzato:
# echo "nameXnameXnameXname" | xargs -dX name name name name
Combina l'opzione -n:
# echo "nameXnameXnameXname" | xargs -dX -n2 name name name name
Legge stdin, passing parameteri formattati al comando
Supponiamo un comando sk.sh e un file di salvataggio dei parametri arg.txt:
#!/bin/bash #sk.sh comando contenente, stampa tutti i parametri. echo $*
Contenuto del file arg.txt:
# cat arg.txt aaa bbb ccc
Un'opzione di xargs -I, che utilizza -I per specificare una stringa di sostituzione {} che verrà sostituita durante l'estensione di xargs. Quando -I viene utilizzato con xargs, ogni comando parametrizzato viene eseguito una volta:
# cat arg.txt | xargs -I {} ./sk.sh -p {} -l -p aaa -l -p bbb -l -p ccc -l
Copy all image files to the /data/images directory:
ls *.jpg | xargs -n1 -I {} cp {} /data/images
xargs combined with find usage
When you delete too many files with rm, you may get an error message:/bin/rm Argument list too long. Use xargs to avoid this problem:
find . -type f -name "*.log" -print0 | xargs -0 rm -f
xargs -0 uses \0 as delimiter.
Count the number of lines in all php files in a source code directory:
find . -type f -name "*.php" -print0 | xargs -0 wc -l
Find all jpg files and compress them:
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
Other Applications of xargs
If you have a file that contains many URLs you want to download, you can use xargs to download all links:
# cat url-list.txt | xargs wget -c