Présentation
Certaines commandes Linux prennent en entrée à la fois l'entrée standard (stdin) et un argument de ligne de commande. Cependant, d'autres sont conçus pour accepter l'entrée uniquement comme argument. Pour pouvoir traiter l'entrée standard, ces commandes Linux doivent utiliser le xargs
commande.
Dans ce didacticiel, vous apprendrez à utiliser Linux xargs
commande pour manipuler l'entrée standard et travailler avec d'autres commandes.
Prérequis
- Un système exécutant Linux
- Accès à la ligne de commande
Qu'est-ce que la commande xargs ?
Les xargs
command construit et exécute les commandes fournies via l'entrée standard. Il prend l'entrée et la convertit en argument de commande pour une autre commande. Cette fonctionnalité est particulièrement utile dans la gestion de fichiers, où xargs
est utilisé en combinaison avec rm
, cp
, mkdir
, et d'autres commandes similaires.
Comment utiliser la commande xargs avec des exemples
Lorsqu'il est utilisé seul, xargs
invite l'utilisateur à saisir une chaîne de texte qu'il transmet ensuite au echo
commande.
L'exemple montre un exemple d'entrée, suivi de la sortie du echo
commande.
Combiner xargs avec find
La commande find précède souvent xargs
dans une canalisation. Utilisez-le pour fournir une liste de fichiers pour un traitement ultérieur par xargs
. La syntaxe ressemble à ceci :
find [location] -name "[search-term]" -type f | xargs [command]
L'exemple ci-dessus illustre l'utilisation de find
commande pour trouver tous les fichiers avec le .sh
extension. La liste des fichiers est ensuite redirigée vers xargs
, qui utilise le rm
commande pour les supprimer.
Cependant, xargs
n'inclut pas automatiquement les fichiers contenant des espaces vides dans leurs noms. Pour inclure également ces fichiers, utilisez le -print0
option pour find
, et le -0
option pour xargs
:
find [location] -name "[search-term]" -type f -print0 | xargs -0 [command]
rm
supprime maintenant tous les fichiers avec le .sh
extension.
Combiner xargs avec grep
Utilisez xargs
avec la commande grep pour rechercher une chaîne dans la liste des fichiers fournis par le find
commande.
find . -name '[search-term]' | xargs grep '[string-to-find-in-files]'
L'exemple ci-dessus a recherché tous les fichiers avec le .txt
extension et les a dirigés vers xargs
, qui a ensuite exécuté le grep
commande sur eux.
Commandes multiples Xargs
Pour exécuter plusieurs commandes avec xargs
, utilisez le -I
option. La syntaxe est :
[command-providing-input] | xargs -I % sh -c '[command-1] %; [command-2] %'
Dans l'exemple, le contenu de file4.txt
ont été affichés en premier. Puis mkdir
créé un dossier pour chaque mot du fichier.
Lire les éléments du fichier
Comme mentionné précédemment, xargs
lit l'entrée standard. Utilisez le -a
option pour lire le contenu d'un fichier à la place.
xargs -a [filename]
Rechercher et archiver des images à l'aide de tar
Lorsqu'il est utilisé avec la commande tar, xargs
crée un tar.gz
archive et le remplit avec les fichiers fournis par le find
commande.
find [location] -name "[search-term]" -type f -print0 | xargs -0 tar -cvzf [tar-gz-archive-name]
Commande d'impression
Pour voir les commandes exécutées par xargs
en sortie standard, utilisez le -t
option.
[command-providing-input] | xargs -t [command]
Dans l'exemple ci-dessus, notez que xargs
exécuté la commande mkdir sur toute la chaîne fournie par echo
.
Approuver l'exécution de la commande xargs
Quelques xargs
les opérations, telles que la suppression de fichiers et de dossiers, sont irréversibles. Pour contrôler l'exécution de ces commandes, utilisez le -p
option.
[command-providing-input] | xargs -p [command]
Lorsque vous exécutez la commande avec le -p
option, xargs
affiche une ligne de confirmation avant de l'exécuter. Tapez y
pour continuer, ou n
pour annuler l'opération.
Limite de sortie par ligne
Parfois il faut contrôler le nombre d'arguments xargs
prend en même temps. Effectuez cette action en utilisant le -n
option suivie du nombre d'arguments que vous limitez xargs
à :
[command-providing-input] | xargs -n [number] [command]
Dans l'exemple ci-dessous, xargs
prend la chaîne de l'echo
commande et la divise en trois. Ensuite, il exécute un autre echo
pour chacune des parties :
Spécifier le délimiteur
Le xargs
par défaut le délimiteur est un espace vide. Pour changer le délimiteur par défaut, utilisez le -d
commande suivie d'un seul caractère ou d'un caractère d'échappement tel que n
(une nouvelle ligne).
[command-providing-input] | xargs -d [new-delimiter] | xargs [command]
Dans l'exemple ci-dessous, les xargs
commande indique au système d'utiliser *
comme délimiteur et appliquez mkdir
à chacun des arguments obtenus.
Répertorier tous les comptes utilisateur Linux sur le système
Utilisez xargs
pour organiser la sortie des commandes, comme cut
. Prenons l'exemple suivant :
cut -d: -f1 < /etc/passwd | sort | xargs
La commande cut accède au /etc/passwd
fichier et utilise le :
délimiteur pour couper le début de chaque ligne dans le fichier. La sortie est ensuite redirigée vers sort
, qui trie les chaînes reçues, et enfin à xargs
qui les affiche :
Supprimer les espaces vides dans la chaîne
Depuis xargs
ignore les espaces vides lors de la recherche d'arguments, la commande est utile pour supprimer les espaces vides inutiles des chaînes.
echo "[string-with-unnecessary-spaces]" | xargs
Liste du nombre de lignes/mots/caractères dans chaque fichier
Utilisez xargs
avec la commande wc pour afficher une liste de fichiers avec le nombre de lignes, de mots et de caractères.
ls | xargs wc
L'exemple ci-dessous indique à la commande ls de diriger vers xargs
uniquement les fichiers contenant le mot « exemple ». xargs
puis appliqué wc
à cette liste :
Copier le fichier dans plusieurs répertoires
Copiez les fichiers dans plusieurs répertoires à l'aide de xargs
commande. La syntaxe est simple :
echo [directory-1] [directory-2] | xargs -n 1 cp -v [filename]
L'echo
La commande fournit des noms de répertoires et xargs
utilise la commande cp pour copier le fichier donné dans chacun des répertoires.