Provided by: manpages-fr_4.23.1-1_all bug

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 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.
       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  multi-octets  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 -Ichaîne-remplacement  si  chaîne-remplacement  est
              indiquée  et de -I{}. Si l’argument chaîne-remplacement est absent, le résultat est
              le même que -I{}. Cette option 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.

              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  s'exécute
              dans 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 caractères nuls 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 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    /dev/null    dans   l'entrée   (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.

       --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 nombre-max-param de 1 (« -n1 ») est
       ignorée après l'option --replace ainsi que ses alias -I et -i parce  qu'ils  ne  devraient
       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,  2004
       Edition) 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  actuelle  dans  laquelle la limite est aussi basse. L'option --show-limits
       peut vous permettre de connaître les limites réelles de votre système.

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é
       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.

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-2022 Free Software Foundation, Inc. License 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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.

                                                                                         XARGS(1)