command line

Se pierde el contenido de la carpeta de inicio:uso incorrecto de rm

Estoy usando Ubuntu-Mate 20.04 y he perdido la mayor parte del contenido de mi carpeta de inicio.Creo que podría ser debido a usar mal el comando "rm" con sudo,pero no estoy seguro de si podría ser algo más.

Me explico:Intentaba borrar una carpeta ("targetfolder (algo)")y su contenido en /home/usuario2 estando conectado como usuario1 (el usuario1 tiene privilegios sudo).Así que lo hice:

sudo rm -r /home/user2/targetfolder (something)/ 

Al principio rm daba algunos mensajes de error debido a los paréntesis-me refiero a esto:()-,así que sustituí parte del nombre de la carpeta por *,y lo hice:

sudo rm -r /home/user2/targetfolder */

NOTA:Tal vez usé comillas para el nombre de la carpeta debido a los espacios en blanco ('targetfolder *' ),aunque el último comando registrado en la terminal va sin comillas.

Según entiendo,rm sólo debería haber borrado cualquier carpeta cuyo nombre empezara por "targetfolder" dentro de la carpeta home del usuario2,pero parece que ha borrado la mayor parte de la carpeta home del usuario1.Añado que como no tenía claro si rm funcionaba o no cerré el terminal matando,supongo,el proceso.

Por si acaso es relevante,tanto las carpetas home del usuario1 como las del usuario2 están encriptadas usando ecryptfs (la carpeta a borrar en /home/usuario2 estaba fuera de .Private y,por tanto,sin encriptar).

Entonces,mi pregunta es si el comando rm tal como lo usé pudo haber borrado el contenido de la carpeta home del usuario1 (o incluso haber afectado al sistema).

Tengo una copia de seguridad reciente de los contenidos perdidos,pero quería asegurarme de que no se debe a algún problema distinto del comando rm.

Gracias de antemano y perdón por mi inglés.

This command

sudo rm -r /home/user2/targetfolder */

intentaría eliminar una carpeta /home/user2/targetfolder , que probablemente no existía, y luego los elementos que coincidan con */ . Eso significaría todos los directorios no ocultos (y sus contenidos) presentes en el directorio de trabajo actual. Si el directorio de trabajo actual es el directorio de inicio de user1 , entonces sí, ese es el que se vería afectado.

El error es no escapar del espacio. Un espacio es un delimitador que separa argumentos. Aquí, proporciona dos argumentos (junto a la opción -r ), /home/user2/targetfolder y */ , donde el shell expande este último para que coincida con todos los subdirectorios no ocultos (por ejemplo , Documents/ , Videos/ , etc. )

Citando el patrón del nombre del archivo,o escapando el espacio,como en

sudo rm -r "/home/user2/targetfolder "*/

or

sudo rm -r /home/user2/targetfolder\ */

habría incluido /home/user2/targetfolder (something)/ y otras carpetas coincidentes, si las hubiera.

En general, tal uso de rm -r , y luego en combinación con sudo es, como usted experimentó, extremadamente peligroso. No ejecute inmediatamente dicho comando, verifique primero.

  • Sustituya el sudo rm -r por ls -d . Eso enumerará todos los elementos incluidos en sus argumentos y le permitirá verificar qué se eliminará de antemano (Gracias a cocomac por la sugerencia).
  • Una vez que ls enumere lo que espera eliminar, presionepara recuperar ese comando y cambiar ls -d en sudo rm -r .

Si hay que eliminar un solo directorio,evite utilizar los comodines.Utilice la función de completar el tabulador.De este modo,estará seguro de que el nombre específico se introduce correctamente en la línea de comandos.