Ejecuté este comando ayer, pensé en una máquina de prueba, pero era un servidor de archivos conectado a través de SSH.
sudo rm -rf /tmp/* !(lost+found)
Mi emulador de terminal es Konsole. Mi sistema es Debian 7.
Pregunta:
¿Este comando eliminó otros archivos que no sean los archivos en / tmp?
files
filesystems
rm
tmp
algo algo
fuente
fuente

dsgsadfsfy presione enter. Ver el resultado. Si es asíbash: dsgsadfsf: command not found, entonces su caparazón esbash.Respuestas:
La sintaxis correcta en bash es la siguiente:
Como @goldilocks escribió en los comentarios, el comando original hace una expansión en la consulta (elimina todos los archivos en la
/tmpcarpeta, luego continúa y elimina todos los archivos en la carpeta de trabajo actual, en su caso lahomecarpeta).Puede intentar verificar si puede recuperar algunos de sus datos. Hay una pregunta acerca de la recuperación de datos de Linux aquí .
fuente
rm -rf / tmp^^sudo, por lo que una carpeta normal que solo se pueda escribir para root no necesariamente habría ayudado.El
!(lost+found)en surmcomando fue probablemente el error fatal:No sé exactamente qué
bashestá haciendo con eso, pero este comando a continuación imprime todo en mi/tmp/y también todo mi directorio actual (que es actualmente~):fuente
!(folder)es parte de un comando que una vez ejecuté, que eliminó todo exceptofolder.!lost+found: event not foundcomo!se usa para recuperar comandos del historial.cd /; echo !(lost+found)> _ <!(foo)funciona en bash como "todos excepto foo" solo siextglobse establece la opción Además, OP no especificó qué shell está usando, por lo que es muy difícil adivinar quérm !(lost+found)comando ha hecho exactamente en su caso.bashcomo shell predeterminado. Lo más probable es que no haya cambiado esto. Además, en Debian 7, laextglobopción está configuradatruepor defecto (acabo de comprobar esto)