Los programas se comunican mediante flujos de entrada y salida. La salida estándar, abreviada stdout, es el flujo que un programa utiliza normalmente para sus resultados habituales. En una terminal, la shell conecta inicialmente este flujo con la pantalla.
Text-Fu · Lección 1
stdout (Salida estándar)
Aprende cómo fluye la salida estándar hacia la terminal y cómo Bash la redirige a archivos.
Escritura en la salida estándar
La orden echo escribe sus argumentos en stdout:
$ echo Hello World
Hello World
Stdout es el descriptor de archivo 1, un número que resulta útil al redirigir más de un flujo. Los programas también pueden disponer de entrada estándar o stdin y de error estándar o stderr; las próximas lecciones examinan esos flujos.
Sin redirección, ¿adónde envía normalmente echo Hello World su salida habitual en una terminal interactiva?
Sustitución de un archivo con >
Bash interpreta > como un operador de redirección de salida. Abre el archivo de destino y conecta con él la salida estándar de la orden:
$ echo Hello World > peanuts.txt
El texto deja de aparecer en la terminal porque stdout se dirige a peanuts.txt. Si el archivo no existe, la shell lo crea. Si ya existe, lo trunca antes de que la orden escriba, por lo que se pierde el contenido anterior.
Utiliza cat para inspeccionar el resultado:
$ cat peanuts.txt
Hello World
notes.txt ya contiene texto. ¿Qué hace echo new > notes.txt?
Como la shell abre el destino antes de ejecutar la orden, comprueba la ruta antes de pulsar Enter. Un archivo existente mal escrito o no deseado puede quedar truncado aunque la orden falle después.
Adición a un archivo con >>
Utiliza >> cuando quieras añadir la nueva salida estándar después del contenido existente de un archivo:
$ echo Another line >> peanuts.txt
$ cat peanuts.txt
Hello World
Another line
Al igual que >, >> crea el destino si no existe. La diferencia está en cómo abre un archivo existente: >> añade contenido en vez de truncarlo.
¿Qué orden añade Finished al final de status.log sin borrar su contenido actual?
La redirección pertenece a la shell
La shell reconoce > y >>, elimina estos operadores de los argumentos que se pasan al programa, abre el archivo y prepara la conexión del flujo. La orden se limita a escribir en stdout como siempre.
Por ello, la misma sintaxis de redirección funciona con muchas órdenes:
$ pwd > current-directory.txt
$ ls -la >> directory-list.txt
¿Quién interpreta normalmente > en pwd > current-directory.txt?
Para practicar la redirección de flujos estándar, prueba este laboratorio:
- Redirección de entrada y salida en Linux - Practica el control del flujo de datos de las órdenes manipulando stdout, stderr y stdin mediante operadores como
>,>>,2>y la ordentee.
Lección completada
Has completado stdout (Salida estándar)
Ahora puedes redirigir la salida estándar de una orden sin confundir la sustitución con la adición de contenido.
Reconocer stdout como el flujo de los resultados habituales de una orden.
Sustituir el contenido de un archivo con
>.Conservar el contenido existente y añadir datos con
>>.Comprobar un destino antes de que la shell lo abra.
Guarda tu progreso
Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.
Crear una cuenta gratuita