English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
xargs (nom complet en anglais : eXtended ARGuments) est un filtre pour transmettre des paramètres aux commandes, et aussi un outil pour combiner plusieurs commandes.
xargs peut convertir les données de tube ou stdin en arguments de ligne de commande, et peut également lire les données de la sortie du fichier.
xargs peut également convertir les entrées de texte en ligne unique ou en plusieurs lignes en d'autres formats, par exemple, plusieurs lignes en une ligne, une ligne en plusieurs lignes.
La commande par défaut de xargs est echo, ce qui signifie que les entrées transmises à xargs via un tube contiennent des retours chariot et des espaces, mais après le traitement de xargs, les retours chariot et les espaces sont remplacés par des espaces.
xargs est une commande puissante qui peut capturer la sortie d'une commande et la transmettre à une autre commande.
La raison pour laquelle cette commande peut être utilisée est principalement due au fait que de nombreux commandes ne supportent pas le tube (pipe) pour transmettre des paramètres, mais il y a besoin de cela dans les activités quotidiennes, donc il y a la commande xargs, par exemple :
find /sbin -perm +700 |ls -l #Cette commande est incorrecte find /sbin -perm +700 |xargs ls -l #C'est ainsi que c'est correct
xargs est généralement utilisé avec un tube (pipe).
Format de commande :
somecommand |xargs -item command
Paramètres :
-a file lire à partir du fichier en tant que stdin
-e flag, attention, parfois cela peut être-E, le flag doit être un indicateur composé d'espaces, et xargs s'arrête lorsque cet indicateur contenant 'flag' est analysé.
-p Chaque fois qu'un argument est exécuté, il est demandé à l'utilisateur.
-n num après l'ajout de nombre, cela signifie que le nombre d'arguments utilisés par la commande à l'exécution à chaque fois est de num, par défaut, utilise tous.
-t signifie d'abord imprimer la commande, puis l'exécuter.
-ou-Je, cela dépend du soutien de Linux, nomme chaque élément de xargs, généralement assigné ligne par ligne à {}, on peut utiliser {} à la place.
-r no-run-if-empty lorsque l'entrée de xargs est vide, arrête xargs et n'a plus besoin d'exécuter.
-s num le nombre maximum de caractères de la ligne de commande, cela fait référence au nombre maximum de caractères de la ligne de commande de la commande après xargs.
-L num lit num lignes du flux standard d'entrée et les envoie à la commande command.
-l identique -L.
-d delimiteur, le délimiteur par défaut de xargs est le retour chariot, le délimiteur des arguments est l'espace, ici, nous changeons le délimiteur de xargs.
-x exit signifie principalement qu'il travaille avec-s utilise..
-P modifie le nombre maximum de processus, la valeur par défaut est1,quand c'est 0, c'est 'autant que possible', je n'ai pas pensé à cet exemple, je ne l'utilise probablement pas souvent, non ?
xargs agit en tant qu'outil de remplacement, lit les données d'entrée, les reformate et les sort.
Définir un fichier de test contenant des données de texte multilignes :
# 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
Entrée multiligne, sortie en une ligne :
# 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
-Sortie multiligne de l'option n :
# 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'option d permet de définir un délimiteur personnalisé :
# echo "nameXnameXnameXname" | xargs -dX name name name name
Combiné -Utilisation de l'option n :
# echo "nameXnameXnameXname" | xargs -dX -n2 name name name name
Lecture stdin, transmission des paramètres formatés à la commande
Assumons une commande sk.sh et un fichier arg.txt pour stocker les paramètres :
#!/bin/bash # sk.sh commande, affiche tous les paramètres. echo $*
Contenu du fichier arg.txt :
# cat arg.txt aaa bbb ccc
une option de xargs -Je, utilise -I Spécifiez une chaîne de remplacement {} qui sera remplacée lors de l'extension xargs. -I Utilisez xargs avec chaque commande de paramètre sera exécutée une fois :
# cat arg.txt | xargs -I {} ./sk.sh -p {} -l -p aaa -l -p bbb -l -p ccc -l
Copier tous les fichiers images dans /data/Dans le répertoire images :
ls *.jpg | xargs -n1 -I {} cp {} /data/images
xargs avec find
Lorsque vous supprimez trop de fichiers avec rm, vous pouvez obtenir un message d'erreur :/bin/rm Argument list too long. Utilisez xargs pour éviter ce problème :
find . -type f -name "*.log" -print0 | xargs -0 rm -f
xargs -0 Utilisez \0 comme délimiteur.
Compter le nombre de lignes de tous les fichiers php dans un répertoire de source :
find . -type f -name "*.php" -print0 | xargs -0 wc -l
Recherche de tous les fichiers jpg et leur compression :
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
applications autres xargs
Si vous avez un fichier qui contient beaucoup d'URL que vous souhaitez télécharger, vous pouvez utiliser xargs pour télécharger tous les liens :
# cat url-list.txt | xargs wget -c