Objetivo:
Profundizar en el uso avanzado del comando de recuento wc (Word Count) mediante sus distintas opciones (-l, -w, -c, -m, -L) aplicadas con tuberías, y aprender a duplicar flujos de datos hacia archivos y pantalla simultáneamente utilizando el comando tee.
Escenario:
- Herramientas: Terminal de Linux y un sistema Debian o basado en Debian.
- Conceptos clave: Conteo de líneas, palabras, bytes y caracteres (
wc), longitud máxima de línea (wc -L), duplicación de flujo de salida (tee), diagnóstico de red (ping), captura interactiva en vivo y combinación de tuberías con redirecciones.
Instrucciones:
Fase 1: Opciones avanzadas del comando wc
- Abre la terminal de Linux.
- Comprueba el contenido del archivo
nombrescreado en la práctica anterior (o créalo de nuevo si no existe): - Ejecuta el recuento completo por defecto pasando el contenido mediante una tubería:
- Observa los tres valores devueltos (líneas, palabras, bytes/caracteres).
- Filtra el recuento solo por cantidad de líneas usando la opción
-l: - Filtra el recuento únicamente por palabras con la opción
-w: - Mide el tamaño en bytes del archivo con la opción
-c: - Mide el número total de caracteres con la opción
-m: - Obtén la longitud (en caracteres) de la línea más larga del archivo utilizando la opción
-L:
cat nombres
cat nombres | wc
cat nombres | wc -l
cat nombres | wc -w
cat nombres | wc -c
cat nombres | wc -m
cat nombres | wc -L
Fase 2: Conteo aplicado a información del sistema
- Cuenta cuántos usuarios hay registrados en el sistema leyendo el fichero
/etc/passwdmediante una tubería: - Cuenta cuántos elementos o archivos existen en el directorio actual filtrando un listado con
ls -l: - Usa el comando
uptime(ouptimetraducido según el sistema) para calcular el número de palabras y caracteres de su salida:
cat /etc/passwd | wc -l
ls -l | wc -l
uptime | wc -w
uptime | wc -c
Fase 3: Duplicación de salidas con el comando tee
- Limpia la pantalla de la terminal.
- Muestra en pantalla el listado detallado de archivos y al mismo tiempo guárdalo en un fichero llamado
listar.txtmediantetee: - Verifica que el fichero
listar.txtha sido creado correctamente y revisa su contenido: - Envía el listado de archivos hacia dos ficheros diferentes a la vez (
listar1.txtylistar2.txt) manteniendo la salida en la terminal: - Comprueba con un comodín que ambos archivos se hayan generado en tu directorio:
ls -l | tee listar.txt
cat listar.txt
ls -l | tee listar1.txt listar2.txt
ls -l listar*
Fase 4: Captura en tiempo real con tee y comandos continuos
- Lanza una prueba de conectividad de red con
pinghacia un sitio web (por ejemplo,google.com), visualizando los resultados en pantalla mientras se guardan en un archivoping.txt: - Nota: Se incluye la opción
-c 4para enviar exactamente 4 paquetes y finalizar automáticamente sin requerirCtrl + C. - Comprueba el contenido del archivo generado para confirmar que las respuestas del comando se almacenaron en disco:
- Limpia la pantalla de la terminal con:
ping -c 4 google.com | tee ping.txt
cat ping.txt
clear
Preguntas de reflexión:
- ¿Qué tres métricas muestra por defecto el comando
wccuando se ejecuta sin ninguna opción? - ¿Qué diferencia existe entre las opciones
-l(minúscula) y-L(mayúscula) en el comandowc? - ¿En qué casos prácticos el número de bytes (
wc -c) puede diferir del número de caracteres (wc -m) en un fichero de texto? - ¿Cómo podemos usar el comando
wc -lcombinado concat /etc/passwdpara averiguar el número total de cuentas de usuario del sistema? - ¿Cuál es la función principal del comando
teeen Linux y por qué recibe ese nombre? - ¿Qué diferencia hay entre usar una redirección normal con
>y canalizar los datos con una tubería haciatee? - ¿Cómo permite
teeenviar la salida de un comando a múltiples archivos simultáneamente? - Al ejecutar
ping google.com | tee ping.txt, ¿qué ocurre con el archivo si detenemos el proceso conCtrl + Cantes de que termine? - ¿Cómo podrías combinar
teeywcpara guardar el resultado de un comando en un archivo y a la vez contar sus líneas? - En el ámbito de la administración de sistemas, ¿por qué es útil registrar en un archivo el resultado de diagnósticos como
pingo listados de ficheros mientras se visualizan en pantalla?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué tres métricas muestra por defecto el comando wc cuando se ejecuta sin ninguna opción?
Muestra, en este orden: el número de líneas, el número de palabras y el número de bytes/caracteres del flujo o fichero analizado.
2. ¿Qué diferencia existe entre las opciones -l (minúscula) y -L (mayúscula) en el comando wc?
La opción -l cuenta el número total de líneas del texto, mientras que -L muestra la longitud (en número de caracteres) de la línea más larga del archivo.
3. ¿En qué casos prácticos el número de bytes (wc -c) puede diferir del número de caracteres (wc -m) en un fichero de texto?
Ocurre cuando el archivo contiene caracteres multibyte (como acentos, eñes, tildes, caracteres Unicode o emojis) bajo codificaciones como UTF-8, donde un solo carácter puede ocupar 2 o más bytes de memoria.
4. ¿Cómo podemos usar el comando wc -l combinado con cat /etc/passwd para averiguar el número total de cuentas de usuario del sistema?
Dado que en el archivo /etc/passwd cada línea representa a un usuario del sistema, al hacer cat /etc/passwd | wc -l contamos el total de líneas y obtenemos directamente la cantidad de usuarios registrados.
5. ¿Cuál es la función principal del comando tee en Linux y por qué recibe ese nombre?
Su función es leer la entrada estándar y escribir su contenido simultáneamente tanto en la salida estándar (pantalla) como en uno o varios archivos. Su nombre proviene de la conexión en forma de "T" usada en fontanería para dividir un flujo de agua en dos direcciones.
6. ¿Qué diferencia hay entre usar una redirección normal con > y canalizar los datos con una tubería hacia tee?
Con > la salida del comando se guarda en el archivo y la pantalla queda vacía. Con tee la salida se muestra en tiempo real en la pantalla y, al mismo tiempo, se guarda en el archivo especificado.
7. ¿Cómo permite tee enviar la salida de un comando a múltiples archivos simultáneamente?
Simplemente especificando los nombres de todos los archivos de destino separados por espacios como argumentos del comando (ejemplo: ls -l | tee archivo1.txt archivo2.txt).
8. Al ejecutar ping google.com | tee ping.txt, ¿qué ocurre con el archivo si detenemos el proceso con Ctrl + C antes de que termine?
El archivo conservará todo el texto que fue capturado y escrito en él hasta el preciso instante en que se envió la señal de interrupción con Ctrl + C.
9. ¿Cómo podrías combinar tee y wc para guardar el resultado de un comando en un archivo y a la vez contar sus líneas?
Encadenándolos en un pipeline: comando | tee archivo.txt | wc -l. De este modo, tee guarda la salida en archivo.txt y le pasa el flujo a wc -l para mostrar el recuento final de líneas por pantalla.
10. En el ámbito de la administración de sistemas, ¿por qué es útil registrar en un archivo el resultado de diagnósticos como ping o listados de ficheros mientras se visualizan en pantalla?
Permite al administrador monitorizar en tiempo real lo que está sucediendo en la terminal y, a la vez, mantener una copia de auditoría o registro de log para análisis posteriores, depuración o documentación de problemas.
Ficha de Laboratorio: Profundización en Wc (Word Count) y Comando Tee
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:
- Analiza las distintas métricas de recuento de un archivo con las opciones de
wc.
Escribe los comandos para contar líneas (-l), palabras (-w) y bytes (-c) del archivonombrespasándolo por tubería:
Copia la salida obtenida para cada una de las opciones:
Explica la diferencia entre contar palabras (-w) y contar líneas (-l):
- Encuentra la longitud de la línea más larga usando la opción
-Ldewc.
Escribe la orden para determinar los caracteres de la línea más larga del archivonombres:
Copia el resultado devuelto por la terminal:
Indica a qué nombre o línea del fichero corresponde esa longitud máxima y por qué:
- Aplica el recuento de líneas de
wc -lpara inspeccionar ficheros del sistema.
Escribe la orden para contar el número de usuarios del sistema registrados en/etc/passwd:
Copia el número total devuelto por la consola:
Explica por qué la cantidad de líneas coincide con el número de usuarios del sistema:
- Duplica la salida estándar a pantalla y a un archivo simultáneamente con
tee.
Escribe la orden para guardar el listadols -lenlistar.txtmientras se muestra por pantalla:
Copia una muestra de la salida producida en la consola:
Explica qué ventaja tiene el comandoteerespecto al uso exclusivo de la redirección>:
- Captura ejecuciones continuas en tiempo real combinando
pingytee.
Escribe el comando para enviar 4 paquetes ping agoogle.comguardando la respuesta enping.txt:
Copia el contenido almacenado enping.txttras comprobarlo concat:
Explica la utilidad del comandoteepara guardar registros de red o de auditoría en vivo: