-->

Entrada/Salida Estándar y Redirecciones en Linux

Objetivo:

Comprender los conceptos de entrada estándar (stdin), salida estándar (stdout) y error estándar (stderr) en Linux, así como aprender a manipularlos mediante comandos interactivos y redirecciones de salida a ficheros (> y >>).

Escenario:

  • Herramientas: Terminal de Linux y un sistema Debian o basado en Debian.
  • Conceptos clave: Flujos estándar (stdin, stdout, stderr), descriptores de archivo (0, 1, 2), sustitución de caracteres (tr), redirecciones de sobrescritura (>) y redirecciones de anexo (>>).

Instrucciones:

Fase 1: Identificación de flujos estándar e interacción con echo y cat

  • Abre la terminal de Linux.
  • Ejecuta un comando que envíe una cadena directamente a la salida estándar (stdout):
  • echo hola
  • Provoca un mensaje de error estándar (stderr) intentando visualizar un archivo inexistente:
  • cat archivo_que_no_existe.txt
  • Ejecuta el comando cat sin argumentos. Observa cómo entra en modo interactivo esperando datos por la entrada estándar (stdin/teclado):
  • cat
  • Escribe un par de líneas de texto en la terminal (presionando Enter tras cada una) y observa cómo se replican en la salida.
  • Para salir del modo de lectura interactiva de cat, envía la señal de fin de archivo (EOF) pulsando la combinación de teclas:
  • Ctrl + D

Fase 2: Uso del comando tr con la entrada estándar

  • Ejecuta el comando tr para reemplazar un carácter por otro (por ejemplo, transformar las vocales 'a' en 'o') utilizando la entrada estándar:
  • tr a o
  • Escribe frases que contengan la letra 'a' y presiona Enter para verificar la sustitución en tiempo real.
  • Finaliza la entrada interactiva pulsando:
  • Ctrl + D
  • Limpia la terminal con:
  • clear

Fase 3: Redirección de salida con sobrescritura (>)

  • Redirige la salida del comando echo hacia un fichero llamado f1.txt en lugar de mostrarla por pantalla:
  • echo hola > f1.txt
  • Comprueba el contenido de f1.txt mediante:
  • cat f1.txt
  • Sobrescribe el contenido del fichero redirigiendo una nueva cadena con el operador >:
  • echo adios > f1.txt
  • Verifica de nuevo el contenido de f1.txt con cat f1.txt para confirmar que el texto anterior ha sido reemplazado.

Fase 4: Redirección de salida con anexo (>>)

  • Añade una nueva línea al fichero f1.txt sin borrar su contenido previo mediante el operador >>:
  • echo hola >> f1.txt
  • Agrega la fecha y hora del sistema al mismo archivo utilizando el comando date:
  • date >> f1.txt
  • Añade la lista de usuarios del sistema volcando el fichero /etc/passwd al final de f1.txt:
  • cat /etc/passwd >> f1.txt
  • Inspecciona el fichero completo para comprobar que todas las salidas se han ido acumulando:
  • cat f1.txt

Preguntas de reflexión:

  1. ¿Cuáles son los tres flujos estándar en Linux y qué descriptores numéricos tienen asignados?
  2. Por defecto, ¿cuáles son los dispositivos físicos asociados a stdin, stdout y stderr?
  3. ¿Qué ocurre cuando ejecutas un comando como cat o tr sin indicar ningún fichero como argumento?
  4. ¿Qué combinación de teclas se utiliza para enviar la señal EOF (End of File) y salir del modo de lectura por stdin?
  5. ¿Para qué sirve el comando tr y qué parámetros básicos requiere?
  6. ¿Qué diferencia fundamental existe entre el operador de redirección > y el operador >>?
  7. ¿Qué sucede si utilizas el operador > hacia un fichero que aún no existe en el sistema?
  8. ¿Qué ocurre con el contenido original de un fichero si le aplicas una redirección con >?
  9. ¿Por qué es útil la redirección de comandos del sistema como date o cat /etc/passwd hacia ficheros de texto?
  10. ¿En qué tipo de tareas (como la programación de scripts) cobra especial importancia el control de entradas y salidas estándar?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Cuáles son los tres flujos estándar en Linux y qué descriptores numéricos tienen asignados?

Los tres flujos son: Standard Input (stdin) con código 0, Standard Output (stdout) con código 1 y Standard Error (stderr) con código 2.


2. Por defecto, ¿cuáles son los dispositivos físicos asociados a stdin, stdout y stderr?

Por defecto, stdin está asociado al teclado, mientras que stdout y stderr están asociados a la pantalla (monitor).


3. ¿Qué ocurre cuando ejecutas un comando como cat o tr sin indicar ningún fichero como argumento?

Al no especificar un fichero de entrada, el comando toma como origen el flujo de entrada estándar (stdin), por lo que se queda a la espera de que el usuario introduzca datos mediante el teclado.


4. ¿Qué combinación de teclas se utiliza para enviar la señal EOF (End of File) y salir del modo de lectura por stdin?

Se utiliza la combinación Ctrl + D, la cual indica al intérprete que la entrada de datos ha finalizado.


5. ¿Para qué sirve el comando tr y qué parámetros básicos requiere?

tr (translate) sirve para sustituir o eliminar caracteres de un flujo de texto. En su uso básico requiere dos parámetros: el conjunto de caracteres a buscar y el conjunto por el que se van a reemplazar (ejemplo: tr a o).


6. ¿Qué diferencia fundamental existe entre el operador de redirección > y el operador >>?

El operador > sobrescribe el fichero de destino (borra lo existente y escribe lo nuevo), mientras que >> anexa o añade la nueva información al final del fichero sin alterar el contenido previo.


7. ¿Qué sucede si utilizas el operador > hacia un fichero que aún no existe en el sistema?

El sistema operativo crea automáticamente el fichero en la ubicación especificada y escribe en él el flujo redirigido.


8. ¿Qué ocurre con el contenido original de un fichero si le aplicas una redirección con >?

El contenido previo se destruye y queda reemplazado completamente por la nueva salida introducida.


9. ¿Por qué es útil la redirección de comandos del sistema como date o cat /etc/passwd hacia ficheros de texto?

Permite guardar registros (logs), almacenar configuraciones, generar reportes de auditoría o guardar el estado del sistema para su posterior consulta o procesamiento.


10. ¿En qué tipo de tareas (como la programación de scripts) cobra especial importancia el control de entradas y salidas estándar?

Es fundamental en Shell Scripting y administración de sistemas para automatizar tareas, encadenar procesos, registrar errores en archivos de log separados y procesar información en lote sin intervención manual.


Ficha de Laboratorio: Entrada/Salida Estándar y Redirecciones en Linux

Instrucciones de entrega:

  1. Rellena los campos y responde en este formulario desde tu navegador.
  2. Pulsa el botón de imprimir al final de la página.
  3. Selecciona "Guardar como PDF" en el diálogo de impresión.
  4. Entrega el archivo PDF en el aula virtual.

Alumno/a:      Fecha:      

Grupo:


Completa la ficha realizando las siguientes actividades:

  1. Comprueba el comportamiento predeterminado de stdin y stdout ejecutando cat sin argumentos.
    Escribe el comando ejecutado:

    Copia aquí las líneas escritas y la respuesta devuelta por el sistema:

    Indica qué combinación de teclas utilizaste para finalizar la ejecución y explica por qué:
  2. Utiliza el comando tr para transformar texto recibido por la entrada estándar.
    Escribe el comando utilizado para sustituir las letras 'a' por 'o':

    Copia aquí la salida generada al escribir un texto de prueba:

    Explica de dónde toma tr la información y a dónde envía el resultado:
  3. Crea un fichero de texto mediante la redirección de sobrescritura >.
    Escribe el comando para guardar el texto "hola" en f1.txt:

    Escribe el comando para sobrescribirlo con la palabra "adios":

    Copia la salida final de cat f1.txt:

    Explica qué ha ocurrido con el primer texto enviado ("hola"):
  4. Añade información consecutiva a un fichero mediante la redirección de anexo >>.
    Escribe el comando para añadir la palabra "hola" al fichero f1.txt:

    Escribe el comando para adjuntar la fecha del sistema al mismo fichero:

    Copia la salida obtenida al ejecutar cat f1.txt:

    Explica la diferencia de comportamiento entre usar > y >>:
  5. Redirige el contenido del fichero del sistema /etc/passwd hacia f1.txt.
    Escribe el comando utilizado:

    Copia aquí las últimas líneas del fichero comprobadas con cat f1.txt:

    ¿Qué utilidad práctica tiene volcar el resultado de un comando a un archivo de texto en lugar de mostrarlo por pantalla?