Ricerca…


introduzione

Ci sono alcuni modi per concatenare i comandi insieme. Quelli semplici come solo a; o più complessi come catene logiche che funzionano a seconda di alcune condizioni. Il terzo è i comandi di piping, che passano effettivamente i dati di output al comando successivo nella catena.

Conteggio di una comparsa di pattern di testo

L'uso di una pipe rende l'output di un comando l'input di quello successivo.

ls -1 | grep -c ".conf"

In questo caso l'uscita del comando ls viene utilizzata come input del comando grep. Il risultato sarà il numero di file che includono ".conf" nel loro nome.

Questo può essere usato per contrarre catene di comandi successivi per tutto il tempo necessario:

ls -1 | grep ".conf" | grep -c .

trasferire l'output cmd root nel file utente

Spesso si vuole mostrare il risultato di un comando eseguito da root ad altri utenti. Il comando tee consente di scrivere facilmente un file con gli user perms da un comando eseguito come root:

su -c ifconfig | tee ~/results-of-ifconfig.txt

Solo ifconfig viene eseguito come root.

concatenamento logico dei comandi con && e ||

&& catene due comandi. Il secondo funziona solo se il primo esce con successo. || incatena due comandi. Ma il secondo funziona solo se il primo esce con un fallimento.

[ a = b  ] && echo "yes" || echo "no"

# if you want to run more commands within a logical chain, use curly braces
# which designate a block of commands 
# They do need a ; before closing bracket so bash can diffentiate from other uses
# of curly braces
[ a = b ] && { echo "let me see." 
               echo "hmmm, yes, i think it is true" ; } \
          || { echo "as i am in the negation i think " 
               echo "this is false. a is a not b."  ; }
# mind the use of line continuation sign \
# only needed to chain yes block with || ....

concatenamento seriale di comandi con punto e virgola

Un punto e virgola separa solo due comandi.

echo "i am first" ; echo "i am second" ; echo " i am third"

concatenare i comandi con |

Il | prende l'output del comando sinistro e lo canalizza come input il comando corretto. Attenzione, questo è fatto in una sottotitola. Quindi non è possibile impostare i valori di Vars del processo chiamante con una pipe.

find . -type f -a -iname '*.mp3'  | \
       while read filename; do
             mute --noise "$filename"
       done 


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow