Al procedimiento de redirigir las conexiones desde su configuración de
partida (ver figura ) se le denomina
redireccionamiento.
Comencemos con la redirección desde-hacia archivos.
mandato < archivo
| Conecta la entrada estándar de un mandato con un archivo. |
De esta forma, cualquier mandato que recibe sus datos desde el teclado se puede conectar con un archivo. Por ejemplo, supongamos que tenemos un archivo con unas cuantas líneas, denominado ejemplo:
cat < ejemplo
| Muestra en pantalla los contenidos del canal de entrada, que se encuentra asociado al archivo ejemplo. |
sort < ejemplo
| Ordena lexicográficamente los contenidos del archivo anterior. |
wc < ejemplo
| Cuenta las líneas, palabras y caracteres del archivo. |
La redirección de la salida estándar es fácil también:
mandato > archivo
| Crea un archivo y se envía la salida del mandato |
mandato 1> archivo
| (idem del anterior) |
mandato >> archivo
| Añade al archivo la salida del mandato |
mandato 1>> archivo
| (idem del anterior) |
Así, no necesitamos programar la salida de datos hacia un archivo, dado que podemos hacerlo desde el shell de UNIX.
echo Hola > Hola
| Creamos el archivo Hola con una línea de contenido: Hola. |
cat < ejemplo > dl.t
| Creamos el archivo dl.t a partir del archivo ejemplo. |
wc dl.t > abc
| Crea el archivo abc con las cuentas del archivo dl.t. |
wc dl.t 1> abc
| (idem del anterior) |
wc dl.t >> abc
| ... si queremos mantener el contenido anterior del archivo abc. |
Con la salida de error estándar podemos hacer algo parecido.
mandato 2> archivo
| Crea un archivo y se envía la salida de errores del mandato |
mandato 2>> archivo
| Añade al archivo la salida de errores del mandato |
Con lo que, si queremos, podemos guardar los mensajes de error de un mandato en un archivo normal.
wc no-existo 2> WC
| Suponemos que el archivo no-existo no existe |
wc no-existo > WC 2>&1
| (idem del anterior), pero: se conecta la salida estándar al archivo WC y la salida de errores a la salida estándar!!. |
wc no-existo 2> WC 1>&2
| (idem del anterior), pero: se conecta la salida de errores al archivo WC y la salida estándar a la salida de errores!!. |
En el ejemplo anterior se ilustra cómo también podemos conectar
stdout
y stderr
entre si. Cuidado, porque si cambiamos el
orden de las redirecciones el shell se puede quejar.