Redireccionamiento#
Un programa en ejecución o un proceso, necesita leer o recibir información desde algún lugar para luego escribir la salida, por ejemplo un comando ejecutado en una shell, lee la información de entrada desde el teclado y luego envía el resultado (salida) hacia la ventana de la terminal.
Los procesos usan unos canales numerados que se conocen como file descriptors para obtener su información de entrada y luego enviar la información de salida o resultado.
| Número | Nombre del Canal | Descripción | Conexión por defecto | Uso |
|---|---|---|---|---|
| 0 | stdin | Entrada Estándar | Teclado | Solo Lectura |
| 1 | stdout | Salida Estándar | Terminal | Solo Escritura |
| 2 | stderr | Error Estándar | Terminal | Solo Escritura |
| 3+ | filename | Otros Archivos | none | lectura y/o escritura |
Uso de redireccionamiento#
| Uso | Descripción |
|---|---|
| comando > archivo | Redirige la salida estándar a un archivo y lo sobrescribe. |
| comando >> archivo | Redirige la salida estándar a un archivo, agregando el contenido al final del archivo. |
| comando 2>archivo | Redirige el error estándar a un archivo y lo sobrescribe. |
| comando 2>/dev/null | Redirige el error estándar a /dev/null para ser descartado. |
| comando >archivo 2>&1 | Redirige la salida estándar y el error estándar a un archivo. |
| comando >>archivo 2>&1 | Redirige la salida estándar y el error estándar a un archivo, agregando el contenido al final del archivo. |
Ejemplos#
Tuberías#
Una tubería es una secuencia de comandos separados por un carácter de pipe (|). Un pipe conecta la salida estándar del primer comando con la entrada estándar del siguiente comando.
Ejemplos#
Tuberías, redirección y el comando tee#
Cuando la redirección es combinada con una tubería, la shell configura la tubería primero luego redirige la E/S. Si se usa la redirección de la salida en medio de una tubería, la salida iría hacia el archivo y no llegaría al siguiente comando.
En el siguiente ejemplo la salida del comando ls se envía a un archivo y por lo tanto el comando less no recibe nada.
Para evitar lo anterior podemos hacer uso del comando tee, que básicamente nos permite dirigir la salida estándar de un comando hacia un archivo o una terminal, y a su vez hacia la entrada estándar de otro comando.


