Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

xarg

La xarg commande remplit une fonction intéressante. Il accepte l'entrée de l'entrée standard et la convertit en une liste d'arguments pour une commande spécifiée. Avec notre exemple, nous l'utiliserions comme ceci :


find ~ -type f -name 'foo*' -print | xargs ls -l

find ~ -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


image

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, puis l'exécute.


image

Remarque: Bien que le nombre d'arguments pouvant être placés dans une ligne de commande soit assez important, il n'est pas illimité. Il est possible de créer des commandes trop longues pour que le shell les accepte. 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 maximum d'arguments possibles, puis répète ce processus jusqu'à ce que l'entrée standard soit épuisée. Pour voir la taille maximale de la ligne de commande, exécutez xarg des

--show-limites option.


image


image

Gérer les noms de fichiers amusants

Les systèmes de type Unix autorisent des espaces intégrés (et même des nouvelles lignes !) 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 séparé. Pour surmonter cela, trouver et de xarg permettre 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). Les 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, qui accepte les entrées séparées par des valeurs nulles. Voici un exemple :

trouver ~ -iname '*.jpg' -print0 | xargs --null ls -l

En utilisant cette technique, nous pouvons nous assurer que tous les fichiers, même ceux contenant des espaces intégrés dans leurs noms, sont traités correctement.


Meilleur système d'exploitation Cloud Computing chez OnWorks :