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
dsgsadfsf
y 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
/tmp
carpeta, luego continúa y elimina todos los archivos en la carpeta de trabajo actual, en su caso lahome
carpeta).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 surm
comando fue probablemente el error fatal:No sé exactamente qué
bash
está 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 found
como!
se usa para recuperar comandos del historial.cd /; echo !(lost+found)
> _ <!(foo)
funciona en bash como "todos excepto foo" solo siextglob
se 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.bash
como shell predeterminado. Lo más probable es que no haya cambiado esto. Además, en Debian 7, laextglob
opción está configuradatrue
por defecto (acabo de comprobar esto)