<Précédent | Table des matières | Suivant>
xarg
Le manuel de formation xarg La commande exécute une fonction intéressante. Elle accepte les entrées de l'entrée standard et les convertit en une liste d'arguments pour une commande spécifique. Dans notre exemple, nous l'utiliserions ainsi :
trouver ~ -type f -name 'foo*' -print | xargs ls -l
trouver ~ -type f -name 'foo*' -print | xargs ls -l
-rwxr-xr-x 1 moi
-rw-r--r-- 1 moi
-rwxr-xr-x 1 moi
-rw-r--r-- 1 moi
moi 224 2007-10-29 18:44 /home/me/bin/foo
moi 224 2007-10-29 18:44 /home/me/bin/foo
me
me
0 2016-09-19 12:53 /home/moi/foo.txt
0 2016-09-19 12:53 /home/moi/foo.txt
Ici, nous voyons la sortie du trouver commande transmise dans xarg qui, à son tour, construit une liste d'arguments pour le ls commande et l'exécute ensuite.
Remarque: Bien que le nombre d'arguments pouvant être placés dans une ligne de commande soit important, il n'est pas illimité. Il est possible de créer des commandes trop longues pour être acceptées par le shell. Lorsqu'une ligne de commande dépasse la longueur maximale prise en charge par le système, xarg Exécute la commande spécifiée avec le nombre maximal d'arguments possible, puis répète ce processus jusqu'à épuisement de l'entrée standard. Pour connaître la taille maximale de la ligne de commande, exécutez xarg grâce à la fonction
--option afficher-limites.
Gérer les noms de fichiers amusants
Les systèmes de type Unix autorisent les espaces imbriqués (et même les retours à la ligne !) dans les noms de fichiers. Cela pose des problèmes pour des programmes comme xarg qui construisent des listes d'arguments pour d'autres programmes. Un espace incorporé sera traité comme un délimiteur, et la commande résultante interprétera chaque mot séparé par un espace comme un argument distinct. Pour résoudre ce problème, trouver et xarg autoriser l'utilisation facultative d'un caractère nul comme séparateur d'arguments. Un caractère nul est défini en ASCII comme le caractère représenté par le nombre zéro (par opposition, par exemple, au caractère espace, qui est défini en ASCII comme le caractère représenté par le nombre 32). trouver la commande fournit l'action -imprimer0, qui produit une sortie séparée par des valeurs nulles, et le xarg la commande a le --nul Option acceptant les entrées séparées par des valeurs nulles. Voici un exemple :
trouver ~ -iname '*.jpg' -print0 | xargs --null ls -l
Grâce à cette technique, nous pouvons garantir que tous les fichiers, même ceux contenant des espaces intégrés dans leurs noms, sont traités correctement.