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):
- Provoca un mensaje de error estándar (stderr) intentando visualizar un archivo inexistente:
- Ejecuta el comando
catsin argumentos. Observa cómo entra en modo interactivo esperando datos por la entrada estándar (stdin/teclado): - Escribe un par de líneas de texto en la terminal (presionando
Entertras 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:
echo hola
cat archivo_que_no_existe.txt
cat
Ctrl + D
Fase 2: Uso del comando tr con la entrada estándar
- Ejecuta el comando
trpara reemplazar un carácter por otro (por ejemplo, transformar las vocales 'a' en 'o') utilizando la entrada estándar: - Escribe frases que contengan la letra 'a' y presiona
Enterpara verificar la sustitución en tiempo real. - Finaliza la entrada interactiva pulsando:
- Limpia la terminal con:
tr a o
Ctrl + D
clear
Fase 3: Redirección de salida con sobrescritura (>)
- Redirige la salida del comando
echohacia un fichero llamadof1.txten lugar de mostrarla por pantalla: - Comprueba el contenido de
f1.txtmediante: - Sobrescribe el contenido del fichero redirigiendo una nueva cadena con el operador
>: - Verifica de nuevo el contenido de
f1.txtconcat f1.txtpara confirmar que el texto anterior ha sido reemplazado.
echo hola > f1.txt
cat f1.txt
echo adios > f1.txt
Fase 4: Redirección de salida con anexo (>>)
- Añade una nueva línea al fichero
f1.txtsin borrar su contenido previo mediante el operador>>: - Agrega la fecha y hora del sistema al mismo archivo utilizando el comando
date: - Añade la lista de usuarios del sistema volcando el fichero
/etc/passwdal final def1.txt: - Inspecciona el fichero completo para comprobar que todas las salidas se han ido acumulando:
echo hola >> f1.txt
date >> f1.txt
cat /etc/passwd >> f1.txt
cat f1.txt
Preguntas de reflexión:
- ¿Cuáles son los tres flujos estándar en Linux y qué descriptores numéricos tienen asignados?
- Por defecto, ¿cuáles son los dispositivos físicos asociados a stdin, stdout y stderr?
- ¿Qué ocurre cuando ejecutas un comando como
catotrsin indicar ningún fichero como argumento? - ¿Qué combinación de teclas se utiliza para enviar la señal EOF (End of File) y salir del modo de lectura por stdin?
- ¿Para qué sirve el comando
try qué parámetros básicos requiere? - ¿Qué diferencia fundamental existe entre el operador de redirección
>y el operador>>? - ¿Qué sucede si utilizas el operador
>hacia un fichero que aún no existe en el sistema? - ¿Qué ocurre con el contenido original de un fichero si le aplicas una redirección con
>? - ¿Por qué es útil la redirección de comandos del sistema como
dateocat /etc/passwdhacia ficheros de texto? - ¿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:
- Rellena los campos y responde en este formulario desde tu navegador.
- Pulsa el botón de imprimir al final de la página.
- Selecciona "Guardar como PDF" en el diálogo de impresión.
- Entrega el archivo PDF en el aula virtual.
Alumno/a: Fecha:
Grupo:
Completa la ficha realizando las siguientes actividades:
- Comprueba el comportamiento predeterminado de stdin y stdout ejecutando
catsin 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é:
- Utiliza el comando
trpara 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 tomatrla información y a dónde envía el resultado:
- Crea un fichero de texto mediante la redirección de sobrescritura
>.
Escribe el comando para guardar el texto "hola" enf1.txt:
Escribe el comando para sobrescribirlo con la palabra "adios":
Copia la salida final decat f1.txt:
Explica qué ha ocurrido con el primer texto enviado ("hola"):
- Añade información consecutiva a un fichero mediante la redirección de anexo
>>.
Escribe el comando para añadir la palabra "hola" al ficherof1.txt:
Escribe el comando para adjuntar la fecha del sistema al mismo fichero:
Copia la salida obtenida al ejecutarcat f1.txt:
Explica la diferencia de comportamiento entre usar>y>>:
- Redirige el contenido del fichero del sistema
/etc/passwdhaciaf1.txt.
Escribe el comando utilizado:
Copia aquí las últimas líneas del fichero comprobadas concat f1.txt:
¿Qué utilidad práctica tiene volcar el resultado de un comando a un archivo de texto en lugar de mostrarlo por pantalla?