Provided by: manpages-fr_4.13-4_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 (/bin/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-2021 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)