LABS · JULIÁN LÓPEZ JIMÉNEZ · RECURSO GRATUITO
Crea una carpeta de trabajo, encuentra archivos con espacios y combina herramientas para obtener un resultado que puedes comprobar.
Qué necesitas: Bash y utilidades habituales: Git Bash en Windows, o Bash en macOS/Linux. Un editor de texto. Estos comandos no están escritos para PowerShell.
Tu resultado: Un pequeño inventario con nombres que contienen espacios y un informe de búsquedas, conservando todos los originales.
pwd muestra la carpeta actual. Crea una carpeta nueva fuera de documentos importantes; si ya existe, elige otro nombre antes de continuar. No necesitas privilegios de administrador. Los comandos escriben únicamente archivos de este laboratorio.
pwd
mkdir labs-bash-inicio
cd labs-bash-inicio
mkdir entrada salida
printf 'Git\nBash\nDocker\n' > 'entrada/mi lista.txt'
printf 'Pendiente: practicar comillas\nHecho: abrir terminal\n' > entrada/tareas.txt
ls entradaComprueba: entrada contiene «mi lista.txt» y «tareas.txt». Las comillas hacen que el primer nombre sea un único argumento aunque tenga un espacio.
cat lee un archivo; grep selecciona líneas que coinciden con un patrón. Un grep sin coincidencias devuelve 1: no siempre significa una avería. Consulta $? justo después del comando que quieres comprobar, porque la siguiente orden lo reemplaza.
cat 'entrada/mi lista.txt'
grep -n 'Pendiente' entrada/tareas.txt
grep 'NoExiste' entrada/tareas.txt
printf 'Código anterior: %s\n' "$?"Comprueba: La búsqueda de Pendiente muestra la línea 1. La de NoExiste no muestra texto y printf indica código 1. Un problema al abrir el archivo suele producir otro código de salida, no una coincidencia vacía.
La tubería entrega la salida de una herramienta a otra. Aquí buscamos tareas pendientes y contamos líneas. La redirección > crea o reemplaza el informe: no la apuntes a un archivo que quieras conservar. El número puede aparecer con espacios de relleno.
grep 'Pendiente' entrada/tareas.txt | wc -l
grep 'Pendiente' entrada/tareas.txt > salida/pendientes.txt
cat salida/pendientes.txtComprueba: El contador es 1 y el informe contiene la tarea pendiente. entrada/tareas.txt no se modifica.
Un glob como entrada/* expande los nombres de los archivos. Cada uso de una variable que representa una ruta va entre comillas. No uses «for archivo in $(ls entrada)»: dividiría nombres con espacios. El patrón de esta práctica tiene coincidencias porque acabamos de crearlas.
for archivo in entrada/*; do
printf 'Archivo: %s\n' "$archivo"
wc -l < "$archivo"
doneComprueba: Se procesan dos archivos, con 3 y 2 líneas respectivamente. «mi lista.txt» no se divide en dos nombres.
cp crea una copia. cmp compara el contenido, sin imprimir nada cuando ambos archivos coinciden. El destino se crea dentro de salida; si repites el comando, reemplaza esa copia.
cp 'entrada/mi lista.txt' 'salida/copia de mi lista.txt'
cmp 'entrada/mi lista.txt' 'salida/copia de mi lista.txt'
printf 'Comparación: %s\n' "$?"
cat 'entrada/mi lista.txt'Comprueba: La comparación devuelve 0 y el archivo original sigue mostrando tres líneas.
Añade una segunda tarea que empiece por Pendiente y regenera el informe. Predice el nuevo número de líneas antes de ejecutar. Después comprueba que copiar la lista no ha cambiado el archivo original.
printf 'Pendiente: repetir el laboratorio\n' >> entrada/tareas.txt
grep 'Pendiente' entrada/tareas.txt > salida/pendientes.txt
wc -l < salida/pendientes.txt
cmp 'entrada/mi lista.txt' 'salida/copia de mi lista.txt'
printf 'Comparación: %s\n' "$?">> añade al final; > reemplaza el informe anterior. El informe tiene dos líneas y cmp devuelve 0. Los comandos son pequeños: su utilidad aparece al combinarlos y entender entradas, salidas y errores.
Repite con datos distintos antes de marcarlo como practicado. Esta es una autoevaluación, no una certificación.
En De Cero a Bash continuarás con argumentos, condiciones, bucles y scripts que simulan antes de copiar archivos. Puedes repetir este laboratorio sin comprar ni registrarte.
Consultar el curso y su temarioFuente: Recurso original de Labs. Puedes guardar este HTML, abrirlo sin conexión o imprimirlo como PDF desde tu navegador. No guarda tus respuestas ni el progreso de tu cuenta.