bash – operadores de redirección

cmd1|cmd2       Pipe; toma la salida estándar de cmd1 y la envía a la entrada estándar
                de cmd2.
>fichero        Redirige la salida estándar del programa al fichero.

<fichero        Redirige el contenido de fichero a la entrada estándar del programa.
>>fichero       Redirige la salida estándar del programa al fichero. Añade
                esta a fichero si éste ya existe.
>|fichero       Redirige la salida estándar del programa al fichero. Sobrescribe a
                éste incluso si la opción noclobber¹ está activada.
<>fichero       Usa a fichero tanto para la entrada estándar como para la salida

                estándar.
n<>fichero      Usa a fichero tanto para la entrada como para la salida del descriptor

                de fichero n.
<<etiqueta      Here document².

<<<texto        Here string³.
n>fichero       Envía el valor del descriptor de fichero n al fichero.
n<fichero       Obtiene el valor del descriptor de fichero n del fichero.
n>>fichero      Envía el valor del descriptor de fichero n al fichero. Añade al final
                del fichero si éste existe.
n>|fichero      Envía el valor del descriptor de fichero n al fichero. Sobrescribe a

                éste incluso si la opción noclobber¹ está activada.
n>&             Enlaza la salida estándar en el descriptor de fichero n.

n<&             Enlaza la entrada estándar en el descriptor de fichero n.
n>&m            Enlaza el descriptor de salida m en el descriptor de fichero n.

n<&m            Enlaza el descriptor de entrada m en el descriptor de fichero n.
&>fichero       Redirige la salida estándar y la salida de error estándar al fichero.
<&-             Cierra la entrada estándar.

>&-             Cierra la salida estándar.
n>&-            Cierra el descriptor de salida n.
n<&-            Cierra el descriptor de entrada n.


¹ noclobber
Esta opción de Bash sirve para evitar sobreescribir un fichero con el operador >, de este modo, si el fichero al que dirigimos la salida existe, el shell produce un error.
Por defecto no está activada, lo hacemos del siguiente modo:

set -o noclobber

² here document
El operador <<etiqueta fuerza a que la entrada a un comando sea la stdin hasta encontrar etiqueta. Este texto que va a encontrar etiqueta es lo que se llama here document.
En el siguiente ejemplo, cat recibe texto hasta que encuentra una línea con un sólo punto, y guarda ése texto en el fichero fichero.txt de este modo:

$ cat >> fichero.txt << .
> Este es un ejemplo.
> Este es otro
> Hasta luego.
> .

³ here string
Es una variante de los here documents. Se llevan a cabo usando el operador <<<texto, y simplemente envían texto a la entrada estándar del comando.
En el siguiente ejemplo, se añade una línea al principio del fichero original.txt, guardándolo luego como modificado.txt:

$ titulo="linea a agregar como titulo"
$ cat - original.txt <<<$titulo > modificado.txt

El guión como argumento de cat indica que ahí va lo que reciba por la entrada estándar (en este caso el here string).
El here string (al igual que el here documents) puede contener variables, las cuales se expanden por su valor antes de pasar el here document al comando.

VER
bash, bash-builtins

Deja un comentario