Redirección de entrada y salida en ejemplos de Linux/Unix
⚡ Resumen inteligente
La redirección en Linux y Unix cambia dónde un comando lee la entrada o envía la salida, intercambioping el teclado y la pantalla para archivos o dispositivos que utilizan operadores como el signo mayor que, el signo menor que y el operador de añadir.
La redirección es una de las características más útiles del Linux y el intérprete de comandos de Unix, porque permite decidir dónde lee un comando su entrada y dónde envía su salida. Esta página explica la redirección de salida, entrada y errores con ejemplos prácticos.
¿Qué es la redirección?
La redirección es una característica de Linux que permite, al ejecutar un comando, cambiar los dispositivos de entrada y salida estándar. El flujo de trabajo básico de cualquier Comando de Linux Es que toma una entrada y da una salida.
- El dispositivo de entrada estándar (stdin) es el teclado.
- El dispositivo de salida estándar (stdout) es la pantalla.
Mediante la redirección, se pueden modificar la entrada y la salida estándar mencionadas anteriormente.
Redirección de salida
El gráfico que aparece a continuación marca el inicio de los ejemplos de redirección de salida.
El símbolo '>' se utiliza para la redirección de la salida (STDOUT).
Ejemplo:
ls -al > listings
Aquí, la salida del comando ls -al se redirige al archivo “listings” en lugar de mostrarse en la pantalla. La captura de pantalla a continuación muestra el resultado.
Nota: Utilice el nombre de archivo correcto al redirigir la salida del comando a un archivo. Si ya existe un archivo con el mismo nombre, el comando redirigido borrará su contenido y lo sobrescribirá.
Si no desea sobrescribir un archivo, sino agregarle contenido, utilice el operador '>>'. La siguiente captura de pantalla muestra el contenido agregado con '>>'.
Puedes redirigir la salida estándar no solo a archivos, sino también a dispositivos.
$ cat music.mp3 > /dev/audio
El comando cat lee el archivo de música.mp3 y envía la salida a /dev/audio, que es el dispositivo de audio. Si la configuración de sonido de su PC es correcta, este comando reproduce el archivo de música.mp3.
Redirección de entrada
El siguiente gráfico muestra la redirección de entrada.
El símbolo '<' se utiliza para la redirección de entrada (STDIN).
Ejemplo: El programa de correo electrónico en Linux puede ayudarte a enviar correos electrónicos desde la terminal.
Puedes escribir el contenido del correo electrónico usando el teclado, el dispositivo de entrada estándar. Pero si quieres adjuntar un archivo al correo electrónico, puedes usar el operador de redirección de entrada en el siguiente formato.
mail -s "Subject" to-address < Filename
La captura de pantalla que aparece a continuación muestra el comando de correo electrónico leyendo un archivo como entrada.
Esto adjunta el archivo al correo electrónico y lo envía al destinatario.
Los ejemplos anteriores eran sencillos. Ahora veamos algunas técnicas avanzadas de redirección que utilizan descriptores de archivo.
Archivo Descriptors (FD)
En Linux y Unix, todo es un archivo. Los archivos, directorios e incluso los dispositivos son archivos. Cada archivo tiene un número asociado llamado descriptor de archivo (FD).
El siguiente diagrama muestra los flujos estándar y sus descriptores de archivo.
Tu pantalla también tiene un descriptor de archivo. Cuando se ejecuta un programa, la salida se envía al descriptor de archivo de la pantalla y la ves en tu monitor. Si la salida se enviara al descriptor de archivo de la impresora, se imprimiría.
Redirección de errores
Siempre que se ejecuta un programa o comando en la terminal, tres archivos permanecen abiertos: la entrada estándar, la salida estándar y el error estándar.
Estos archivos siempre están presentes cuando se ejecuta un programa. Como se explicó anteriormente, cada uno de estos archivos tiene asociado un descriptor de archivo.
| Archivo | Archivo Descriptor |
|---|---|
| Entrada estándar STDIN | 0 |
| Salida estándar STDOUT | 1 |
| Error estándar STDERR | 2 |
Por defecto, el flujo de errores se muestra en la pantalla. La redirección de errores los dirige a un archivo distinto de la pantalla.
¿Por qué redirección de errores?
La redirección de errores es una de las características más populares de Unix y Linux.
Los usuarios frecuentes de Unix sabrán que muchos comandos generan una gran cantidad de errores. Por ejemplo, al buscar archivos, normalmente se obtiene (permission) Los errores denegados no suelen ser útiles para quien busca un archivo específico. Al ejecutar scripts de shell, a menudo no se desea que los mensajes de error saturen la salida normal del programa.
La solución consiste en redirigir los mensajes de error a un archivo.
Ejemplo
$ myprogram 2>errorsfile
La siguiente captura de pantalla muestra este comando en la terminal.
Arriba, estamos ejecutando un programa llamado myprogram. El descriptor de archivo para el error estándar es 2. Usando “2>”, redirigimos la salida de error a un archivo llamado “errorsfile”. De esta manera, la salida del programa no se llena de errores.
Ejemplo
Aquí hay otro ejemplo que utiliza la instrucción find.
find . -name 'my*' 2>error.log
Usando el comando find, buscamos en el directorio actual “.” un archivo cuyo nombre comience con “my”, y enviamos cualquier error al archivo error.log.
Ejemplo 3: Veamos un ejemplo más complejo.
Los administradores de servidores suelen listar directorios y almacenar tanto la salida de error como la salida estándar en un archivo, que puede procesarse posteriormente. Aquí está el comando.
ls Documents ABC> dirlist 2>&1
El diagrama que aparece a continuación muestra cómo se capturan ambas secuencias en un solo archivo.
Aquí:
- 2>&1 significa que STDERR se redirige al mismo destino que STDOUT (que es la lista de directorios de archivos).
- La salida de error se redirige a la salida estándar, que a su vez se redirige a la lista de directorios de archivos. Por lo tanto, ambos flujos se escriben en la lista de directorios de archivos.
El siguiente diagrama resume cómo se relacionan la entrada, la salida y la redirección de errores.







.png)