GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Xargs sous Linux

Les xargs L'utilitaire vous permet de créer et d'exécuter des commandes à partir d'une entrée standard. Il est généralement utilisé en combinaison avec d'autres commandes via la tuyauterie.

Avec xargs , vous pouvez fournir une entrée standard comme argument aux utilitaires de ligne de commande comme mkdir et rm .

Dans ce didacticiel, nous aborderons les bases de l'utilisation de xargs commande.

Comment utiliser Linux xargs Commande #

xargs lit les arguments de l'entrée standard, séparés par des espaces ou des retours à la ligne, et exécute la commande spécifiée en utilisant l'entrée comme arguments de la commande. Si aucune commande n'est fournie, la valeur par défaut est /bin/echo .

La syntaxe pour le xargs commande est la suivante :

xargs [OPTIONS] [COMMAND [initial-arguments]]

L'exemple le plus basique d'utilisation de xargs serait de passer plusieurs chaînes séparées par des espaces en utilisant un tube vers xargs et exécutez une commande qui utilisera ces chaînes comme arguments.

echo "file1 file2 file3" | xargs touch

Dans l'exemple ci-dessus, nous dirigeons l'entrée standard vers xargs , et le touch La commande est exécutée pour chaque argument, créant trois fichiers. C'est la même chose que si vous exécutiez :

touch file1 file2 file3

Comment afficher la commande et demander à l'utilisateur #

Pour imprimer la commande sur le terminal avant de l'exécuter, utilisez le -t (--verbose ) :

echo  "file1 file2 file3" | xargs -t touch
touch file1 file2 file3

Si vous souhaitez obtenir une invite indiquant si vous souhaitez exécuter chaque commande avant de l'exécuter, utilisez le -p (--interactive ) :

echo  "file1 file2 file3" | xargs -p touch

Tapez y ou Y pour confirmer et lancer la commande :

touch file1 file2 file3 ?...y

Cette option est utile lors de l'exécution de commandes destructives.

Comment limiter le nombre d'arguments #

Par défaut, le nombre d'arguments passés à la commande est déterminé par la limite du système.

Le -n (--max-args ) spécifie le nombre d'arguments à passer à la commande donnée. xargs exécute la commande spécifiée autant de fois que nécessaire jusqu'à ce que tous les arguments soient épuisés.

Dans l'exemple suivant, le nombre d'arguments lus à partir de l'entrée standard est limité à 1.

echo  "file1 file2 file3" |  xargs -n 1 -t touch

Comme vous pouvez le voir dans la sortie détaillée ci-dessous, la commande touch est exécutée séparément pour chaque argument :

touch file1
touch file2
touch file3

Comment exécuter plusieurs commandes #

Pour exécuter plusieurs commandes avec xargs , utilisez le -I option. Cela fonctionne en définissant un replace-str après le -I option et toutes les occurrences de replace-str sont remplacés par l'argument passé à xargs.

Les xargs suivants exemple exécutera deux commandes, d'abord il créera les fichiers en utilisant touch , puis il listera les fichiers avec le ls commande :

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file1
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file2
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file3

Un choix courant pour replace-str est % . Cependant, vous pouvez utiliser un autre espace réservé, par exemple, ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Comment spécifier un délimiteur #

Utilisez le -d (--delimiter ) pour définir un délimiteur personnalisé, qui peut être soit un caractère unique, soit une séquence d'échappement commençant par \ .

L'exemple suivant, nous utilisons ; comme délimiteur :

echo  "file1;file2;file3" | xargs -d \; -t touch
touch file1 file2 file3

Comment lire les éléments du fichier #

La commande xargs peut également lire des éléments d'un fichier au lieu de l'entrée standard. Pour ce faire, utilisez le -a (--arg-file ) suivi du nom du fichier.

Dans l'exemple suivant, le xargs la commande lira le ips.txt fichier et ping chaque adresse IP.

ips.txt
8.8.8.8
1.1.1.1

Nous utilisons également le -L 1 option, qui indique xargs lire une ligne à la fois. Si cette option est omise xargs transmettra toutes les IP à un seul ping commande.

xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms

...
ping -c 1 1.1.1.1 
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

Utilisation de xargs avec find #

xargs est le plus souvent utilisé en combinaison avec find commande. Vous pouvez utiliser find pour rechercher des fichiers spécifiques, puis utilisez xargs pour effectuer des opérations sur ces fichiers.

Pour éviter les problèmes avec les noms de fichiers contenant des retours à la ligne ou d'autres caractères spéciaux, utilisez toujours la recherche -print0 option, qui provoque find pour imprimer le nom complet du fichier suivi d'un caractère nul. Cette sortie peut être correctement interprétée par xargs en utilisant le -0 , (--null ).

Dans l'exemple suivant, find imprimera les noms complets de tous les fichiers à l'intérieur du /var/www/.cache répertoire et xargs transmettra les chemins de fichiers au rm commande :

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Utilisation de xargs pour couper les caractères d'espace blanc #

xargs peut également être utilisé comme outil pour supprimer les espaces des deux côtés d'une chaîne donnée. Dirigez simplement la chaîne vers le xargs commande, et il fera le rognage :

echo "  Long line " | xargs
Long line

Cela peut être utile lors de la comparaison de chaînes dans des scripts shell.

#!/bin/bash

VAR1=" Linuxize "
VAR2="Linuxize"

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

## Using xargs to trim VAR1
if [[ $(echo "$VAR1" | xargs) == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi
Strings are not equal.
Strings are equal.

Conclusion #

xargs est un utilitaire de ligne de commande sous Linux qui vous permet de créer et d'exécuter des commandes.

Pour des informations plus détaillées sur chaque xargs option, lisez la page de manuel xargs.

Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.


Linux
  1. 11 exemples de commandes Xargs sous Linux

  2. Commande Linux mv

  3. Linux du command

  4. 10 exemples de commandes Xargs sous Linux / UNIX

  5. Exemples de commandes xargs sous Linux

Commande de type Linux

Linux Quelle commande

Commande W sous Linux

À la commande sous Linux

Commande Df sous Linux

Exemples de commandes Linux xargs