Buscar..


Introducción

Hay algunos medios para encadenar comandos. Los simples como solo un; o más complejas como cadenas lógicas que se ejecutan dependiendo de algunas condiciones. El tercero son los comandos de canalización, que efectivamente transfieren los datos de salida al siguiente comando en la cadena.

Contando la ocurrencia de un patrón de texto.

El uso de una tubería hace que la salida de un comando sea la entrada del siguiente.

ls -1 | grep -c ".conf"

En este caso, la salida del comando ls se usa como entrada del comando grep. El resultado será la cantidad de archivos que incluyen ".conf" en su nombre.

Esto se puede usar para construir cadenas de comandos subsiguientes siempre que sea necesario:

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

transferir la salida del cmd de la raíz al archivo de usuario

A menudo, uno quiere mostrar el resultado de un comando ejecutado por la raíz a otros usuarios. El comando tee permite escribir fácilmente un archivo con permisos de usuario desde un comando que se ejecuta como root:

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

Sólo ifconfig se ejecuta como root.

encadenamiento lógico de comandos con && y ||

&& encadena dos comandos. El segundo solo se ejecuta si el primero sale con éxito. || encadena dos órdenes. Pero el segundo solo se ejecuta si el primero sale con un error.

[ 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 || ....

Encadenamiento en serie de comandos con punto y coma.

Un punto y coma separa solo dos comandos.

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

comandos de encadenamiento con |

El | toma la salida del comando izquierdo y la canaliza como entrada el comando derecho. Tenga en cuenta que esto se hace en una subshell. Por lo tanto, no puede establecer valores de vars del proceso de llamada con una canalización.

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow