Provided by: manpages-fr_4.27.0-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 utili‐
       sant 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'in‐
       vocations 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'er‐
       reur 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  apos‐
              trophes,  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 rediri‐
              gé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'échappe‐
              ment en octal ou en hexadécimal, avec la même acception que pour la commande  printf.  Les  carac‐
              tè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  consi‐
              dé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  conce‐
              voir 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.  Si
              l’argument chaîne-remplacement est absent, le résultat est le même que -I{}. L'option -i est obso‐
              lè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  pa‐
              ramètre  nombre-max-lignes  vaut 1 par défaut s'il n'est pas indiqué. L'option -l est obsolète de‐
              puis 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'op‐
              tion -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émenta‐
              tion  (qui  est affichée avec l'option --show-limits). Il n'est pas possible de l'abaisser au-des‐
              sous 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  stan‐
              dard,  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'utilisa‐
              tion  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.  Normale‐
              ment,  la commande est exécutée une fois même s'il n'y a pas d'entrée. Cette option est une exten‐
              sion 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  pa‐
              ramè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  (trou‐
              vé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  plu‐
       sieurs  d'entre elles sont spécifiées en même temps, alors xargs va généralement utiliser l'option spéci‐
       fiée en dernier sur la ligne de commande, c'est-à-dire qu'il remettra l'option fautive (donnée  précédem‐
       ment)  à  sa valeur par défaut. En plus, xargs émettra un diagnostic d'avertissement vers la sortie d'er‐
       reur standard (stderr). L’exception à cette règle est  que  la  valeur  spéciale  de  nombre-max-param  1-n1 ») 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 effa‐
       cer. Rappelez-vous que vous pouvez rencontrer des problèmes si des noms de fichiers  comportent  des  re‐
       tours à 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 ef‐
       facer, 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 ef‐
       facer,  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 pa‐
       ramè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 por‐
       tables. 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  fin‐
       dutils, 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écu‐
       ter  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 assu‐
       ré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-findu‐
       tils :
              <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>, Nico‐
       las 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 à de‐
       bian-l10n-french@lists.debian.org.

                                                                                                        XARGS(1)