← Terminal y Línea de Comandos en Linux Bloque 3 · Manipular archivos y directorios · Tema 11 de 43

Tema 11

Crear, copiar, mover y borrar

Durante diez temas no hicimos más que mirar. Los comandos de este tema son los primeros que cambian lo que hay en el disco, y lo hacen con las reglas de la terminal: sin preguntar, sin avisar y sin papelera. Son seis, muy simples de escribir. Lo que hay que aprender no es tanto su sintaxis como sus consecuencias, y los hábitos que permiten usarlos todos los días sin perder un archivo.

1. Tres reglas antes de empezar

Los comandos de este tema comparten un comportamiento que los distingue de cualquier administrador de archivos gráfico. Conviene tenerlo presente desde la primera línea:

ReglaQué significa
No hay papelera.Lo que se borra con rm no va a ningún lugar del que se pueda recuperar.
No se pregunta.Si el destino de una copia o de un movimiento ya existe, se lo reemplaza sin confirmación.
No se avisa.Cuando todo sale bien, el comando no escribe nada. No hay un «3 archivos copiados».

No es descuido de diseño. Estos comandos se pensaron para ser usados también por otros programas y dentro de scripts, donde una pregunta detendría todo. El sistema supone que quien escribe la orden sabe lo que pide. A cambio, cada comando tiene opciones para pedirle que pregunte o que informe, y las veremos junto con cada uno.

ComandoNombreHace¿Puede destruir datos?
touchtouch, tocarCrea un archivo vacío.No
mkdirmake directoryCrea un directorio.No
cpcopyCopia.Sí: sobrescribe el destino.
mvmoveMueve o cambia el nombre.Sí: sobrescribe el destino.
rmremoveBorra.Sí: es su función.
rmdirremove directoryBorra un directorio vacío.No

2. Un taller descartable

Para practicar sin riesgo, trabajamos dentro de un directorio nuevo, que al final del tema borraremos entero:

terminal
$ cd ~/practica
$ mkdir taller
$ cd taller
$ pwd
/home/ana/practica/taller

Todos los ejemplos, salvo indicación, se ejecutan desde ~/practica/taller, y cada uno parte del estado en que lo dejó el anterior. Conviene seguirlos en orden y ejecutar ls después de cada paso, hasta que predecir el resultado se vuelva fácil.

3. touch: crear un archivo vacío

touch recibe uno o más nombres y crea, por cada uno, un archivo sin contenido:

terminal, en ~/practica/taller
$ touch lista.txt
$ ls -l
total 0
-rw-rw-r-- 1 ana ana 0 oct 12 12:10 lista.txt

El archivo existe, tiene dueño, permisos y fecha, y mide cero bytes. Parece poco útil, y sin embargo se usa mucho: para preparar un archivo que luego se editará, para hacer pruebas, como hicimos en el tema 9, y porque hay programas que solo necesitan comprobar que cierto archivo existe.

El nombre del comando delata que crear archivos no es su propósito original. touch «toca» un archivo: actualiza su fecha de modificación al momento actual. Si el archivo no existe, lo crea, y ese efecto secundario terminó siendo el uso principal.

Si el archivo…touch hace
No existeLo crea, vacío.
Ya existeCambia su fecha a la de ahora. El contenido no se toca.

La segunda fila es importante: touch nunca borra ni vacía nada, y por eso es seguro usarlo sobre un nombre que ya existe.

Un archivo con contenido se crea de otras maneras. La más directa la usamos en el tema 2: echo "Mi primer archivo" > notas.txt, que envía la salida de echo a un archivo. La estudiamos en el tema 23. La otra es un editor de texto, en el tema 13.

4. mkdir: crear directorios

mkdir crea los directorios cuyos nombres recibe. Lo usamos varias veces; ahora miramos sus dos fallos típicos y la opción que los resuelve:

terminal
$ mkdir docs
$ mkdir docs                        # otra vez: ya existe
mkdir: cannot create directory 'docs': File exists
$ mkdir viajes/2026/fotos           # falta el camino: no existe «viajes»
mkdir: cannot create directory 'viajes/2026/fotos': No such file or directory

El segundo error es el que desconcierta. mkdir crea un solo nivel: el último nombre de la ruta. Todos los anteriores deben existir. La opción -p, de parents, crea de una vez los que falten:

terminal
$ mkdir -pv viajes/2026/fotos
mkdir: created directory 'viajes'
mkdir: created directory 'viajes/2026'
mkdir: created directory 'viajes/2026/fotos'
$ mkdir -p docs                     # con -p, que ya exista no es un error
$ ls
docs  lista.txt  viajes
OpciónEfecto
-pCrea los directorios intermedios que falten, y no protesta si el directorio ya existe.
-vInforma cada directorio que crea.

La opción -v, de verbose, existe en los seis comandos del tema y hace lo mismo en todos: rompe la regla del silencio y cuenta lo que se hizo. Es buena compañía mientras se aprende.

Con las llaves del tema 9, mkdir -p arma una estructura completa en una línea, como mkdir -p proyecto/{src,docs,tests}.

5. cp: copiar archivos

cp recibe un origen y un destino, en ese orden, y deja en el destino un duplicado. El original no cambia.

terminal
$ cp ../notas.txt .                 # traer aquí el archivo del directorio padre
$ cp notas.txt copia.txt            # duplicarlo con otro nombre
$ ls -l
total 16
-rw-rw-r-- 1 ana ana   18 oct 12 12:14 copia.txt
drwxrwxr-x 2 ana ana 4096 oct 12 12:11 docs
-rw-rw-r-- 1 ana ana    0 oct 12 12:10 lista.txt
-rw-rw-r-- 1 ana ana   18 oct 12 12:14 notas.txt
drwxrwxr-x 3 ana ana 4096 oct 12 12:12 viajes

La primera línea usa las rutas del tema 6: el origen es .., el directorio padre, y el destino es ., «aquí». La segunda da un nombre nuevo a la copia. Las copias son archivos independientes: modificar una no afecta a la otra.

El listado muestra un detalle: las copias tienen la fecha de ahora, las 12:14, y no la del original, que era de las 10:32. Una copia es un archivo nuevo, y como tal recibe fecha nueva y pasa a ser de quien la hizo.

cp tiene tres formas de uso:

FormaEjemploResultado
Un archivo, a un nombre nuevocp notas.txt copia.txtUn duplicado con ese nombre.
Un archivo, a un directoriocp /etc/hostname docsUn duplicado dentro del directorio, con el mismo nombre.
Varios archivos, a un directoriocp notas.txt copia.txt docsUn duplicado de cada uno dentro del directorio.
terminal
$ cp /etc/hostname docs
$ cp notas.txt copia.txt docs
$ ls docs
copia.txt  hostname  notas.txt

En la tercera forma, el último argumento es siempre el destino y debe ser un directorio existente; todos los anteriores son orígenes. Es la forma que se usa con comodines: cp *.txt docs copia todos los archivos de texto, porque la shell convierte el patrón en la lista de nombres.

6. El destino decide el resultado

Las dos primeras formas se escriben igual: cp, un origen y otra palabra. Lo que cp hace depende de qué sea esa palabra en el momento de ejecutar, y esta es la idea más importante del tema:

El destino…cp origen destino hace
No existeCrea un archivo con ese nombre.
Es un directorioCrea la copia dentro, con el nombre del origen.
Es un archivoLo reemplaza. El contenido anterior se pierde.

La tercera fila es la primera forma de perder datos con estos comandos. Veámosla ocurrir, sobre un archivo que no importa:

terminal
$ cp lista.txt copia.txt            # lista.txt está vacío; copia.txt tenía 18 bytes
$ ls -l copia.txt
-rw-rw-r-- 1 ana ana 0 oct 12 12:18 copia.txt

No hubo mensaje ni pregunta. copia.txt tiene ahora cero bytes, y lo que contenía no existe en ninguna parte. La opción -i, de interactive, hace que cp pregunte antes de reemplazar:

terminal
$ cp -i notas.txt copia.txt
cp: overwrite 'copia.txt'? y
$ ls -l copia.txt
-rw-rw-r-- 1 ana ana 18 oct 12 12:19 copia.txt

Se responde y, de yes, para aceptar; cualquier otra cosa cancela. La ambigüedad del destino tiene también una defensa simple. Cuando la intención es copiar dentro de un directorio, se escribe el destino con una barra final:

Una barra al final, cuando el destino es un directorio

cp notas.txt docs/ dice «docs es un directorio». Si existe, funciona igual que sin la barra. Si por un error de tipeo no existe, el comando falla con un mensaje, en lugar de crear en silencio un archivo llamado docs. Tab pone esa barra automáticamente.

7. Copiar directorios: -r y -a

Sin opciones, cp se niega a copiar un directorio:

terminal
$ cp docs respaldo
cp: -r not specified; omitting directory 'docs'
$ cp -r docs respaldo
$ ls respaldo
copia.txt  hostname  notas.txt

La opción -r, de recursive, copia el directorio con todo su contenido, incluidos los subdirectorios, hasta el fondo. El resultado fue un directorio nuevo, respaldo, igual a docs.

La regla de la sección anterior se aplica aquí también, y produce la sorpresa más frecuente de cp. Ejecutar la misma línea una segunda vez no da el mismo resultado:

terminal
$ cp -r docs respaldo               # la misma línea, pero ahora «respaldo» existe
$ ls respaldo
copia.txt  docs  hostname  notas.txt
El destino…cp -r docs respaldo hace
No existeCrea respaldo como copia de docs.
Existe y es un directorioCrea la copia dentro: respaldo/docs.

Por eso, antes de copiar un directorio conviene saber si el destino existe: un ls lo responde.

Para las copias de seguridad hay una opción mejor que -r. Es -a, de archive: copia de manera recursiva y además conserva las fechas, los permisos y los enlaces de cada archivo. La copia resulta idéntica al original, no solo en contenido.

cp -rcp -a
Copia los subdirectoriosSíSí
Fechas de las copiasLa de ahoraLas originales
PermisosLos que correspondan a un archivo nuevoLos originales
Enlaces simbólicosSe copian como enlacesSe copian como enlaces
ParaDuplicar para trabajarRespaldar

8. Las opciones de cp

Reunidas, las opciones que conviene conocer:

OpciónEfecto
-iPregunta antes de sobrescribir.
-nNunca sobrescribe: si el destino existe, lo deja como está.
-uCopia solo si el origen es más nuevo que el destino, o si el destino no existe.
-vMuestra cada archivo que copia.
-rCopia directorios con su contenido.
-pConserva fechas, permisos y dueño.
-aCopia de archivo: recursiva y conservando todo.
terminal
$ cp -v notas.txt lista.txt docs/
'notas.txt' -> 'docs/notas.txt'
'lista.txt' -> 'docs/lista.txt'

-u, de update, sirve para repetir una copia grande trayendo solo lo que cambió. Para sincronizar directorios de verdad hay una herramienta dedicada, rsync, que excede este curso pero conviene tener anotada.

Antes de seguir, deshacemos el efecto de ese último ejemplo, para mantener ordenado el taller. Es también el primer uso de rm:

terminal
$ rm docs/lista.txt

9. mv: mover y renombrar

En la terminal no hay un comando para cambiar el nombre de un archivo. No hace falta: renombrar es mover. Cambiar lista.txt por compras.txt es moverlo a otro nombre dentro del mismo directorio. Las dos operaciones las hace mv.

Diferencia entre cp y mv: después de cp notas.txt copia.txt existen los dos archivos; después de mv lista.txt compras.txt solo existe compras.txt cp notas.txt notas.txt copia.txt mv lista.txt compras.txt lista.txt ya no existe
Después de cp hay dos archivos. Después de mv hay uno: el mismo, con otro nombre u otro lugar.
terminal
$ mv lista.txt compras.txt          # renombrar
$ mv compras.txt docs/              # mover a un directorio
$ mv docs/hostname equipo.txt       # mover y renombrar a la vez
$ mv respaldo seguridad             # renombrar un directorio
$ ls
copia.txt  docs  equipo.txt  notas.txt  seguridad  viajes
$ ls docs
compras.txt  copia.txt  notas.txt

La sintaxis es la de cp, con las mismas tres formas y la misma regla del destino:

El destino…mv origen destino hace
No existeRenombra: el origen pasa a llamarse así.
Es un directorioMueve el origen dentro, con su mismo nombre.
Es un archivoLo reemplaza. El contenido anterior se pierde.

La tercera fila es más grave que en cp. Con cp, tras sobrescribir quedan dos archivos iguales. Con mv, el destino desaparece y el origen ocupa su nombre: de dos archivos distintos queda uno.

10. mv en detalle

Las opciones de protección son las mismas que en cp:

OpciónEfecto
-iPregunta antes de sobrescribir.
-nNunca sobrescribe.
-vMuestra cada movimiento.
terminal
$ mv -i equipo.txt notas.txt
mv: overwrite 'notas.txt'? n
$ mv -v copia.txt duplicado.txt
renamed 'copia.txt' -> 'duplicado.txt'

Hay tres diferencias con cp que conviene saber.

Los directorios no necesitan -r. mv mueve un directorio con todo lo que contiene, sin opciones, como hicimos con respaldo.

Es instantáneo, casi siempre. Mover un archivo dentro del mismo disco no copia nada: el sistema solo cambia la anotación de en qué directorio y con qué nombre figura. Un archivo de varios gigabytes se mueve en el mismo tiempo que uno vacío. Solo cuando el destino está en otro disco, como una memoria USB, mv debe copiar los datos y borrar el original, y entonces tarda lo que una copia.

No sirve para renombrar en masa. Es un intento natural, y falla por lo que aprendimos en el tema 9:

terminal: un intento que no funciona
$ mv *.txt *.bak
mv: target '*.bak': No such file or directory

La shell expande los patrones antes de que mv los vea. Como no hay archivos .bak, el segundo queda literal, y mv recibe una lista de archivos seguida de un «directorio» llamado *.bak, que no existe. mv no sabe nada de la intención de cambiar una extensión por otra. Renombrar muchos archivos requiere un bucle, que es materia del próximo curso, o el comando rename.

11. rm: borrar archivos

rm elimina los archivos que recibe como argumentos.

terminal
$ rm equipo.txt
$ rm -i duplicado.txt
rm: remove regular file 'duplicado.txt'? y
$ ls
docs  notas.txt  seguridad  viajes

El primer rm no dijo nada, y el archivo ya no está. No fue a una papelera. Su nombre desapareció del directorio y el espacio que ocupaba quedó libre para otros datos.

Lo borrado con rm no se recupera

No existe un comando opuesto a rm. Hay herramientas forenses que a veces rescatan fragmentos, sin garantía y con mucho trabajo. A todos los efectos prácticos, el archivo dejó de existir en el momento del Enter. La única protección real es tener una copia en otro lugar.

OpciónEfecto
-iPregunta por cada archivo.
-IPregunta una sola vez, si se van a borrar más de tres archivos o un directorio.
-vMuestra cada archivo que borra.
-rBorra directorios con todo su contenido.
-fNo pregunta nunca y no informa errores por archivos inexistentes.

Una curiosidad que se aclara en el bloque 4: para borrar un archivo no hace falta permiso sobre el archivo, sino sobre el directorio que lo contiene. Borrar es quitar un nombre de la lista de un directorio, y lo que se modifica es esa lista.

12. Borrar directorios: rmdir y rm -r

Sin opciones, rm no borra directorios. Para eso hay dos caminos, uno prudente y otro expeditivo:

terminal
$ rm docs
rm: cannot remove 'docs': Is a directory
$ rmdir docs
rmdir: failed to remove 'docs': Directory not empty
$ rmdir viajes/2026/fotos           # este sí: está vacío
$ rmdir -p viajes/2026              # borra «2026» y, al quedar vacío, «viajes»
$ ls
docs  notas.txt  seguridad
rmdirrm -r
BorraSolo directorios vacíosEl directorio y todo lo que contiene
Si hay algo dentroFalla, y no borra nadaLo borra también
RiesgoNingunoEl máximo

rmdir es un comando seguro por construcción: no puede destruir datos, porque se niega a actuar si hay alguno. Cuando crees que un directorio está vacío, es la manera correcta de borrarlo: si te equivocabas, lo sabrás por el mensaje y no por la pérdida. Recuerda del tema 7 que un directorio puede parecer vacío y tener archivos ocultos.

rm -r desciende por el árbol y borra cada archivo y cada directorio que encuentra:

terminal
$ rm -r seguridad
$ rm -rv docs
removed 'docs/compras.txt'
removed 'docs/copia.txt'
removed 'docs/notas.txt'
removed directory 'docs'
$ ls
notas.txt

El directorio seguridad, con sus archivos y su subdirectorio, desapareció en un instante y sin una línea de salida.

13. rm -rf y los accidentes clásicos

La combinación rm -rf es la orden más temida de Unix. Une «todo lo que haya debajo» con «sin preguntar nada». No tiene nada de malo en sí: es la forma normal de eliminar un directorio grande. El problema es que hace exactamente lo que se le pide sobre la ruta que recibe, y que una ruta equivocada por un carácter puede ser otro lugar del sistema.

Los accidentes reales se parecen todos. Vale la pena conocerlos, porque se evitan sabiendo que existen:

Lo que se escribióLo que se queríaLo que pasa
rm -rf ~ /viejorm -rf ~/viejoUn espacio de más: dos argumentos. Borra el directorio personal entero.
rm -rf * .tmprm -rf *.tmpOtro espacio: borra todo el directorio actual. Lo vimos en el tema 9.
rm -rf *Lo mismo, pero en otro directorioNo se verificó dónde se estaba con pwd.
rm -rf /tmp/prueba /rm -rf /tmp/prueba/Un espacio antes de la barra final: el segundo argumento es la raíz.
rm -rf "$DIR"/*, en un scriptVaciar un directorioSi la variable está vacía, la ruta queda como /*: todo el sistema.

El sistema tiene dos protecciones. Los permisos impiden a un usuario común borrar lo que no es suyo, de modo que el daño se limita a su directorio personal, que es justamente donde están sus archivos. Y rm se niega expresamente a actuar sobre la raíz:

la protección de rm (no hace falta probarlo)
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe

Esa protección cubre solo el caso exacto de /. No cubre /*, ni /home, ni tu directorio personal. Y con sudo delante, los permisos dejan de proteger.

Antes de un rm -r

Tres comprobaciones, siempre: dónde estoy, con pwd; qué voy a borrar, con ls sobre la misma ruta; y la línea releída entera antes del Enter, buscando espacios donde no debe haberlos. Y una costumbre: no agregar -f por rutina. Solo hace falta cuando rm pregunta y la respuesta es siempre sí.

14. Cómo no perder datos

Nada de lo anterior es motivo para temerle a la terminal. Quienes la usan a diario borran y mueven archivos todo el tiempo sin incidentes, porque trabajan con unos pocos hábitos fijos:

  1. Mirar antes. ls con la misma ruta o el mismo patrón que se va a usar. ver
  2. Reutilizar la línea. Flecha arriba y cambiar ls por rm, en vez de escribir el patrón otra vez. historial
  3. Completar las rutas con Tab. Un nombre completado existe y está bien escrito. Tab
  4. Usar -i cuando haya duda. Sobre todo con comodines. preguntar
  5. Preferir rmdir para lo que debería estar vacío. seguro
  6. Mover en lugar de borrar. Ante la duda, mv a un directorio «para borrar», y eliminarlo días después. reversible
  7. Copiar antes de modificar. Antes de tocar un archivo importante, cp -a archivo archivo.bak. respaldo

El sexto es la versión manual de una papelera. Existe también la automática: en un escritorio como el de Ubuntu, el comando gio trash archivo envía un archivo a la papelera del entorno gráfico, de donde se lo puede restaurar. Es una buena alternativa a rm para el uso personal.

Sobre el cuarto hábito hay una advertencia que hicimos en el tema 5 y que ahora se entiende del todo. Es tentador definir alias rm='rm -i' para que siempre pregunte. El riesgo es acostumbrarse a esa red: el día que trabajes en otra máquina, o que un script use rm, no estará. Es preferible escribir el -i cuando se lo necesita, y que el hábito sea mirar antes.

Y el séptimo apunta a la única protección que funciona contra todos los errores, incluidos los que no dependen de ti, como un disco que falla: una copia de seguridad en otro dispositivo. Ningún cuidado al escribir la reemplaza.

15. Dejar todo como estaba

Queda desarmar el taller. Es un buen ejercicio de lo aprendido, aplicando las comprobaciones:

terminal
$ cd ..                             # no se puede borrar cómodamente el directorio en el que se está
$ pwd
/home/ana/practica
$ ls taller                         # qué voy a borrar
notas.txt
$ rm -r taller
$ ls
fotos  informe.txt  notas.txt

El directorio de práctica quedó como al comenzar. El notas.txt que se borró era la copia del taller; el original nunca se tocó.

La referencia rápida del tema:

ComandoQué hace
touch archivoCrea un archivo vacío, o actualiza su fecha.
mkdir dirCrea un directorio.
mkdir -p a/b/cCrea toda la ruta.
cp origen destinoCopia un archivo.
cp archivos… dir/Copia varios archivos a un directorio.
cp -r dir copiaCopia un directorio con su contenido.
cp -a dir copiaLo mismo, conservando fechas y permisos.
mv viejo nuevoRenombra.
mv archivos… dir/Mueve a un directorio.
rm archivoBorra un archivo.
rmdir dirBorra un directorio vacío.
rm -r dirBorra un directorio con todo su contenido.
-i, -vEn cp, mv y rm: preguntar; informar.

Sabemos crear archivos, pero todavía no mirar bien lo que tienen dentro: cat muestra todo de golpe, y con un archivo largo no alcanza. En el tema 12 vemos las herramientas para leer contenido: por páginas, solo el principio, solo el final, o a medida que se escribe.

16. Resumen

17. Preguntas de repaso

Intenta responder cada una antes de abrir la respuesta.

1. ¿Qué hace touch notas.txt si el archivo ya existe y tiene contenido?

Actualiza su fecha de modificación al momento actual. El contenido no cambia.

2. mkdir a/b/c responde «No such file or directory». ¿Por qué, y cómo se resuelve?

Porque mkdir crea solo el último directorio de la ruta, y a o a/b no existen. Con mkdir -p a/b/c se crean todos los que falten.

3. ¿Qué hace cp informe.txt datos en cada caso: si datos no existe, si es un directorio y si es un archivo?

Si no existe, crea un archivo datos que es copia de informe.txt. Si es un directorio, crea datos/informe.txt. Si es un archivo, lo reemplaza y su contenido anterior se pierde.

4. ¿Qué ventaja tiene escribir cp informe.txt datos/, con la barra final?

Que declara que el destino es un directorio. Si datos no existe, el comando falla con un mensaje en lugar de crear un archivo con ese nombre.

5. Ejecutas dos veces seguidas cp -r fotos copia. ¿Qué hay al final?

La primera vez se crea copia, igual a fotos. La segunda, como copia ya existe y es un directorio, se crea copia/fotos dentro.

6. ¿Qué diferencia hay entre cp -r y cp -a?

Las dos copian un directorio con su contenido. -a conserva además las fechas, los permisos y el dueño de cada archivo, y es la adecuada para copias de seguridad.

7. ¿Cómo se cambia el nombre de un archivo?

Con mv nombre-viejo nombre-nuevo. Renombrar es mover a otro nombre.

8. ¿Por qué sobrescribir con mv es más grave que con cp?

Porque después de cp quedan el origen y el destino, con el mismo contenido. Después de mv queda un solo archivo: el destino anterior se perdió y el origen ya no está en su lugar.

9. ¿Por qué mover un archivo de 10 GB dentro del mismo disco es instantáneo?

Porque no se copian los datos. El sistema solo cambia en qué directorio y con qué nombre figura el archivo.

10. ¿Por qué no funciona mv *.txt *.md para cambiar la extensión de varios archivos?

Porque la shell expande los patrones antes de ejecutar. mv recibe la lista de archivos .txt y, como último argumento, un patrón que no coincide con nada o un archivo cualquiera, que toma por destino.

11. ¿Qué diferencia hay entre rmdir y rm -r?

rmdir borra un directorio solo si está vacío. rm -r lo borra con todo lo que contenga.

12. ¿Qué hace cada letra de rm -rf?

-r hace que borre directorios con todo su contenido. -f, que no pregunte nunca ni informe errores por archivos que no existen.

13. ¿Qué diferencia hay entre rm -rf ~/viejo y rm -rf ~ /viejo?

La primera borra el directorio viejo del directorio personal. En la segunda, el espacio separa dos argumentos: borra el directorio personal completo e intenta borrar /viejo.

14. ¿Qué tres cosas conviene comprobar antes de un rm -r?

El directorio de trabajo, con pwd; qué se va a borrar, con ls sobre la misma ruta; y la línea completa, releída antes de pulsar Enter.

15. ¿Se puede recuperar un archivo borrado con rm?

En la práctica, no: no hay papelera ni comando para deshacer. La protección es tener una copia de seguridad, o usar un comando que sí envíe a la papelera, como gio trash.

Para practicar

  1. En ~/practica, crea con una sola línea la estructura curso/{teoria,ejercicios/{resueltos,pendientes}} y verifícala con tree o con find.
  2. Crea en curso/teoria los archivos tema1.txt a tema5.txt con touch y las llaves.
  3. Copia /etc/hostname y /etc/os-release a curso/ejercicios/pendientes/ con un solo comando y la opción -v.
  4. Renombra curso/teoria/tema5.txt como anexo.txt, y luego muévelo a curso.
  5. Haz una copia de curso llamada curso-respaldo con cp -a. Compara las fechas de los archivos con ls -l en el original y en la copia. Repite con cp -r hacia curso-copia y observa la diferencia.
  6. Intenta copiar hostname sobre os-release con cp -i, y responde que no. Luego prueba la misma copia con -n: ¿qué ocurre?
  7. Intenta borrar curso/ejercicios con rmdir y lee el mensaje. Bórralo después de la manera adecuada.
  8. Borra todos los archivos .txt de curso/teoria: primero mira la lista con ls, y luego recupera la línea con la flecha arriba y cambia el comando.
  9. Crea un archivo llamado -prueba.txt con touch -- -prueba.txt. Intenta borrarlo con rm -prueba.txt, lee el mensaje y bórralo de dos maneras correctas.
  10. Elimina curso, curso-respaldo y curso-copia, aplicando las tres comprobaciones. Al terminar, ~/practica debe contener solo fotos, informe.txt y notas.txt.