GNU/Linux >> Tutoriales Linux >  >> Linux

Comprender cómo se envían las entradas a las tuberías en Bash

"Entrada" y "argumentos de línea de comando" son cosas diferentes.

rm elimina los archivos proporcionados como argumentos.

Una tubería redirige la salida del comando de la mano izquierda a la entrada del comando de la derecha. No afecta a los argumentos de la línea de comandos del programa de la derecha.

Para hacer lo que intenta hacer, intente usar xargs para convertir la entrada estándar en argumentos de línea de comandos para ejecutar un programa. Ese es su trabajo.

which gem | xargs rm , por ejemplo, eliminará el gem en tu RUTA.


rm no toma entrada, toma argumentos. Estos son diferentes. Los argumentos son los interruptores y los nombres de archivo, etc., que le da a un programa en la línea de comando para afectar su comportamiento. La entrada son los datos sobre los que trabaja el programa. Por ejemplo, grep toma tanto la entrada como los argumentos:

grep "foo" file.txt

Hay dos argumentos allí "foo" y file.txt . La entrada es el contenido de file.txt , no la cadena file.txt sí mismo. Dado que grep toma entrada, puede usarla con tuberías:

cat file.txt | grep "foo"

produce el mismo resultado, ya que cat está tomando file.txt como argumento, y produciendo los contenidos de file.txt como salida. Esa salida luego se canaliza a grep, dando el mismo efecto que si grep abriera el archivo, como en el primer ejemplo.

Si desea utilizar la salida de un programa como argumento a otro, usas acentos graves:

rm `which gem`

o esta sintaxis alternativa (específica de bash):

rm $(which gem)

Editar:o xargs como señala otro respondedor. Muchas formas de despellejar a un gato con una línea de comandos.


Mira el man páginas de comandos que le interesan. Estos programas indicarán que leen desde stdin (prueba man grep para un comando popular que lee stdin).


Linux
  1. Cómo usar los comandos del historial de Bash

  2. ¿Cómo depurar un script Bash?

  3. ¿Cómo hacer 'cabeza' y 'cola' en la entrada delimitada por nulos en Bash?

  4. ¿Cómo detectar Bash> =4.0?

  5. Bash Script - Cómo leer la entrada del usuario

Cómo personalizar Bash Prompt en Linux

Cómo crear alias de Bash

Cómo leer un archivo línea por línea en Bash

Cómo comparar cadenas en Bash

Cómo ejecutar un script Bash

¿Qué son las tuberías en Linux? ¿Cómo funciona la redirección de tuberías?