Temas incluidos:
Creación de archivos y directorios (comandos touch
, mkdir
)
Copiar y mover archivos/directorios (cp
, mv
)
Renombrar archivos (usando mv
)
Eliminar archivos y directorios (rm
, rmdir
, opciones de precaución)
Identificar tipo de archivos (file
comando)
Buenas prácticas al manipular archivos (uso de opciones interactivas, backups simples)
Concepto desarrollado: En Linux, podemos crear archivos vacíos fácilmente o nuevos contenidos usando la terminal, así como directorios (carpetas) para organizar esos archivos. Un archivo es una secuencia de datos (texto, binario, imagen, etc.), mientras un directorio es una estructura que puede contener archivos o más directorios en su interior. Para crear un archivo vacío (por ejemplo, un marcador de posición) usamos el comando touch
. Para crear directorios se utiliza mkdir
(make directory). Ambos comandos son sencillos pero fundamentales para estructurar información en el sistema.
Cuando se crea un archivo con touch
, simplemente se genera un archivo vacío con el nombre indicado (o se actualiza la fecha de modificación de uno existente). Para crear un directorio, mkdir
requiere el nombre del nuevo folder. Podemos crear directorios anidados en una sola orden con la opción -p
(parents), que crea toda la ruta si no existe. Por ejemplo, mkdir -p proyecto/nuevo/docs
creará la estructura completa de directorios si no estaba previamente allí.
Comandos esenciales y sintaxis:
touch archivo.txt
: crea un archivo vacío llamado archivo.txt en el directorio actual (o actualiza su timestamp si ya existía).
mkdir carpeta
: crea un directorio llamado carpeta en el directorio actual.
mkdir -p ruta1/ruta2/carpeta
: crea ruta1 (si no existe), dentro crea ruta2 (si no existe), y dentro carpeta. Útil para crear jerarquías completas de una vez.
ls -ld carpeta
: tras crear un directorio, este comando muestra sus propiedades (veremos que típicamente un nuevo dir tiene permisos drwxr-xr-x
por defecto para tu usuario).
echo "Hola" > saludo.txt
: (introduciendo redirección pronto) crea un archivo saludo.txt con el contenido “Hola”. Nota: echo
imprime texto en pantalla; con >
redirigimos esa salida a un archivo, creando el archivo con ese texto. Es otra manera de crear archivos con contenido específico sin abrir un editor (más sobre redirección en el siguiente tema).
🧪 Ejercicio práctico paso a paso:
Crear un archivo vacío: En tu home (/home/estudiante
por ejemplo), ejecuta touch notas.txt
. Luego usa ls -l notas.txt
para verificar su existencia; verás un tamaño 0 bytes. Esto confirma que el archivo fue creado vacío.
Escribir contenido rápidamente: Usa el comando echo "Aprendiendo Linux" > notas.txt
. Esto sobrescribe notas.txt con el texto indicado. Confirma con cat notas.txt
que el contenido se escribió correctamente.
Crear directorios: Crea un directorio de nivel único con mkdir proyectos
. Luego, crea una estructura anidada con mkdir -p proyectos/demo1/logs
. Esto genera proyectos
(si no existía ya), dentro demo1
, dentro logs
. Comprueba con tree proyectos
(si instalaste tree, de lo contrario ls -R proyectos
) para ver la jerarquía.
Navegar a tu nuevo directorio y crear archivos allí: cd proyectos/demo1
y ejecuta touch README.md changelog.txt
. Listar con ls -l
debería mostrar dos archivos de 0 bytes. Ahora agrega texto a uno: echo "Proyecto Demo - Notas iniciales" > README.md
. Visualiza su contenido con cat README.md
.
Verificar tipos de archivos: Usa el comando file README.md
para que el sistema intente adivinar el tipo de contenido. Debe responder algo como “ASCII text” indicando que es un archivo de texto plano. Si aplicas file
a un directorio (ej. file logs
), indicará “directory”.
Crear múltiples directorios: Prueba mkdir prueba{1,2,3}
. Esto es una característica de la shell llamada expansión de llaves: creará prueba1
, prueba2
, prueba3
simultáneamente. Úsalo con cuidado, pero es útil para crear lotes de nombres similares. Comprueba con ls
que existen los tres directorios.
Puntos clave a recordar:
Crear archivos y carpetas es sencillo, pero mantener un orden lógico es vital. Piensa antes en la estructura que necesitarás; Linux te permite anidar profundamente, pero no exageres la complejidad si no es necesario.
touch
no sirve para editar contenido, solo para crear o actualizar la marca de tiempo de archivos. Es útil para crear archivos “dummy” o vacíos rápidamente.
mkdir
con -p
evita errores cuando necesitas hacer una ruta entera. Sin -p
, si intentas mkdir a/b
y “a” no existe, obtendrás error. Con -p
lo crea.
(Imagen sugerida: diagrama simple de la jerarquía de un sistema de archivos Linux mostrando la raíz /
y algunos subdirectorios estándar, para visualizar la estructura en forma de árbol. Esto ayuda a entender dónde se crean los nuevos archivos o carpetas dentro del todo.)**
Es una buena práctica usar nombres descriptivos para archivos y directorios. Evita espacios o caracteres especiales en nombres de archivos, usa guiones bajos _
o medios -
para separar palabras. Esto facilita su manejo en la terminal.
Usa file
cuando tengas duda sobre un archivo. Aunque la extensión (como .txt
) puede sugerir su tipo, no es determinante en Linux; file
inspecciona el contenido para adivinar el tipo real (texto, binario, imagen, etc.).
Errores comunes y cómo evitarlos:
Confundir archivo y directorio: Intentar usar mkdir
para crear un archivo no funcionará, o usar touch
con una ruta incompleta a un directorio producirá un archivo en otro lugar. Asegúrate de distinguir: archivos vs directorios. Un directorio se crea con mkdir
, un archivo con touch
o redirecciones/editores.
Omitir comillas en nombres con espacios: Si realmente necesitas un nombre con espacio (no recomendado), mkdir "Nueva Carpeta"
es la forma correcta. Si escribes mkdir Nueva Carpeta
sin comillas, creerá que quieres crear dos directorios: “Nueva” y “Carpeta”. Solución: evita espacios o úsalos con comillas.
No usar -p
y fallar en rutas anidadas: Como mencionado, si olvidas -p
al crear directorios intermedios, obtendrás errores. Presta atención a la estructura existente antes de crear nuevos directorios.
Creación de archivos en ubicaciones no permitidas: Si intentas touch /archivo.txt
sin ser root, fallará porque estás creando en la raíz donde un usuario normal no tiene permiso. Recuerda que tu usuario típico solo tiene escritura en su home y quizás en ciertos directorios de trabajo. Si necesitas crear algo en /etc
u otro dir del sistema, necesitarás sudo
(pero hazlo solo cuando sea apropiado, no practicaremos creación en dirs del sistema por seguridad).
Tips de rescate si algo falla:
Verificar ubicación antes de crear: Usa pwd
para asegurarte de que estás en el directorio deseado antes de crear archivos o carpetas. Esto evita sorpresas de “¿dónde quedó mi archivo?”.
Comprobación tras crear: Siempre puedes ejecutar un ls
o ls -l
justo después de un touch
o mkdir
para confirmar que el elemento apareció como esperabas.
Permisos de escritura: Si touch
te da “Permission denied”, probablemente intentas escribir donde no puedes. Cambia a un directorio donde tu usuario tenga permiso (como tu home o /tmp
). Tip: /tmp
es un directorio de uso general donde cualquier usuario puede crear archivos temporales.
Atajos al crear múltiples archivos: Además de la expansión de llaves, puedes usar touch archivo{1..5}.txt
para crear archivo1.txt hasta archivo5.txt de una vez. O mkdir 202{1..3}
para crear 2021, 2022, 2023. Esto ahorra tiempo y asegura consistencia en nombres secuenciales.
Editar al crear: Aunque touch
solo crea vacío, un truco rápido para crear y editar un archivo en un paso es usar un editor de texto desde la terminal, por ejemplo nano nuevo.txt
abrirá el editor nano, y al guardar (Ctrl+O) y salir (Ctrl+X) habrás creado el archivo con el contenido escrito. Más adelante veremos cómo usar editores de texto.
Criterios de evaluación del módulo:
✅ El alumno puede crear archivos vacíos y directorios en ubicaciones permitidas, utilizando correctamente touch
y mkdir
(incluso con estructuras anidadas usando -p
).
✅ Organiza archivos en carpetas y entiende la diferencia entre un archivo y un directorio, verificándolo con comandos como ls -l
o file
.
✅ Es capaz de agregar contenido básico a un archivo ya sea usando redirección (echo > archivo
) o un editor de texto simple, confirmando luego el contenido con cat
u otro visor.
✅ Aplica buenas prácticas de nomenclatura (sin espacios problemáticos, sin caracteres especiales innecesarios) y demuestra precaución al elegir la ubicación donde crea nuevos elementos.
❓ Preguntas de repaso recomendadas:
¿Qué diferencia hay entre touch archivo.txt
y abrir un editor para crear archivo.txt? ¿Qué contiene inicialmente un archivo creado con touch
?
Si necesitas crear una estructura de directorios 2023/proyectos/finanzas, ¿cómo lo harías con un solo comando? ¿Qué pasa si alguno de esos directorios ya existe?
Después de ejecutar echo "Hola" > hola.txt
, ¿qué comando usarías para verificar rápidamente el contenido del archivo hola.txt? ¿Y qué sucede si ejecutas nuevamente echo "Mundo" > hola.txt
?
¿Cómo crearías tres carpetas llamadas q1, q2, q3 dentro de un directorio informes con un solo comando mkdir
? (Pista: piensa en la expansión de llaves).
Si al crear un archivo recibes un error de “Permiso denegado”, ¿qué es lo primero que revisarías o harías para corregirlo?
Requisitos previos al módulo:
Haber completado los módulos 1 y 2, comprendiendo cómo moverse por el sistema de archivos y listar contenido (necesitarás cd
, pwd
y ls
constantemente para verificar tu trabajo en este módulo).
Contar con un entorno donde tengas permisos de escritura en tu directorio personal o de práctica. Si estás usando la cuenta de usuario creada anteriormente (estudiante), asegúrate de estar operando dentro de tu home o un directorio al que tengas acceso.
No se requieren paquetes adicionales para este módulo; utilizaremos las herramientas básicas incluidas en cualquier instalación estándar de CentOS Stream 9. (Opcionalmente tree para visualizar jerarquías, como ya mencionamos).
Concepto desarrollado: Una vez que sabemos crear archivos y directorios, el siguiente paso es aprender a copiarlos, moverlos, renombrarlos o eliminarlos. Estas operaciones permiten organizar y gestionar los datos. En Linux, copiar se realiza con el comando cp
(copy), mover o renombrar con mv
(move). Curiosamente, no hay un comando dedicado exclusivamente a renombrar: renombrar se logra moviendo un archivo a un mismo destino pero con otro nombre. Eliminar archivos se hace con rm
(remove) y para eliminar directorios vacíos está rmdir
, aunque rm -r
se usa para eliminar directorios con contenido de forma recursiva.
Es importante comprender que mover (mv
) es básicamente cortar-pegar: no duplica el contenido, simplemente lo traslada (o cambia de nombre). Si mueves dentro del mismo sistema de archivos, es instantáneo (solo cambia punteros); si mueves a otro disco o sistema de archivos, internamente mv
copia y luego borra el original. Copiar (cp
) sí duplica la información, dejando original e copia. Al eliminar (rm
), por defecto en Linux no hay papelera (a menos que uses entornos gráficos o utilidades especiales). Un rm
borra inmediatamente, por lo que hay que usarlo con precaución.
Comandos esenciales y sintaxis:
cp origen destino
: copia un archivo de origen a destino. El destino puede ser un nombre de archivo nuevo (para duplicarlo con otro nombre) o un directorio (para copiar dentro de él manteniendo el mismo nombre).
Ej: cp notas.txt copia_notas.txt
crea una copia del archivo notas.txt llamada _copianotas.txt en el mismo directorio.
Ej: cp ~/proyectos/demo1/README.md ~/proyectos/README_central.md
copia el README desde demo1 a proyectos con otro nombre.
Para copiar directorios completos, se debe usar la opción -r
(recursivo). Ej: cp -r ~/proyectos ~/respaldo_proyectos
copiará todo el árbol de proyectos a _respaldoproyectos.
Otras opciones útiles: -v
(verbose, muestra qué se está copiando), -i
(interactive, pregunta antes de sobreescribir si el destino existe), -p
(preserva atributos como timestamps, permisos).
mv origen destino
: mueve o renombra.
Para renombrar un archivo en el mismo directorio: mv archivo.txt nuevo_nombre.txt
(el archivo sigue en la misma ruta, solo cambia el nombre).
Para mover a otro directorio: mv archivo.txt /ruta/a/otra/carpeta/
(si especificas un directorio como destino, mantiene el nombre original dentro de la nueva ubicación). Puedes combinar: mv archivo.txt /otra/carpeta/nuevo_nombre.txt
para moverlo y renombrarlo a la vez.
mv
también acepta -i
(confirmar antes de sobreescribir archivos destino) y -v
(verbose) como cp.
rm archivo
: elimina el archivo especificado. Irreversible, así que cuidado.
rm -i archivo
: pregunta confirmación antes de borrar (útil para mayor seguridad).
rm -r directorio
: elimina un directorio y todo su contenido recursivamente. Peligroso si no se usa con cuidado.
rm -f archivo
: fuerza la eliminación sin preguntar ni mostrar errores si el archivo no existe (combínalo con -r para eliminar recursivo sin confirmación, pero esto es muy peligroso si apuntas al lugar equivocado; úsalo solo en scripts bien probados o cuando estés absolutamente seguro).
rmdir directorio
: elimina un directorio vacío. Si el directorio tiene algo dentro, rmdir
fallará; en ese caso se usa rm -r
.
🧪 Ejercicio práctico paso a paso:
Copiar un archivo: En tu directorio proyectos/demo1
creado antes, ejecuta cp README.md copia_README.md
. Luego ls -l
y verifica que ahora tienes tanto README.md como _copiaREADME.md con aparentemente el mismo tamaño. Usa cat copia_README.md
para confirmar que el contenido es igual al original.
Renombrar (mover) un archivo: Aún en demo1
, decide renombrar changelog.txt a historial.txt. Haz mv changelog.txt historial.txt
. Usa ls
para ver que changelog.txt desapareció y historial.txt está en su lugar. (Si changelog.txt tenía contenido, el contenido sigue intacto bajo el nuevo nombre).
Mover un archivo a otro directorio: Mueve historial.txt al directorio logs
que creaste dentro de demo1: mv historial.txt logs/
. Ahora haz ls logs
para confirmar que está allí. Este comando también sirve de renombrado si hubieras puesto otro nombre tras logs/
.
Copiar directorios completos: Vuelve al nivel ~/proyectos
(cd ~/proyectos
). Copia todo el directorio demo1
a un nuevo directorio demo1_copia
: cp -r demo1 demo1_copia
. Observa con tree demo1_copia
que toda la estructura y archivos se replicaron. Esta es una forma de hacer un backup manual rápido.
Eliminar archivos específicos: En demo1_copia
, borra el archivo _copiaREADME.md: rm demo1_copia/copia_README.md
. Luego ls demo1_copia
para asegurarte de que ya no aparece allí.
Eliminar un directorio vacío: Crea un directorio vacío mkdir basura
en ~/proyectos
. Ejecuta rmdir basura
. Si estaba vacío, se eliminará sin mensajes (el silencio en UNIX suele indicar éxito). Comprueba con ls
que ya no existe.
Eliminar recursivamente (¡cuidado!): Vamos a borrar la copia entera demo1_copia
. Asegúrate de estar en ~/proyectos
y ejecuta rm -r demo1_copia
. El terminal puede preguntar confirmaciones para cada archivo si tu rm
está alias a rm -i
(en CentOS a veces por defecto rm
es aliased a rm -i
). Confirma o ejecuta con -f
si quieres forzar (no recomendado sin ver qué se borrará). Tras esto, ls
no mostrará demo1_copia
más. Importante: verifica dos veces antes de usar rm -r
que estás apuntando al directorio correcto, pues no hay marcha atrás.
Usar opciones interactivas/verbosas: Repite una operación de copia o borrado utilizando -v
para observar lo que hace. Por ejemplo, cp -rv demo1 demo1_respaldo
mostrará cada archivo copiado. O rm -rv demo1_respaldo
mostrará cada archivo eliminado. Esto ayuda a seguir la acción, especialmente en operaciones grandes.
Puntos clave a recordar:
Precaución con rm
: Es definitivo. A diferencia de entornos gráficos con papelera, el terminal no guarda los archivos borrados. Por eso muchos administradores configuran alias para rm
con -i
(confirmación) por defecto, previniendo borrados accidentales. Adopta ese hábito: piensa antes de borrar y usa -i
si no estás 100% seguro.
Copiar (cp
) consume espacio doble del archivo original. Úsalo consciente de ello. Si necesitas duplicar un archivo grande, asegúrate de tener espacio en disco (df -h
puede mostrar el espacio libre, veremos comandos de monitoreo más adelante).
Renombrar con mv
es atómico en el mismo disco: es rápido y no duplica datos. Por eso renombrar un archivo de 1 GB es instantáneo, mientras copiar uno de 1 GB tardará según la velocidad del disco.
Mover (mv
) puede sobreescribir archivos destino sin mucha advertencia (a menos que uses -i
). Si haces mv archivo.txt existente.txt
, el archivo existente.txt
se perderá, reemplazado por archivo.txt. Así que, igual que con rm
, ten cuidado con destinos al mover.
Para mover múltiples archivos a un directorio, puedes listar varios orígenes y al final el directorio destino. Ej: mv file1.txt file2.txt file3.txt carpeta_destino/
. Todos esos se moverán dentro de _carpetadestino/. Lo mismo con cp
para copiar varios a la vez.
(Imagen sugerida: diagrama de flujo ilustrando las operaciones copiar/mover/borrar: por ejemplo, dos carpetas con un archivo duplicado entre ellas para cp
, un archivo moviéndose de una carpeta a otra para mv
, y un símbolo de “X” sobre un archivo para rm
. Esto ayuda a visualizar conceptualmente las diferencias entre copiar, mover y eliminar.)**
Errores comunes y cómo evitarlos:
Invertir el orden origen/destino: En cp
y mv
, el primer argumento es origen, segundo es destino. A veces se confunde y termina uno sobreescribiendo algo sin querer. Por ejemplo, cp archivo.txt copia.txt
(correcto) vs cp copia.txt archivo.txt
(esto intentaría copiar copia.txt sobre archivo.txt, perdiendo el contenido original de archivo.txt). Siempre piensa: “cp qué a dónde”. Si dices en voz alta “copiar X a Y”, ese es el orden.
Olvidar -r
al copiar directorios: cp dir1 dir2
no copiará dir1
si contiene algo; arrojará un error “omitiendo directorio ‘dir1’”. Debes usar cp -r dir1 dir2
. Similar con rm
: sin -r
no borra directorios no vacíos.
Usar rutas incorrectas y terminar con archivos fuera de lugar: Ejemplo: mv *.txt /tmp
moverá todos los .txt a /tmp. Si te equivocas de patrón podrías mover archivos inesperados. O cp * ../backup
copiará todo al parent. Asegúrate de estar en el directorio correcto y usando comodines adecuadamente. Siempre puedes hacer un ls *.txt
primero para ver qué coincidirá, antes de un mv
masivo.
No escapar espacios en nombres al mover/copiar: Si un archivo se llama “Reporte Final.pdf”, mv Reporte Final.pdf ~/docs
fallará al no encontrar “Reporte” separado de “Final.pdf”. La solución es comillas: mv "Reporte Final.pdf" ~/docs
. O renómbralo a algo sin espacios con mv "Reporte Final.pdf" Reporte_Final.pdf
antes de manipularlo más.
Borrar el directorio equivocado: El caso de terror: rm -rf / tmp/archivo
en lugar de rm -rf /tmp/archivo
(nótese el espacio después de /, indicando la raíz). Esto intentaría borrar todo el sistema. Nunca pongas espacios después de una /
sola. Este tipo de error se evita revisando el comando antes de presionar Enter. Un tip avanzado: usa --
para indicar fin de opciones, y empieza rutas absolutas con ./
para mayor seguridad (ej: rm -rf -- ./tmp/archivo
en lugar de / tmp
). Pero lo principal es estar atento a espacios accidentales.
Tips de rescate si algo falla:
Recuperar archivos borrados: En sistemas de archivos tradicionales, una vez ejecutado rm
desde la terminal, no hay comandos nativos para deshacerlo. Existen herramientas de recuperación (scalpel, photorec) pero son avanzadas y no siempre exitosas. Lo mejor es prevención: respaldos y confirmar antes de borrar. En entornos críticos, considera usar la “papelera de reciclaje” de Linux: el comando gvfs-trash
(o trash-cli
si lo instalas) en lugar de rm
, que envía archivos a ~/.local/share/Trash/
de donde podrías recuperarlos.
Interrumpir un borrado masivo: Si ejecutaste rm -r
en una ruta equivocada y ves desfilar nombres que no deseas borrar, puedes cancelar con Ctrl + C
rápidamente. Con suerte detendrás a tiempo antes de dañar demasiado. No hay garantía, pero es algo a intentar si te das cuenta tarde.
Para evitar errores graves: Algunos admins crean un archivo inmutable como “protector” en la raíz: sudo touch /.protect
y luego sudo chattr +i /.protect
. Así, si por error lanzas rm -rf / *
sin querer (omitiendo la intención de /*
), el comando fallará al topar con ese archivo inmutable antes de arrasar. Pero no confíes solo en trucos; la mejor protección es la precaución y hábitos seguros.
Ver registro de comandos (history
): Si moviste algo y no recuerdas a dónde, puedes revisar tu historial de comandos (history | grep mv
) para ver qué hiciste. Con suerte, allí ves la ruta destino que usaste para así recuperar o deshacer la acción.
Encuentra archivos movidos o copiados: Si perdiste de vista donde quedó un archivo, find
puede ayudarte (lo veremos en breve). Por ejemplo, find ~ -name "historial.txt"
buscaría en tu home ese nombre. Útil si moviste algo a sitio desconocido.
Criterios de evaluación del módulo:
✅ Sabe copiar archivos y directorios (usando -r
apropiadamente) sin sobrescribir datos importantes inadvertidamente, y verifica las copias realizadas.
✅ Sabe mover y renombrar archivos, entendiendo que es la misma acción con mv
, y comprobando resultados con listados después de mover.
✅ Elimina archivos y directorios con extremo cuidado, utilizando opciones interactivas cuando sea necesario y confirmando dos veces antes de borrar recursivamente.
✅ Conoce y aplica opciones como -i
y -v
para hacer las operaciones de forma más segura y transparente, especialmente en tareas potencialmente destructivas.
✅ Puede explicar con sus palabras las diferencias entre copiar y mover, y las implicaciones de cada una (espacio en disco, tiempo, riesgo de sobrescritura).
❓ Preguntas de repaso recomendadas:
¿Qué comando usarías para duplicar un archivo llamado informe.doc bajo un nuevo nombre _informecopia.doc? ¿Y cómo lo harías para duplicar toda una carpeta datos en otra llamada _datosbackup?
¿Cómo podrías mover todos los archivos .pdf
de tu carpeta actual a /home/usuario/pdf/
? (Piensa en comodines y el comando adecuado).
Si tienes un archivo llamado reporte.txt y quieres renombrarlo a _reporte2023.txt, ¿qué comando exacto harías? ¿El tamaño del archivo influye en la velocidad de este cambio de nombre?
Estás en /home/usuario
y ejecutas rm -rf *
. ¿Qué estarías borrando exactamente? ¿Por qué es una operación peligrosa? (Reflexiona qué hace *
).
¿Qué diferencia hay entre eliminar un directorio con rmdir
versus con rm -r
? ¿En qué situaciones usarías uno u otro?
Requisitos previos al módulo:
Haber realizado prácticas de creación de archivos y navegación (módulos anteriores), ya que copiar/mover implica moverse por directorios y entender rutas.
Tener a mano archivos y directorios de prueba en los que se pueda operar sin riesgo. Se recomienda seguir usando tu home o un directorio dedicado a pruebas (como ~/proyectos que creamos) para realizar las operaciones.
De ser posible, contar con la herramienta tree
instalada (como hicimos opcionalmente) para visualizar resultados de copias recursivas de forma amigable. Si no, usar bien ls -R
.
Precaución mental: a partir de este módulo manipularás archivos de forma destructiva (mover quita del lugar original, borrar elimina). Asegúrate de no practicar en directorios del sistema o con archivos importantes. En un entorno virtual o de aprendizaje, considéralo “laboratorio” donde un error no cause pérdida real de información crítica.