GNU/Linux >> Tutoriels Linux >  >> Linux

Comprendre comment les entrées sont envoyées aux canaux dans Bash

"Entrée" et "arguments de ligne de commande" sont des choses différentes.

rm supprime les fichiers fournis en arguments.

Un tube redirige la sortie de la commande de gauche vers l'entrée de la commande de droite. Cela n'affecte pas les arguments de ligne de commande du programme de droite.

Pour faire ce que vous essayez de faire, essayez d'utiliser xargs pour convertir l'entrée standard en arguments de ligne de commande pour l'exécution d'un programme. C'est son travail.

which gem | xargs rm , par exemple, supprimera le gem dans votre PATH.


rm ne prend pas d'entrée, il prend des arguments. Ceux-ci sont différents. Les arguments sont les commutateurs et les noms de fichiers et ainsi de suite que vous donnez à un programme sur la ligne de commande pour affecter son comportement. L'entrée correspond aux données sur lesquelles le programme travaille. Par exemple, grep prend à la fois l'entrée et les arguments :

grep "foo" file.txt

Il y a deux arguments ici "foo" et file.txt . L'entrée est le contenu de file.txt , pas la chaîne file.txt lui-même. Comme grep prend en entrée, vous pouvez l'utiliser avec des pipes :

cat file.txt | grep "foo"

produit la même sortie, puisque cat prend file.txt comme argument, et produisant le contenu de file.txt comme sortie. Cette sortie est ensuite redirigée vers grep, donnant le même effet que si grep ouvrait le fichier lui-même, comme dans le premier exemple.

Si vous souhaitez utiliser la sortie d'un programme comme argument à l'autre, vous utilisez des backticks :

rm `which gem`

ou cette syntaxe alternative (spécifique à bash) :

rm $(which gem)

Modifier :ou xargs comme le souligne un autre répondant. De nombreuses façons de dépecer un chat avec une ligne de commande.


Découvrez le man pages de commandes qui vous intéressent. Ces programmes indiqueront qu'ils lisent à partir de stdin (essayez man grep pour une commande populaire qui lit stdin).


Linux
  1. Comment écrire une boucle dans Bash

  2. Comment utiliser les entrées dans vos scripts shell

  3. Comment déboguer un script bash ?

  4. Comment faire `head` et `tail` sur une entrée délimitée par Null dans Bash?

  5. bash :comment passer des arguments de ligne de commande contenant des caractères spéciaux

Comment personnaliser l'invite Bash sous Linux

Comment créer des alias Bash

Comment lire un fichier ligne par ligne dans Bash

Comment comparer des chaînes dans Bash

Comment exécuter un script bash

Que sont les tuyaux sous Linux ? Comment fonctionne la redirection de tuyau ?