3 minutes pour comprendre: la commande tar
Table des matières:
- Comment utiliser la commande Linux
xargs
- Comment afficher la commande et inviter l'utilisateur
- Comment limiter le nombre d'arguments
- Comment exécuter plusieurs commandes
- Comment spécifier un délimiteur
- Comment lire des éléments d'un fichier
- Utilisation de
xargs
avecfind
- Utilisation de xargs pour découper les caractères d'espacement
- Conclusion
L'utilitaire
xargs
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 la commande
xargs
.
Comment utiliser la commande Linux
xargs
xargs
lit les arguments de l'entrée standard, séparés par des espaces vides 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 de la commande
xargs
est la suivante:
xargs]
L'exemple le plus simple de l'utilisation de
xargs
serait de passer plusieurs chaînes séparées par des espaces en utilisant un canal vers
xargs
et d'exécuter une commande qui utilisera ces chaînes comme arguments.
echo "file1 file2 file3" | xargs touch
Dans l'exemple ci-dessus, nous redirigeons l'entrée standard vers
xargs
, et la commande
touch
est exécutée pour chaque argument, créant trois fichiers. C'est la même chose que si vous exécutez:
Comment afficher la commande et inviter l'utilisateur
Pour imprimer la commande sur le terminal avant de l'exécuter, utilisez l'option
-t
(
--verbose
):
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
echo "file1 file2 file3" | xargs -p touch
Tapez
y
ou
Y
pour confirmer et exécuter 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 transmis à la commande est déterminé par la limite du système.
L'option
-n
(
--max-args
) spécifie le nombre d'arguments à transmettre à 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 tactile 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 l'option
-I
. Il fonctionne en définissant une chaîne de
replace-str
après l'option
-I
et toutes les occurrences de la
replace-str
remplacement sont remplacées par l'argument passé à xargs.
L'exemple
xargs
suivant exécutera deux commandes, il créera d'abord les fichiers à l'aide de
touch
, puis il listera les fichiers avec la commande
ls
:
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 l'option
-d
(
--delimiter
) pour définir un délimiteur personnalisé, qui peut être soit un seul caractère, soit une séquence d'échappement commençant par
\
.
L'exemple suivant que nous utilisons
;
comme délimiteur:
echo "file1;file2;file3" | xargs -d ; -t touch
Comment lire des éléments d'un fichier
La commande xargs peut également lire des éléments d'un fichier au lieu d'une entrée standard. Pour ce faire, utilisez l'option
-a
(
--arg-file
) suivie du nom du fichier.
Dans l'exemple suivant, la commande
xargs
lit le fichier
ips.txt
et
ips.txt
une
ips.txt
ping à chaque adresse IP.
8.8.8.8 1.1.1.1
Nous utilisons également l'option
-L 1
, qui demande à
xargs
de lire une ligne à la fois. Si cette option est omise,
xargs
transmettra toutes les adresses IP à une seule commande
ping
.
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 la commande
find
. Vous pouvez utiliser
find
pour rechercher des fichiers spécifiques, puis utiliser
xargs
pour effectuer des opérations sur ces fichiers.
Pour éviter les problèmes avec les noms de fichiers contenant des sauts de ligne ou d'autres caractères spéciaux, utilisez toujours l'option find
-print0
, qui provoque la
find
pour imprimer le nom de fichier complet suivi d'un caractère nul. Cette sortie peut être correctement interprétée par
xargs
utilisant l'option
-0
, (
--null
).
Dans l'exemple suivant,
find
imprimera les noms complets de tous les fichiers dans le répertoire
/var/www/.cache
et
xargs
transmettra les chemins d'accès aux fichiers à la commande
rm
:
find /var/www/.cache -type f -print0 | xargs -0 rm -f
Utilisation de xargs pour découper les caractères d'espacement
xargs
peut également être utilisé comme un outil pour supprimer les espaces blancs des deux côtés d'une chaîne donnée. Dirigez simplement la chaîne vers la commande
xargs
, et elle effectuera le découpage:
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]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; 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 plus d'informations sur chaque option
xargs
, consultez la page de manuel xargs.
Commande chmod sous linux (autorisations de fichiers)
Sous Linux, l'accès aux fichiers est géré via les autorisations, les attributs et la propriété des fichiers. Ce didacticiel explique comment utiliser la commande chmod pour modifier les autorisations d'accès aux fichiers et aux répertoires.
Commande chgrp sous linux (changement de groupe)
Sous Linux, chaque fichier est associé à un propriétaire et à un groupe et dispose d'autorisations qui déterminent quels utilisateurs peuvent lire, écrire ou exécuter le fichier. La commande chgrpc change la propriété du groupe des fichiers donnés.
Commande cp sous linux (copier des fichiers)
cp est un utilitaire de ligne de commande pour copier des fichiers et des répertoires sur les systèmes Unix et Linux.