Lors de l’utilisation de la ligne de commande, vous pouvez directement passer la sortie d’un programme (par exemple, un outil qui génère des informations système ou des statistiques) comme entrée pour un autre programme (tel que des outils de filtrage de texte ou de recherche de modèles comme grep, sed ou awk, pour un traitement ultérieur), à l’aide d’un pipeline.
Deux des utilitaires de ligne de commande les plus importants pouvant être utilisés avec des pipelines pour créer des lignes de commande sont :
- xargs – lit des flux de données à partir d’une entrée standard, puis génère et exécute des lignes de commande.
- tee – lit à partir de l’entrée standard et écrit simultanément sur la sortie standard et un ou plusieurs fichiers. C’est plus une commande de redirection.
Dans cet article simple, nous décrirons comment créer et exécuter plusieurs commandes à partir d’une entrée standard à l’aide de tuyaux, tee, et xarg commandes sous Linux.
La syntaxe la plus simple pour utiliser un tuyau, que vous avez peut-être déjà vu dans les commandes de bon nombre de nos didacticiels Linux, est le suivant. Mais vous pouvez créer une ligne de commande plus longue avec plusieurs commandes.
$ command1 args | command2 args OR # command1 args | command2 args | command3 args ...
Vous trouverez ci-dessous un exemple d’utilisation d’un pipeline pour transmettre la sortie de la commande dmesg à la commande head.
$ dmesg | head
Comment utiliser xargs pour exécuter des commandes
Dans cet exemple, la deuxième commande convertit la sortie multiligne en une seule ligne à l’aide de xargs.
$ ls -1 *.sh $ ls -1 *.sh | xargs
Pour compter le nombre de lignes/mots/caractères dans chaque fichier d’une liste, utilisez les commandes ci-dessous.
$ ls *.sh | xargs wc -l #count number of lines in each file $ ls *.sh | xargs wc -w #count number of words in each file $ ls *.sh | xargs wc -c #count number of characters in each file $ ls *.sh | xargs wc #count lines, words, and characters in each file
La commande ci-dessous trouve et supprime récursivement le répertoire nommé All
dans le répertoire courant.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
La commande find avec l’option -print0
active l’impression du chemin complet du répertoire sur la sortie standard, suivi d’un caractère nul et -0 xargs
flag traite de l’espace dans les noms de fichiers.
Vous pouvez trouver d’autres pratiques commande xargs exemples d’utilisation dans ces articles :
Comment utiliser Tee avec des commandes sous Linux
Cet exemple montre comment envoyer la sortie de la commande vers la sortie standard et l’enregistrer dans un fichier ; la commande ci-dessous vous permet d’afficher les principaux processus en cours d’exécution en fonction de l’utilisation maximale de la mémoire et du processeur sous Linux.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt $ cat topprocs.txt
Pour ajouter des données dans un ou plusieurs fichiers existants, passez le -a
drapeau.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
Vous pouvez trouver plus d’informations sur le tee et xarg pages de manuel.
$ man xargs $ man tee
C’est tout! N’oubliez pas de consulter notre article spécial : A – Z Linux Commands – Overview with examples.
Dans cet article, nous avons décrit comment générer des lignes de commande à l’aide de pipelines ; commandes xargs et tee. Vous pouvez poser des questions ou partager des réflexions via le formulaire de commentaires ci-dessous.
Si vous appréciez ce que nous faisons ici sur TecMint, vous devriez considérer :
TecMint est le site communautaire à la croissance la plus rapide et le plus fiable pour tout type d’articles, de guides et de livres Linux sur le Web. Des millions de personnes visitent TecMint ! pour rechercher ou parcourir les milliers d’articles publiés accessibles GRATUITEMENT à tous.
Si vous aimez ce que vous lisez, pensez à nous acheter un café (ou 2) en signe d’appréciation.
Nous sommes reconnaissants pour votre soutien sans fin.