Commandes Linux: xargs

Un guide rapide de laxargscommande, utilisée pour transmettre la sortie d'une commande et l'utiliser comme argument à une autre commande

LexargsLa commande est utilisée dans un shell UNIX pour convertir l'entrée d'une entrée standard en arguments en une commande.

En d'autres termes, grâce à l'utilisation dexargsla sortie d'une commande est utilisée comme entrée d'une autre commande.

Voici la syntaxe que vous utiliserez:

command1 | xargs command2

Nous utilisons un tuyau (|) pour transmettre la sortie àxargs. Cela prendra soin d'exécuter lecommand2commande, en utilisant la sortie decommand1comme son (ses) argument (s).

Faisons un exemple simple. Vous souhaitez supprimer certains fichiers spécifiques d'un répertoire. Ces fichiers sont répertoriés dans un fichier texte.

Nous avons 3 fichiers:file1,file2,file3.

Danstodelete.txtnous avons une liste de fichiers que nous voulons supprimer, dans cet exemplefile1etfile3:

Nous allons canaliser la sortie decat todelete.txtà larmcommande, parxargs.

De cette façon:

cat todelete.txt | xargs rm

Voilà le résultat, les fichiers que nous avons listés sont maintenant supprimés:

La façon dont cela fonctionne est quexargscourrarm2 fois, une pour chaque ligne renvoyée parcat.

C'est l'utilisation la plus simple dexargs. Nous pouvons utiliser plusieurs options.

L'un des plus utiles à mon avis, surtout quand on commence à apprendrexargs, est-p. L'utilisation de cette option rendraxargsimprimer une invite de confirmation avec l'action à entreprendre:

Le-nl'option vous permet de direxargspour effectuer une itération à la fois, afin que vous puissiez les confirmer individuellement avec-p. Ici nous disonsxargspour effectuer une itération à la fois avec-n1:

Le-IL'option est une autre option largement utilisée. Il vous permet d'obtenir la sortie dans un espace réservé, puis vous pouvez faire diverses choses.

L'un d'eux consiste à exécuter plusieurs commandes:

command1 | xargs -I % /bin/bash -c 'command2 %; command3 %'

Vous pouvez échanger le%symbole que j'ai utilisé ci-dessus avec autre chose, c'est une variable

LexargsLa commande fonctionne sur Linux, macOS, WSL et partout où vous avez un environnement UNIX

Téléchargez mon gratuitManuel des commandes Linux


Plus de tutoriels cli: