Operaciones básicas con archivos en Linux

LinuxBeginner
Practicar Ahora

Introducción

Linux organiza los datos como un árbol de directorios y archivos. Los comandos operan sobre ubicaciones de ese árbol, por lo que trabajar con archivos de forma fiable comienza con tres preguntas: ¿Dónde estoy? ¿Qué hay aquí? ¿Qué ruta identifica el elemento que quiero?

En este laboratorio desarrollará estas ideas paso a paso en /home/labex/project/file-basics. Se desplazará mediante rutas absolutas y relativas, inspeccionará entradas visibles y ocultas, creará archivos y directorios, seleccionará nombres con comodines y copiará, moverá y eliminará archivos de práctica de forma segura. El último paso presenta atajos de terminal que agilizan estas operaciones sin cambiar su significado.

Localice su directorio de trabajo

En este paso, relacionará el prompt de la terminal con el directorio en el que se ejecutan los comandos.

El shell siempre tiene un directorio de trabajo actual. Las rutas relativas parten de ese directorio, por lo que comprobar su ubicación evita muchos errores de principiante. Desplácese al espacio de trabajo de este laboratorio mediante su ruta completa:

cd /home/labex/project/file-basics

Una ruta que comienza por / es una ruta absoluta. Parte de la raíz del sistema de archivos e identifica la misma ubicación independientemente del punto desde el que haya comenzado.

Muestre el directorio de trabajo:

pwd

Debería ver:

/home/labex/project/file-basics

Guarde esa ubicación como evidencia. El operador > redirige la salida al archivo starting-location.txt; como la salida se envía al archivo, esta vez no se muestra nada:

pwd > starting-location.txt

Lea el archivo para confirmar lo que se guardó:

cat starting-location.txt

La pantalla de la terminal y el archivo deberían mostrar la misma ruta absoluta.

En este paso, se desplazará por directorios cercanos usando rutas relativas y los nombres especiales . y ...

Vuelva al espacio de trabajo si es necesario:

cd /home/labex/project/file-basics

Muestre sus entradas visibles:

ls

Debería ver path-map y starting-location.txt. Entre en path-map mediante una ruta relativa, es decir, una ruta interpretada a partir del directorio actual:

cd path-map
pwd

Ahora entre en north y lea su archivo de referencia:

cd north
cat reference.txt

La salida es north reference. El nombre .. representa el directorio padre, un nivel por encima de la ubicación actual:

cd ..

Desplácese desde path-map hasta su directorio hijo south:

cd south
cat reference.txt

El nombre . representa el directorio actual. Guarde la ubicación absoluta actual en la raíz del laboratorio combinando pwd con un destino relativo que sube dos niveles:

pwd > ../../relative-location.txt

Vuelva directamente a la raíz del laboratorio mediante su ruta absoluta:

cd /home/labex/project/file-basics
cat relative-location.txt

La ruta guardada debería terminar en /path-map/south. Ha utilizado tanto desplazamientos relativos como una ruta absoluta para regresar.

Inspeccione el contenido de los directorios

En este paso, usará las opciones de ls para mostrar nombres ocultos y detalles de los archivos.

Ejecute un listado sencillo en la raíz del laboratorio:

cd /home/labex/project/file-basics
ls

Normalmente, Linux oculta los nombres que comienzan por un punto. La opción -a significa «all» e incluye esas entradas:

ls -a

Ahora debería ver .practice-note, además de . para el directorio actual y .. para su directorio padre.

La opción -l genera un listado largo con permisos, propietario, tamaño, fecha y nombre:

ls -l

Combine las opciones para inspeccionar todas las entradas en formato largo:

ls -la

Cada línea de la salida comienza con un campo de tipo y permisos. Una d inicial identifica un directorio; un - inicial identifica un archivo normal. Los permisos se estudiarán en profundidad más adelante.

Guarde los nombres, incluidas las entradas ocultas. En este espacio de trabajo controlado, ls ya los muestra en orden alfabético, por lo que todavía no necesita ningún comando adicional de ordenación:

ls -A > all-names.txt

A diferencia de -a, -A omite las entradas especiales . y .., pero conserva los demás nombres ocultos. Muestre el resultado:

cat all-names.txt

La lista debería incluir .practice-note, path-map y los archivos creados en los pasos anteriores.

Cree directorios y archivos

En este paso, creará un pequeño árbol de proyecto y escribirá texto en archivos normales.

mkdir crea un directorio. Su opción -p también crea los directorios padre que falten, por lo que un solo comando puede construir una ruta anidada:

cd /home/labex/project/file-basics
mkdir -p workspace/docs workspace/logs

Esto crea workspace y sus directorios hijos docs y logs. Inspeccione el resultado:

find workspace -maxdepth 2 -type d

touch crea un archivo vacío cuando el nombre no existe. Cree dos archivos a la vez:

touch workspace/docs/guide.txt workspace/logs/app.log

Escriba contenido en la guía. Un > individual reemplaza el destino con la salida del comando:

echo "Linux file practice" > workspace/docs/guide.txt

Añada una segunda línea con >>, que conserva el contenido existente:

echo "Paths make locations predictable" >> workspace/docs/guide.txt

Lea el archivo completo:

cat workspace/docs/guide.txt

Debería ver ambas líneas en su orden original. El archivo vacío app.log también existe y está listo para la práctica posterior con comodines.

Seleccione nombres con comodines

En este paso, creará grupos de archivos y los seleccionará mediante patrones de nombres.

Entre en el directorio de registros:

cd /home/labex/project/file-basics/workspace/logs

La expansión de llaves genera varios nombres literales antes de que se ejecute el comando. Cree registros numerados:

touch app{1..3}.log worker{1..2}.log notes.txt

El shell expande {1..3} a 1 2 3, por lo que app{1..3}.log se convierte en tres argumentos.

Un comodín es diferente: coincide con nombres que ya existen. * coincide con cualquier secuencia de caracteres:

ls *.log

La salida incluye todos los nombres que terminan en .log, pero no notes.txt.

El comodín ? coincide exactamente con un carácter. Muestre únicamente los registros app numerados:

ls app?.log

El shell expande los patrones de nombres de archivo en orden alfabético. printf imprime cada nombre expandido en una línea independiente y > guarda esas líneas:

printf '%s\n' *.log > matched-logs.txt
cat matched-logs.txt

La lista guardada debería contener app.log, app1.log, app2.log, app3.log, worker1.log y worker2.log. Poner *.log entre comillas impediría la expansión del comodín, por lo que aquí el patrón se deja intencionadamente sin comillas.

Copie, mueva y elimine archivos de forma segura

En este paso, comparará los efectos de cp, mv y rm antes de usarlos en el desafío siguiente.

Vuelva al directorio del espacio de trabajo:

cd /home/labex/project/file-basics/workspace

cp SOURCE DESTINATION crea otro archivo y deja el archivo de origen en su lugar. Cree una copia de seguridad de la guía:

cp docs/guide.txt docs/guide-backup.txt

Confirme que los dos archivos tienen contenido idéntico. cmp compara dos archivos byte por byte. No muestra nada cuando coinciden; un mensaje de error indicaría que son diferentes:

cmp docs/guide.txt docs/guide-backup.txt

mv SOURCE DESTINATION traslada o cambia el nombre de un elemento. Mueva la copia de seguridad a la raíz del espacio de trabajo y asígnele un nombre más claro:

mv docs/guide-backup.txt archived-guide.txt

Muestre ambas ubicaciones:

ls docs
ls

Debería ver guide.txt dentro de docs y archived-guide.txt en el directorio actual.

rm elimina permanentemente un archivo indicado por su nombre; normalmente no existe una papelera de reciclaje en la terminal. Elimine únicamente el archivo de notas desechable:

rm logs/notes.txt

Muestre de nuevo el directorio para comprobar la eliminación:

ls logs

notes.txt ya no debería aparecer. La guía original y su copia trasladada siguen disponibles, mientras que el único archivo desechable indicado explícitamente ha desaparecido.

Trabaje más rápido con atajos de terminal

En este paso, practicará cuatro controles de terminal que reducen la escritura y ayudan a recuperarse cuando un comando continúa ejecutándose.

Entre primero en el directorio de documentos:

cd /home/labex/project/file-basics/workspace/docs

Ejecute un comando que volverá a utilizar:

cat guide.txt

Pulse la flecha arriba (Up Arrow) una vez. El comando anterior cat guide.txt debería volver a aparecer en el prompt. Pulse Enter para ejecutarlo de nuevo. Recuperar comandos evita tener que escribirlos otra vez y aún le permite editar la línea recuperada antes de ejecutarla.

A continuación, escriba cat g sin pulsar Enter y después pulse Tab. Como solo coincide guide.txt, el shell debería completar el nombre del archivo. Pulse Enter para ejecutar el comando completado.

Ahora inicie un comando que espera continuamente:

tail -f /dev/null

tail -f sigue un archivo y espera datos nuevos. /dev/null nunca proporciona líneas útiles, por lo que el comando parece permanecer en silencio. Pulse Ctrl+C para enviar una interrupción y volver al prompt. Esta es la respuesta estándar inicial cuando debe detener un comando en primer plano.

Pulse Ctrl+L para borrar la salida antigua de la pantalla visible. Al igual que clear, esto no elimina archivos ni el historial de comandos.

Cree un marcador de finalización después de volver al prompt:

echo "Shortcuts practiced" > /home/labex/project/file-basics/shortcuts-complete.txt
cat /home/labex/project/file-basics/shortcuts-complete.txt

El marcador confirma que recuperó correctamente el prompt después de la práctica interactiva.

Resumen

Ha aprendido cómo el directorio de trabajo y las rutas controlan las operaciones con archivos. Se desplazó mediante rutas absolutas y relativas, inspeccionó entradas ocultas y metadatos, creó un árbol de directorios y archivos de texto, seleccionó nombres con comodines y comparó la copia, el traslado y la eliminación permanente. También practicó la recuperación de comandos, la finalización con Tab, Ctrl+C y Ctrl+L. En el próximo laboratorio aprenderá a encontrar ayuda fiable cuando aparezca un comando o una opción que no conozca.