stdin (Entrada estándar)
100%

Text-Fu · Lección 2

stdin (Entrada estándar)

Aprende cómo leen los programas la entrada estándar y cómo conecta Bash ese flujo con un archivo.

La entrada estándar, abreviada stdin, es el flujo que un programa lee normalmente para recibir datos. En una terminal interactiva, la shell suele conectar stdin con la entrada de la terminal para que un programa pueda leer lo que escribes.

La entrada estándar y el descriptor de archivo 0

Por convención, los tres flujos estándar utilizan estos números de descriptor de archivo:

  • 0: entrada estándar (stdin)
  • 1: salida estándar (stdout)
  • 2: error estándar (stderr)

Un programa puede decidir si utiliza estos flujos y de qué manera. Una orden diseñada para leer stdin suele esperar la entrada de la terminal cuando no se le proporciona un archivo ni otra fuente de entrada.

¿Qué descriptor de archivo representa por convención la entrada estándar?

Redirección de un archivo hacia stdin

El operador < indica a Bash que abra un archivo para leerlo y lo conecte a stdin de la orden:

$ cat < peanuts.txt
Hello World

La shell se encarga de < peanuts.txt; cat se limita a leer el descriptor de archivo 0. La ruta no se pasa a cat como un operando de archivo normal.

Si el archivo de entrada no existe o no puede abrirse, la shell informa del error de redirección y no inicia la orden con esa entrada.

¿Qué orden hace que sort lea su entrada estándar desde names.txt?

Operando de archivo frente a redirección de entrada

Algunas órdenes aceptan tanto un nombre de archivo como stdin, pero los resultados pueden diferir ligeramente. Por ejemplo:

$ wc -l peanuts.txt
1 peanuts.txt
$ wc -l < peanuts.txt
1

Las dos formas cuentan líneas en los mismos datos. En la primera, wc conoce el nombre porque lo recibe como argumento. En la segunda solo recibe un flujo mediante stdin, por lo que no dispone de ningún nombre de archivo que mostrar.

¿Por qué wc -l < peanuts.txt omite normalmente peanuts.txt en la salida?

Combinación de redirecciones de entrada y salida

Una misma línea puede redirigir más de un flujo:

$ cat < peanuts.txt > banana.txt

La shell realiza dos conexiones independientes:

  1. < peanuts.txt abre peanuts.txt como stdin de cat.
  2. > banana.txt crea o trunca banana.txt y lo conecta con stdout de cat.

cat lee bytes de stdin y los escribe en stdout, por lo que banana.txt recibe el contenido del origen. Para copiar un archivo de forma ordinaria, cp peanuts.txt banana.txt expresa más directamente la intención; este ejemplo trata sobre las conexiones entre flujos.

En cat < input.txt > output.txt, ¿qué archivo proporciona stdin y cuál recibe stdout?

Para practicar la redirección de entrada y salida, prueba estos laboratorios:

  1. Redirección de entrada y salida en Linux - Practica el control del flujo de datos manipulando stdout, stderr y stdin mediante operadores como >, >>, 2> y la orden tee.
  2. Redirección de flujos de datos - Manipula los flujos estándar, combina salidas y utiliza /dev/null en operaciones más avanzadas.

Lección completada

Has completado stdin (Entrada estándar)

Ahora puedes conectar mediante la shell la entrada estándar de una orden con un archivo.

  • Reconocer stdin como descriptor de archivo 0.

  • Redirigir un archivo legible con <.

  • Distinguir un operando de nombre de archivo de una entrada redirigida.

  • Combinar deliberadamente redirecciones de stdin y stdout.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Text-Fu