Maison  >  Article  >  Opération et maintenance  >  Explication détaillée des diverses utilisations des techniques de commande xargs sous Linux

Explication détaillée des diverses utilisations des techniques de commande xargs sous Linux

黄舟
黄舟original
2017-05-28 11:39:311661parcourir

xargs est un filtre permettant de transmettre des paramètres aux commandes, et est également un outil permettant de combiner plusieurs commandes. L'article suivant vous présente principalement les informations pertinentes sur l'utilisation de la commande xargs dans linux. Les amis dans le besoin peuvent s'y référer.

Préface

La commande xargs reformate les données reçues puis les fournit comme paramètre à d'autres commandes. xargs est présenté ci-dessous. Prenons un. examinez diverses techniques d’utilisation des commandes.

1. Convertir l'entrée multiligne en entrée monoligne :

[root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt
[root@host1 test]# cat example.txt 
1 2 3 4 5 
6 7 8 
9 10 11 12
[root@host1 test]# cat example.txt |xargs 
1 2 3 4 5 6 7 8 9 10 11 12

Convertir l'entrée monoligne en sortie multiligne :

[root@host1 test]# cat example.txt | xargs -n 3
1 2 3
4 5 6
7 8 9
10 11 12

Personnalisez le délimiteur pour la conversion (le délimiteur par défaut est un espace) :

[root@host1 test]# echo "Hello:Hello:Hello:Hello" | xargs -d : -n 2
Hello Hello
Hello Hello

2. Utilisez-le dans le script :

[root@host1 test]# cat echo.sh 
#!/bin/bash
echo $* '^-^'

Lorsque les paramètres sont transmis à echo.sh, il les imprimera et se terminera par "^-^":

[root@host1 test]# echo -e "Tom\nHarry\nJerry\nLucy" > args.txt
[root@host1 test]# cat args.txt | xargs bash echo.sh 
Tom Harry Jerry Lucy ^-^
[root@host1 test]# cat args.txt | xargs -n 2 bash echo.sh 
Tom Harry ^-^
Jerry Lucy ^-^

Dans l'exemple ci-dessus, nous mettez les sources des paramètres dans le fichier args.txt, mais en plus de ces paramètres, nous avons également besoin de certains paramètres fixes, tels que :

[root@host1 test]# bash echo.sh Welcome Tom 
Welcome Tom ^-^

Lors de l'exécution de la commande ci-dessus, Tom est variables et le reste sont des constantes, nous pouvons extraire les arguments de "args.txt" et les fournir à la commande comme suit :

[root@host1 test]# bash echo.sh Welcome Tom 
[root@host1 test]# bash echo.sh Welcome Herry
[root@host1 test]# bash echo.sh Welcome Jerry
[root@host1 test]# bash echo.sh Welcome Lucy

À ce stade la fois où nous devons utiliser la commande -I dans xargs :

[root@host1 test]# cat args.txt | xargs -I {} bash echo.sh Welcome {} 
Welcome Tom ^-^
Welcome Harry ^-^
Welcome Jerry ^-^
Welcome Lucy ^-^

-I {} pour spécifier le remplacement de string Pour chaque paramètre de commande, la chaîne {}. sera remplacé par les paramètres lus depuis stdin.

Lorsque -I est utilisé, la commande est exécutée dans une boucle S'il y a 4 paramètres, la commande sera accompagnée de {} It. est exécuté 4 fois, et {} sera remplacé par les paramètres correspondants à chaque exécution.

3. Utiliser avec find

xargs et find sont une très bonne combinaison, mais nous l'utilisons généralement de la mauvaise manière. Utilisez-les dans des manières suivantes, telles que :

[root@host1 test]# find . -type f -name "*.txt" -print | xargs rm -f

Il est dangereux de le faire, parfois supprimer des fichiers qui n'ont pas besoin d'être supprimés, si le nom du fichier contient un caractère espace (' '), alors xargs est susceptible de penser qu'il s'agit de délimiteurs (par exemple, file text.txt sera confondu avec file et text.txt par xargs).

Si nous voulons utiliser la sortie de find comme entrée dans xargs, nous devons utiliser -print0 avec find pour terminer par les caractères null('

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn