GNU/Linux >> Linux Esercitazione >  >> Linux

Comprendere come gli input vengono inviati alle pipe in Bash

"Input" e "argomenti della riga di comando" sono cose diverse.

rm rimuove i file forniti come argomenti.

Una pipe reindirizza l'output del comando di sinistra all'input del comando di destra. Non influisce sugli argomenti della riga di comando del programma a destra.

Per fare quello che stai cercando di fare, prova a usare xargs per convertire l'input standard in argomenti della riga di comando per l'esecuzione di un programma. Questo è il suo lavoro.

which gem | xargs rm , ad esempio, rimuoverà il gem nel tuo PERCORSO.


rm non accetta input, accetta argomenti. Questi sono diversi. Gli argomenti sono le opzioni, i nomi dei file e così via che fornisci a un programma sulla riga di comando per influenzarne il comportamento. L'input è il dato su cui lavora il programma. Ad esempio, grep accetta sia input che argomenti:

grep "foo" file.txt

Ci sono due argomenti lì "foo" e file.txt . L'input è il contenuto di file.txt , non la stringa file.txt si. Poiché grep accetta input, puoi usarlo con pipe:

cat file.txt | grep "foo"

produce lo stesso output, dato che cat prende file.txt come argomento e producendo i contenuti di file.txt come uscita. Quell'output viene quindi reindirizzato a grep, dando lo stesso effetto di avere grep aperto il file stesso, come nel primo esempio.

Se desideri utilizzare l'output di un programma come argomento a un altro, usi i backtick:

rm `which gem`

o questa sintassi alternativa (specifica per bash):

rm $(which gem)

Modifica:o xargs come sottolinea un altro rispondente. Molti modi per scuoiare un gatto con una riga di comando.


Dai un'occhiata al man pagine di comandi che ti interessano. Questi programmi indicheranno che leggono da stdin (prova man grep per un comando popolare che legge stdin).


Linux
  1. Come usare i comandi della cronologia di Bash

  2. Come scrivere un ciclo in Bash

  3. Come utilizzare gli input negli script della shell

  4. Come rilevare Bash>=4.0?

  5. Script Bash - Come leggere l'input dell'utente

Come personalizzare il prompt di Bash in Linux

Come creare alias Bash

Come leggere un file riga per riga in Bash

Come confrontare le stringhe in Bash

Come eseguire uno script Bash

Cosa sono le pipe in Linux? Come funziona il reindirizzamento dei tubi?