Man page - xargs(1)

Packages contains this manual

Available languages:

en fr pl ja ro zh_TW zh_CN

Manual

XARGS

NOM
SYNOPSIS
DESCRIPTION
OPTIONS
EXEMPLES
CODE DE RETOUR
CONFORMITÉ AUX STANDARDS
HISTORIQUE
BOGUES
SIGNALER DES BOGUES
COPYRIGHT
VOIR AUSSI
TRADUCTION

NOM

xargs - Construire et exĂ©cuter des lignes de commandes Ă  partir de l’entrĂ©e standard

SYNOPSIS

xargs [ options ] [ commande [ paramĂštres_initiaux ]]

DESCRIPTION

Cette page de manuel documente la version GNU de xargs . xargs lit des Ă©lĂ©ments dĂ©limitĂ©s par des blancs (pouvant ĂȘtre protĂ©gĂ©s par des apostrophes, des guillemets ou une contre-oblique) ou par des sauts de ligne depuis l’entrĂ©e standard, et exĂ©cute une ou plusieurs fois la commande ( echo par dĂ©faut) en utilisant les paramĂštres_initiaux suivis des paramĂštres lus depuis l’entrĂ©e standard. Les lignes blanches en entrĂ©e sont ignorĂ©es.

La ligne de commande pour la commande est construite jusqu’à ce qu’elle atteigne une limite dĂ©finie par le systĂšme (sauf si les options -n et -L sont utilisĂ©es). La commande spĂ©cifiĂ©e est invoquĂ©e autant de fois que nĂ©cessaire pour Ă©puiser la liste d’objets en entrĂ©e. En gĂ©nĂ©ral, il y aura beaucoup moins d’invocations qu’il y a d’objets en entrĂ©e. Cela conduira normalement Ă  un gain de performances. Certaines commandes peuvent, de façon utile, ĂȘtre aussi exĂ©cutĂ©es en parallĂšle ; voir l’option -P .

Parce que les noms de fichiers Unix peuvent comporter des blancs et des caractĂšres de saut de ligne, ce comportement par dĂ©faut pose souvent des problĂšmes ; les noms de fichiers qui comportent des blancs et/ou des caractĂšres de saut de ligne sont traitĂ©s de maniĂšre incorrecte par xargs . Dans ces situations, il est prĂ©fĂ©rable d’utiliser l’option -0 qui permet d’éviter ce genre de problĂšmes. Lorsque cette option est utilisĂ©e, il faut s’assurer que le programme qui produit l’entrĂ©e pour xargs utilise aussi un octet NULL comme sĂ©parateur. Si ce programme est GNU find par exemple, l’option -print0 le fera pour vous.

Si l’appel de la commande se termine avec un code d’état 255, xargs s’arrĂȘtera immĂ©diatement sans lire davantage les paramĂštres d’entrĂ©e. Si cela se produit, un message d’erreur est Ă©mis vers la sortie d’erreur standard (stderr).

OPTIONS

-0, --null

Les noms des fichiers d’entrĂ©e sont terminĂ©s par un octet NULL au lieu d’un espace, et les apostrophes, guillemets et contre-obliques n’ont pas de signification particuliĂšre (chaque caractĂšre est utilisĂ© littĂ©ralement). DĂ©sactive la chaĂźne de fin de fichier, qui est traitĂ©e comme tout autre paramĂštre. Utile quand des arguments sont susceptibles de contenir des espaces, des marques de protection ou des contre-obliques. L’option - print0 de GNU find produit une sortie convenant Ă  ce mode.

-a fichier , --arg-file= fichier

Lire les donnĂ©es depuis fichier plutĂŽt que depuis l’entrĂ©e standard (stdin). Si vous utilisez cette option, stdin restera inchangĂ©e lors de l’exĂ©cution de la commande. Sinon, stdin est redirigĂ©e depuis /dev/null .

--delimiter= délimiteur , -d délimiteur

Les objets en entrĂ©e sont terminĂ©s par le caractĂšre spĂ©cifiĂ©. Le dĂ©limiteur spĂ©cifiĂ© peut ĂȘtre un caractĂšre simple, un caractĂšre d’échappement dans le style de C tel que \n ou un code d’échappement en octal ou en hexadĂ©cimal, avec la mĂȘme acception que pour la commande printf . Les caractĂšres multioctets ne sont pas acceptĂ©s. Lors du traitement de l’entrĂ©e, les guillemets et les contre-obliques ne sont pas des caractĂšres spĂ©ciaux ; tous les caractĂšres de l’entrĂ©e sont considĂ©rĂ©s littĂ©ralement. L’option -d dĂ©sactive toute chaĂźne de fin de fichier qui est traitĂ©e comme n’importe quel autre paramĂštre. Cette option peut ĂȘtre utilisĂ©e quand l’entrĂ©e consiste simplement en des objets sĂ©parĂ©s par des sauts de ligne, bien qu’il soit presque toujours meilleur de concevoir le programme pour qu’il utilise l’option --null lorsque c’est possible.

-E chaĂźne-fin-de-fichier

DĂ©finir la chaĂźne de fin de fichier Ă  chaĂźne-fin-de-fichier . Si la chaĂźne de fin de fichier se trouve dans une ligne d’entrĂ©e, le reste de l’entrĂ©e est ignorĂ©. Si on n’utilise ni -E ni -e , on n’utilise aucune chaĂźne de fin de fichier.

-e [ chaĂźne-fin-de-fichier ], --eof [ =chaĂźne-fin-de-fichier ]

Cette option est un synonyme de l’option -E . Utiliser de prĂ©fĂ©rence -E parce qu’elle est conforme Ă  la norme POSIX alors que cette option ne l’est pas. Si chaĂźne-fin-de-fichier est omis, il n’existe pas de chaĂźne de fin de fichier. Si aucune des options -E et -e n’est utilisĂ©e, aucune chaĂźne de fin de fichier n’est utilisĂ©e.

-I chaĂźne-remplacement

Remplacer les occurrences de chaĂźne-remplacement dans les paramĂštres initiaux par les noms lus sur l’entrĂ©e standard. Dans ce cas, les blancs non protĂ©gĂ©s ne sont pas considĂ©rĂ©s comme terminant les items en entrĂ©e. Le sĂ©parateur est le caractĂšre de nouvelle ligne. Implique -x et -L 1 .

-i [ chaĂźne-remplacement ], --replace [ =chaĂźne-remplacement ]

Cette option est un synonyme de -I chaĂźne-remplacement si chaĂźne-remplacement est indiquĂ©e. Si l’argument chaĂźne-remplacement est absent, le rĂ©sultat est le mĂȘme que -I {}. L’option -i est obsolĂšte ; veuillez utiliser -I Ă  la place.

-L nombre_max_lignes

Utiliser au plus nombre-max-lignes lignes non vides par ligne de commande. Des blancs en fin de ligne permettent Ă  une ligne de se poursuivre logiquement sur la ligne suivante. Implique -x .

-l [ nombre_max_lignes ], --max-lines [= nombre_max_lignes ]

Synonyme de l’option -L . À l’inverse de -L , le paramĂštre nombre-max-lignes est optionnel. Le paramĂštre nombre-max-lignes vaut 1 par dĂ©faut s’il n’est pas indiquĂ©. L’option -l est obsolĂšte depuis qu’elle a Ă©tĂ© remplacĂ©e par -L dans la norme POSIX.

-n nombre-max-param , --max-args = nombre-max-param

Utiliser au plus nombre-max-param paramĂštres par ligne de commande. Un nombre de paramĂštres infĂ©rieur Ă  nombre-max-param sera utilisĂ© si la taille (consultez l’option -s ) est dĂ©passĂ©e, Ă  moins que l’option -x ne soit indiquĂ©e, auquel cas xargs se terminera.

-P nombre-max-procs , --max-procs = nombre-max-procs

ExĂ©cuter jusqu’à nombre-max-procs processus Ă  la fois ; par dĂ©faut, c’est 1 . Si le nombre-max-procs est 0 , xargs exĂ©cutera Ă  la fois autant de processus que possible. Utiliser l’option -n ou l’option -L avec -P ; autrement il y a un risque que seule une exĂ©cution soit rĂ©alisĂ©e. Pendant l’exĂ©cution de xargs , il est possible d’envoyer Ă  son processus un signal SIGUSR1 pour augmenter le nombre des commandes Ă  exĂ©cuter simultanĂ©ment ou un signal SIGUSR2 pour diminuer ce nombre. Il n’est pas possible d’augmenter ce nombre au-delĂ  de la limite dĂ©finie par l’implĂ©mentation (qui est affichĂ©e avec l’option --show-limits ). Il n’est pas possible de l’abaisser au-dessous de 1 . xargs ne met jamais fin Ă  ses commandes ; quand une diminution est demandĂ©e, il attend seulement que plus d’une commande existante s’achĂšve avant d’en lancer une autre. xargs attend toujours qu’un processus enfant termine avant de terminer lui-mĂȘme (mais, voir BOGUES).

Si vous n’utilisez pas l’option -P , xargs ne pourra pas traiter les signaux SIGUSR1 et SIGUSR2, ce qui signifie qu’ils mettront fin au programme (Ă  moins d’ĂȘtre bloquĂ©s dans le processus parent avant le dĂ©marrage de xargs ).

Veuillez noter qu’il revient aux processus appelĂ©s de gĂ©rer correctement les accĂšs parallĂšles aux ressources partagĂ©es. Par exemple, si plus d’un processus essaye d’afficher sur la sortie standard, les sorties seront produites dans un ordre indĂ©terminĂ© (et vraisemblablement mĂ©langĂ©es) Ă  moins que les processus collaborent d’une certaine maniĂšre pour Ă©viter ces problĂšmes. L’utilisation d’une sorte de schĂ©ma de verrouillage est une maniĂšre de prĂ©venir ces problĂšmes. En gĂ©nĂ©ral, l’utilisation d’un schĂ©ma de verrouillage aidera Ă  assurer des sorties correctes mais rĂ©duit les performances. Si vous ne voulez pas accepter la diffĂ©rence de performance, il suffit de prendre des dispositions pour que chaque processus produise un fichier de sortie distinct (ou autrement utilise des ressources distinctes).

-o , --open-tty

Rouvrir l’entrĂ©e standard en tant que /dev/tty dans le processus enfant avant l’exĂ©cution de la commande. Cela est utile si vous souhaitez que xargs exĂ©cute une application interactive.

-p , --interactive

Demander Ă  l’utilisateur s’il faut exĂ©cuter chaque ligne de commande et lire une ligne Ă  partir du terminal. N’exĂ©cuter la commande que si la rĂ©ponse commence par « y » ou « Y ». Implique -t .

--process-slot-var = nom

DĂ©finir la variable d’environnement nom Ă  une valeur unique dans chaque processus enfant exĂ©cutĂ©. Ces variables sont rĂ©utilisĂ©es une fois que les processus enfant sont terminĂ©s. Cela peut ĂȘtre utilisĂ© par exemple dans un schĂ©ma de rĂ©partition de charge rudimentaire.

-r , --no-run-if-empty

Si l’entrĂ©e standard ne contient aucun caractĂšre non blanc, ne pas exĂ©cuter la commande. Normalement, la commande est exĂ©cutĂ©e une fois mĂȘme s’il n’y a pas d’entrĂ©e. Cette option est une extension GNU.

-s nombre-max-caractĂšres , --max-chars = nombre-max-caractĂšres

Utiliser au plus nombre-max-caractĂšres caractĂšres par ligne de commande, ce qui inclut la commande et les paramĂštres initiaux, ainsi que les octets NULL de terminaison des chaĂźnes passĂ©es en paramĂštres. La valeur maximale autorisĂ©e dĂ©pend du systĂšme, et est calculĂ©e d’aprĂšs la taille limite pour une exĂ©cution, moins la taille de l’environnement, moins 2048 octets pour les en-tĂȘtes. Si cette valeur dĂ©passe 128 Kio, la valeur par dĂ©faut sera 128 Kio ; dans les autres cas, la valeur par dĂ©faut correspondra au maximum (1 Kio vaut 1024 octets). xargs s’adapte automatiquement aux contraintes les plus strictes.

--show-limits

Afficher les limites de la longueur de la ligne de commande telles qu’imposĂ©es par le systĂšme d’exploitation, le choix dans xargs de la taille du tampon et l’option -s . Redirigez l’entrĂ©e Ă  partir de /dev/null (en indiquant Ă©ventuellement --no-run-if-empty ) si vous voulez que xargs ne fasse rien.

-t , --verbose

Afficher la ligne de commande sur la sortie d’erreur standard avant de l’exĂ©cuter.

-x , --exit

Terminer si la taille (voir l’option -s ) est dĂ©passĂ©e.

--

DĂ©limiter la liste d’options. Les derniers arguments, si prĂ©sents, sont traitĂ©s comme des opĂ©randes mĂȘme s’ils commencent par - . Par exemple, xargs-- --help exĂ©cute la commande --help (trouvĂ©e dans PATH ) au lieu d’afficher le texte d’usage, et xargs -- --macommande exĂ©cute la commande --macommande au lieu de la rejeter comme option inconnue.

--help

Afficher un résumé des options de xargs et quitter.

--version

Afficher le numéro de version de xargs et quitter.

Les options --max-lines ( -L , -l ), --replace ( -I , -i ) et --max-args ( -n ) s’excluent mutuellement. Si plusieurs d’entre elles sont spĂ©cifiĂ©es en mĂȘme temps, alors xargs va gĂ©nĂ©ralement utiliser l’option spĂ©cifiĂ©e en dernier sur la ligne de commande, c’est-Ă -dire qu’il remettra l’option fautive (donnĂ©e prĂ©cĂ©demment) Ă  sa valeur par dĂ©faut. En plus, xargs Ă©mettra un diagnostic d’avertissement vers la sortie d’erreur standard (stderr). L’exception Ă  cette rĂšgle est que la valeur spĂ©ciale de nombre-max-param 1 (« -n 1 ») est ignorĂ©e aprĂšs l’option --replace ainsi que ses alias -I et -i parce qu’elle ne devrait pas entrer en conflit rĂ©ellement.

EXEMPLES

find /tmp -name noyau -type f -print | xargs /bin/rm -f

Chercher les fichiers dont le nom est noyau dans le répertoire /tmp et ses sous-répertoires, et les effacer. Rappelez-vous que vous pouvez rencontrer des problÚmes si des noms de fichiers comportent des retours à la ligne ou des espaces.

find /tmp -name noyau -type f -print0 | xargs -0 /bin/rm -f

Chercher les fichiers qui s’appellent noyau dans le rĂ©pertoire /tmp et ses sous-rĂ©pertoires, puis les effacer, en veillant Ă  ce que les noms de fichiers ou de rĂ©pertoires qui contiennent des retours Ă  la ligne ou des espaces soient correctement traitĂ©s.

find /tmp -depth -name noyau -type f -delete

Chercher les fichiers qui s’appellent noyau dans le rĂ©pertoire /tmp et ses sous-rĂ©pertoires, puis les effacer, mais de façon plus efficace que dans l’exemple prĂ©cĂ©dent (puisqu’on Ă©vite l’appel Ă  fork (2) et exec (2) pour lancer rm , et que nous n’avons plus besoin du processus supplĂ©mentaire xargs ).

cut -d: -f1 < /etc/passwd | sort | xargs echo

Créer une liste compacte de tous les utilisateurs sur le systÚme.

CODE DE RETOUR

xargs se termine avec le code de retour suivant :

0

s’il rĂ©ussit

123

si une invocation de la commande s’est terminĂ©e avec une valeur de retour comprise entre 1 et 125

124

si la commande s’est terminĂ©e avec un code de retour de 255

125

si la commande a été tuée par un signal

126

si la commande ne peut pas ĂȘtre exĂ©cutĂ©e

127

si la commande n’a pas Ă©tĂ© trouvĂ©e

1

si une autre erreur s’est produite.

Les codes de retour supĂ©rieurs Ă  128 sont utilisĂ©s par l’interprĂ©teur de commandes pour indiquer une fin de programme due Ă  un signal fatal.

CONFORMITÉ AUX STANDARDS

Depuis la version 4.2.9 de GNU xargs, le comportement par défaut de xargs est de ne pas avoir de marqueur logique de fin de fichier. La norme POSIX (IEEE Std 1003.1, Edition 2004) le permet.

Les options -l et -i sont apparues dans la version de la norme POSIX de 1997, mais n’apparaissent plus dans la version 2004 de la norme. Vous devriez donc utiliser respectivement -L et -I , à la place.

L’option -o est une extension du standard POSIX pour une meilleure compatibilitĂ© avec BSD.

Le standard POSIX permet des implĂ©mentations dans lesquelles il existe une limite sur la taille des paramĂštres fournis aux fonctions exec . La limite peut ĂȘtre aussi basse que 4096 octets, en incluant la taille de l’environnement. Les scripts ne doivent pas compter sur une taille supĂ©rieure afin d’ĂȘtre portables. Toutefois, je ne connais aucune implĂ©mentation dans laquelle la limite rĂ©elle est aussi basse. L’option --show-limits peut vous permettre de connaĂźtre les limites rĂ©elles de votre systĂšme.

Dans les versions de xargs jusqu’à la version 4.9.0 incluse, SIGUSR1 et SIGUSR2 ne provoqueront pas la fin de xargs mĂȘme si l’option -P n’a pas Ă©tĂ© utilisĂ©e.

HISTORIQUE

Le programme xargs a Ă©tĂ© inventĂ© par Herb Gellis aux Laboratoires Bell. Voir le manuel Texinfo pour findutils, Finding Files , pour plus d’informations.

BOGUES

Il n’est pas possible d’utiliser xargs de maniĂšre sĂ»re, car il y aura toujours un intervalle de temps entre la production de la liste de fichiers en entrĂ©e et leur utilisation dans les commandes produites par xargs . Si d’autres utilisateurs ont accĂšs au systĂšme, ils peuvent manipuler le systĂšme de fichiers pendant cet intervalle de temps de façon Ă  forcer les actions des commandes lancĂ©es par xargs Ă  s’exĂ©cuter sur des fichiers non voulus. Pour une discussion plus dĂ©taillĂ©e sur ce sujet et d’autres problĂšmes qui y sont liĂ©s, veuillez consulter le chapitre « Security Considerations » dans la documentation Texinfo de findutils. L’option -execdir de find peut souvent ĂȘtre utilisĂ©e comme alternative plus sĂ»re.

Lorsque vous utilisez l’option -I , chaque ligne lue depuis l’entrĂ©e est mise en tampon en interne. Cela signifie qu’il y a une limite maximale pour la longueur de la ligne que xargs peut accepter en entrĂ©e lorsqu’il est utilisĂ© avec l’option -I . Pour contourner cette limitation, vous pouvez utiliser l’option -s pour augmenter la taille du tampon utilisĂ© par xargs , et vous pouvez aussi utiliser un appel supplĂ©mentaire Ă  xargs afin de vous assurer qu’il n’y a pas de ligne trop longue. Par exemple :

une_commande | xargs -s 50000 echo | xargs -I ’{}’ -s 100000 rm ’{}’

Ici, le premier appel Ă  xargs n’a pas de limite de longueur pour la ligne d’entrĂ©e parce que l’option -i n’est pas utilisĂ©e. Le deuxiĂšme appel Ă  xargs comporte une telle limitation, mais nous nous sommes assurĂ©s qu’il ne lui serait jamais soumis une ligne plus longue que ce qu’il sait traiter. Ce n’est pas une solution parfaite. Il vaudrait mieux que l’option -i n’impose pas de limite Ă  la taille de la ligne, c’est pourquoi cette discussion apparaĂźt dans la section BOGUES. Le problĂšme ne se produit pas avec la sortie de find (1) parce qu’il ne produit qu’un seul nom de fichier par ligne.

Dans les versions de xargs jusqu’à la version 4.9.0 incluse, xargs -P finira alors que certains de ses enfants sont encore en activitĂ©, si l’un d’eux fini avec de code de retour 255.

SIGNALER DES BOGUES

Aide en ligne de GNU coreutils : <https://www.gnu.org/software/findutils/#get-help>
Signaler toute erreur de traduction Ă  <https://translationproject.org/team/fr.html>

Signaler toute autre erreur au moyen du systÚme de suivi de bogues GNU Savannah :

<https://savannah.gnu.org/bugs/?group=findutils>

Les sujets généraux concernant le paquet GNU findutils sont discutés sur la liste de diffusion bug-findutils :

<https://lists.gnu.org/mailman/listinfo/bug-findutils>

COPYRIGHT

Copyright © 1990-2024 Free Software Foundation, Inc. Licence GPLv3+ : GNU GPL version 3 ou supérieure <https://gnu.org/licenses/gpl.html>.
Ce programme est un logiciel libre. Vous pouvez le modifier et le redistribuer. Il n’y a AUCUNE GARANTIE dans la mesure autorisĂ©e par la loi.

VOIR AUSSI

find (1), kill (1), locate (1), updatedb (1), fork (2), execvp (3), locatedb (5), signal (7)

Documentation complÚte : <https://www.gnu.org/software/findutils/xargs>
aussi disponible localement à l’aide de la commande : info xargs

TRADUCTION

La traduction française de cette page de manuel a été créée par Florentin Duneau <fduneau@gmail.com>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Sylvain Cherrier <sylvain.cherrier@free.fr>, Nicolas François <nicolas.francois@centraliens.net> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .