En este post veremos la entrada y salida de comandos en Linux. Cuando ejecutas un comando en Linux, no solo estás lanzando un programa: estás iniciando un flujo de datos. Cada comando recibe información, la procesa y devuelve un resultado. Entender cómo funciona este intercambio es clave para dominar la terminal y aprovechar todo su potencial.
Linux gestiona este proceso mediante tres canales básicos llamados entrada y salida estándar.
En Linux, todo programa que se ejecuta en la terminal dispone de tres flujos de datos predefinidos:
| Flujo | Nombre | Descripción |
|---|---|---|
| stdin | Entrada estándar | Datos que recibe el comando |
| stdout | Salida estándar | Resultado normal del comando |
| stderr | Salida de error | Mensajes de error |
Estos flujos existen aunque no los veas, y funcionan incluso si no escribes nada explícitamente.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
👉 También te dejo por aquí una guía de comandos Linux por categorías
Descriptores de archivo
Un descriptor de archivo es un número que identifica un canal de comunicación abierto por un proceso. Los comandos no trabajan directamente con “pantalla” o “teclado”, sino con estos descriptores numéricos.
Cada proceso tiene, por defecto, tres descriptores estándar:
- 0 – stdin → entrada de datos
- 1 – stdout → salida normal
- 2 – stderr → salida de errores
Estos descriptores permiten al sistema saber por dónde entra y sale la información, y hacen posible redirigir, combinar o separar datos de forma controlada.
Entrada estándar (stdin – descriptor 0)
La entrada estándar es el canal por el que un comando recibe datos.
Por defecto, estos datos vienen del teclado aunque también puede venir de un archivo o de otro comando.
Ejemplo:
kamilinux@Kamilinux:~$ cat
Hola Linux
Hola Linux
Estoy aprendiendo stdin
Estoy aprendiendo stdin
Control + DLo que ocurre:
- cat espera datos por stdin (descriptor 0).
- Todo lo que escribes en el teclado entra por stdin.
- cat lo envía directamente a la salida estándar (stdout) y lo ves en pantalla.(por eso lo duplica)
- Al pulsar Ctrl + D, señalas el fin de la entrada y el comando termina.
Salida estándar (stdout – descriptor 1)
La salida estándar es el resultado normal de un comando cuando todo funciona correctamente.
Ejemplo:
kamilinux@Kamilinux:~$ ls
Documentos Descargas imagen.png notas.txtLo que ocurre:
- ls envía la lista de archivos por stdout
- La terminal muestra stdout en pantalla
Salida de error (stderr – descriptor 2)
La salida de error es un canal separado usado solo para errores.
Ejemplo
kamilinux@Kamilinux:~$ ls archivo_que_no_existe
ls: cannot access 'archivo_que_no_existe': No such file or directoryLo que ocurre:
- El mensaje no es stdout
- Se envía por stderr
- La terminal lo muestra igualmente, pero es un canal distinto
stdout y stderr al mismo tiempo
Un comando puede producir salida normal y errores simultáneamente.
Ejemplo
kamilinux@Kamilinux:~$ ls archivo.txt archivo_inexistente
archivo.txt
ls: cannot access 'archivo_inexistente': No such file or directoryAquí:
- archivo.txt → stdout
- Mensaje de error → stderr
Aunque se muestran juntos en pantalla, internamente son flujos distintos.
Resumen
La entrada y salida estándar en Linux define cómo los comandos reciben datos y cómo devuelven resultados y errores.
- stdin (0) recibe datos
- stdout (1) muestra resultados correctos
- stderr (2) muestra errores
Entender esto es imprescindible antes de aprender:
- redirecciones
- pipes
- automatización con scripts
