xargs pour les débutants avec des exemples
- 4183
- 972
- Victor Charpentier
En utilisant xargs
, Décrit dans le manuel Linux Xargs comme un outil qui construit et exécute les lignes de commande à partir de l'entrée standard, peut-il exercer une quantité importante de puissance supplémentaire sur toute autre commande exécutée sur la ligne de commande bash. Essentiellement, xargs
prendra la sortie de tout autre outil, et l'utilisera car sa propre entrée pour un traitement et une action supplémentaires (d'où la référence à l'exécution de lignes de commande dans le manuel). Si c'est vos premières semaines ou mois avec xargs
, ou vous commencez juste, c'est le meilleur endroit pour vous entrer dans xargs
.
Dans ce tutoriel, vous apprendrez:
- Comment utiliser
xargs
de la ligne de commande à bash - Comment
xargs
fonctionne, ce qu'il fait et comment bien l'utiliser - Exemples d'utilisation de base en utilisant
xargs
de la ligne de commande à bash
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | Indépendant de la distribution Linux |
Logiciel | Ligne de commande bash, système basé sur Linux |
Autre | Le xargs L'utilité est incluse dans la coquille de bash par défaut |
Conventions | # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - Exige que les commandes données sont exécutées en tant qu'utilisateur non privilégié régulier |
Exemple 1: un simple début
Plongeons tout de suite avec un simple xargs
exemple:
$ echo '1'> 1 $ echo '2'> 2 $ echo '3'> 3 $ ls 1 2 3 $ ls | xargs chat 1 2 3
Dans cet exemple, nous avons rapidement créé 3 fichiers en faisant écho à un nombre, puis en redirigeant la sortie (en utilisant >
) à 3 fichiers individuels nommés 1
pour 3
. Après cela, nous avons vérifié l'existence des fichiers avec le LS
Commande (répertorier les contenus du répertoire).
Dans la dernière commande, nous avons utilisé le LS
et tuyaux (en utilisant |
) c'est la sortie de xargs
. Après le xargs
Commande Nous avons répertorié la nouvelle commande que nous voulions xargs
éxécuter pour toute entrée qu'il a reçue, individuellement par entrée, dans ce cas chat
(qui publie le contenu d'un fichier).
Fondamentalement, la commande ci-dessus est analogue à l'ensemble de commandes suivant (bien que si le contenu du répertoire change, il ne serait plus analogue comme le xargs
comprendra simplement de nouvelles entrées de répertoire):
$ chat 1 1 $ chat 2 2 $ chat 3 3
Exemple 2: un peu plus complexe
$ ls --color = jamais | xargs -i chat 1 2 3
Ici, nous avons ajouté quelques idiomes de syntaxe bash (un idiome est une construction / expression de langage) pour améliorer considérablement la qualité et peut-être la lisibilité du même script à une ligne, bien que la sortie - dans ce cas - soit restée la même.
Le -JE
option de xargs
définit un remplacer chaîne qui sera utilisée à l'intérieur de la commande xargs pour insérer, au point où la chaîne de remplacement est à nouveau utilisée, l'entrée reçue, et celle pour chaque entrée individuellement - i.e. la commande spécifiée après le xargs
La commande sera exécutée pour chaque entrée individuellement.
Le --color = jamais
L'ajout rend la sortie générée par le LS
commande (et donc l'entrée du xargs
commande) beaucoup plus sûr.
Exemple 3: sortie buggy
Dans le dernier exemple, nous avons introduit --color = jamais
En tant qu'option recommandée. Regardons un exemple de la façon dont - sans cette option - nous pouvons rencontrer des problèmes:
$ mkdir 1 2 3 $ ls 1 2 3 $ ls | xargs ls ls: ne peut pas accéder "
Sortie intéressante 🙂 Alors ce qui s'est passé ici?
Nous avons d'abord créé trois répertoires, 1
pour 3
, et a ensuite vérifié sa création. Remarquez que la sortie est bleu foncé, gracieuseté de Bash Shell Colors, qui sont configurées par défaut, par exemple Ubuntu.
Ensuite, nous avons pris la production de LS
et l'a passé à xargs
qui à son tour l'a ramené à LS
. Similaire à 'Echo 1 | ls 'on s'attendrait. Mais cela n'a pas fonctionné! Au lieu de cela, nous avons reçu un ensemble de codes couleur Backr. Quiconque le voit pour la première fois aurait du mal à le relier à des codes couleur.
Ajout d'une option simple --color = jamais
désinfecté le LS
la sortie comme une entrée plus appropriée pour xargs
, Et la sortie semble comme prévu: pour les répertoires 1
pour 3
, comme sortie par le LS
Commande, énumérez le contenu (i.e. semblable à ls 1; ls 2; LS3
).
Exemple 4: analyse de texte avec xargs et sed
$ echo -e '1 \ n2 \ n3'> Tester $ Cat Test 1 2 3 $ ls test $ ls --color = jamais | xargs -i cat | sed 'S | [2-3] | 0 |' 1 0 0 $ ls --color = jamais | xargs -i cat | sed 'S | [2-3] | 0 |' | xargs -i grep $ (ls) 1
Un exemple un peu plus difficile, mais vous le comprendrez bientôt.
La première commande a simplement créé un fichier avec trois lignes (\ n
crée une nouvelle ligne, et le -e
L'option pour faire écho permet au \ n
à utiliser). Ensuite, nous publions le contenu du fichier en utilisant chat
, et vérifié combien de fichiers étaient présents en utilisant LS
(un seul; le test
fichier que nous avons créé).
Ensuite, nous avons notre commande Juicy Xargs, qui - comme vous le savez à partir d'exemples précédents - prend la liste du répertoire, l'envoie à xargs
et sort le contenu de chaque fichier passé en utilisant chat
. Ensuite, nous avons un petit sed
commande qui remplace les nombres 2
et 3
à 0. La sortie est le contenu complet du fichier de test, mais avec le 2
et 3
changé en 0
comme indiqué.
Enfin, nous prenons la même commande et la transmettons à un autre xargs
. Pensez-y comme ça; visuellement (dans votre esprit) voir le 1
, 0
, 0
la sortie de la commande précédente en cours de tuyau|
) dans la finale xargs
sans la complexité précédente. Voyez comment vous pouvez créer des commandes très complexes progressivement comme celle-ci? Cela montre également la puissance de xargs
en un mot, bien que beaucoup plus est possible.
Dans la commande finale, nous passons cela 1
, 0
, 0
sortie dans grep
, qui fouillera le contenu de $ (ls)
. $ ()
démarre une sous-coquille, exécute la commande de la commande et insère la sortie de cette commande à l'endroit où la sous-coquille a été appelée. En d'autres termes, nous exécutons:
grep '1' ./ tester grep '0' ./ tester grep '0' ./test
Et les résultats sont en effet comme prévu; 1
seulement, car il n'y avait pas de zéros dans le fichier pour commencer.
Conclusion
Dans cet article, nous avons examiné les bases du xargs
commande et quelques exemple de comment xargs
Peut être utilisé, y compris l'analyse de texte et la manipulation de la liste des répertoires. Mon prochain article sera sur plus avancé xargs
utilisation, y compris des exemples supplémentaires.
Apprécier xargs
Et laissez-nous un commentaire avec votre plus cool xargs
lignes de commande ou scripts!
Tutoriels Linux connexes:
- Exemples sur la façon d'utiliser la commande xargs sur Linux
- Xargs multithreads avec des exemples
- Choses à installer sur Ubuntu 20.04
- Boucles imbriquées dans les scripts bash
- Masterring Bash Script Loops
- Une introduction à l'automatisation Linux, des outils et des techniques
- Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
- Commandes Linux de base
- Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
- Exemples de liner complexe Linux Bash