Las redirecciones te permiten controlar el flujo de información entre comandos y archivos en la terminal:
qué sale por pantalla (stdout), qué entra a un comando (stdin) y qué son errores (stderr). Con operadores como >, >>, < y | puedes guardar resultados en archivos, encadenar comandos para crear flujos de trabajo potentes, y capturar errores para depuración.
Dominar redirecciones es el paso clave para dejar de “ver texto en pantalla” y empezar a construir pipelines reproducibles, logs de ejecución y procesos automatizables en Linux.
stdout (1):
Es el flujo de salida estándar de un comando. Por defecto, todo lo que un comando imprime correctamente se envía a la pantalla a través de stdout. Técnicamente es el descriptor de archivo 1 del sistema. Entender stdout te permite redirigir resultados a archivos, pasarlos a otros comandos con pipes o combinarlos con errores en logs. En automatización, stdout suele contener la información “útil” que quieres procesar, guardar o transformar.
stdin (0):
Es la entrada estándar que recibe un comando. Normalmente proviene del teclado cuando escribes en la terminal, pero también puede venir de un archivo (< archivo) o de otro comando usando un pipe (|). stdin es el descriptor de archivo 0. Comprender stdin te ayuda a encadenar comandos y a crear flujos donde un programa alimenta a otro, algo fundamental para trabajar con pipelines en Linux y en scripts.
stderr (2):
Es el flujo de errores estándar. Los mensajes de error no se envían por stdout, sino por stderr (descriptor de archivo 2). Esto permite separar la salida “correcta” de los errores, lo cual es clave para depuración y logging. Por ejemplo, puedes guardar solo los errores en un archivo para analizarlos después sin mezclar esa información con los resultados válidos del comando.
Sobrescritura vs concatenación:
La redirección con > sobrescribe el contenido del archivo destino cada vez que se ejecuta el comando, lo que puede provocar pérdida de información si no se usa con cuidado. En cambio, >> concatena la nueva salida al final del archivo, preservando el contenido previo. Esta diferencia es crucial al generar logs: > se usa para iniciar un log limpio y >> para ir agregando registros conforme se ejecutan más comandos.
Pipes:
El operador | conecta el stdout de un comando con el stdin de otro, creando una cadena de procesamiento (pipeline). Esto permite construir flujos de trabajo donde cada comando realiza una pequeña tarea especializada, y el resultado pasa al siguiente. Los pipes fomentan la filosofía Unix: herramientas pequeñas, simples y combinables para resolver tareas complejas sin necesidad de programas monolíticos.
Redirección de errores:
Permite capturar stderr en un archivo usando 2> o concatenarlo con 2>>. Esto es especialmente útil en procesos largos (instalaciones, scripts, búsquedas masivas) para revisar fallos sin perderlos en la pantalla. En entornos reales, los logs de errores son clave para auditorías, depuración y monitoreo de sistemas en producción.
Unir flujos:
Combinar stdout y stderr en un solo archivo (&> o 2>&1) sirve para tener un registro completo de todo lo que ocurrió durante la ejecución de un comando o script. Esto es muy común en despliegues, instalaciones de dependencias y procesos automatizados, donde necesitas un único archivo de log que muestre tanto los mensajes normales como los errores para análisis posterior.
Gestores de paquetes:
Los gestores de paquetes (apt, dnf, pacman, brew) permiten instalar software desde la terminal y generan mucha salida y errores durante sus procesos. Entender redirecciones en este contexto es práctico porque te permite guardar logs de instalación, revisar fallos sin repetir procesos y documentar exactamente qué ocurrió en un entorno específico. Esto es especialmente útil cuando administras sistemas, contenedores o servidores.
Redirigir salida estándar a un archivo (sobrescribe)
echo "Hola mundo" > hola.txt
cat hola.txt
Concatenar salida a un archivo