Para beneficio de los lectores:
¡Cuidado rm -rf
en tal caso! ¡Puede crear problemas en otro lugar en caso de que sea un recurso compartido de red! ¡Usted ha sido advertido!
En casi todos los casos, si a directory
parece estar vacío, use rmdir directory
o tal vez sudo rmdir directory
. No lo use rm
(o del
bajo Windows). Si esto no funciona, debe averiguar qué bloquea esta solicitud, corregirla y luego volver a intentarlo rmdir
.
Tenga en cuenta que no conozco OS-X, pero creo que las cosas allí son muy similares al comportamiento de Unix / BSD.
Es muy probable que el directorio en cuestión fuera solo un punto de montaje (desde los encfs) o que residiera en un punto de montaje que se volviera de solo lectura o se atascara en algún estado incorrecto (lo que impidió que se eliminara el directorio). Si ahora fuerza la eliminación del directorio, pueden ocurrir cosas muy malas.
En el buen caso, el directorio realmente estaba vacío, por lo que quitarlo (destruir el montaje, etc.) no causó más daño. En el mal caso, no estaba vacío, simplemente parecía estarlo, lo que significa que destrozaste algo que quizás no querías matar. Todo esto depende del tipo de montaje, qué controladores están en uso, etc. pp.
Si las cosas se implementan razonablemente bien, normalmente no debería pasar nada malo. Sin embargo, este no es el caso normal. Las cosas ya están en un estado extraño, lo que significa: algo está mal, ¡así que mejor no intentes mezclarlo aún más! Si algo está roto, cualquier toque incorrecto podría romperlo.
Por ejemplo, si alcanza una condición de carrera en un recurso compartido de red, puede ser que rm -rf
elimine los datos que alguien más acaba de copiar al recurso compartido.
Sin embargo, rmdir
se garantiza que nunca hará daño, además de eliminar directorios realmente vacíos. Esto es incluso cierto en NFS, porque NFS solo garantiza un comportamiento verdaderamente atómico en mkdir
y rmdir
, pero en ningún otro lugar.
FYI:
Puede detectar un punto de montaje con la herramienta mountpoint directory
. Alternativamente, mire la salida de mount
e intente detectar sus monturas allí. Pero cuidado, al menos bajo Linux esto podría mentir. Usando la mountpoint
utilidad más confiable pero menos conveniente.
En ese caso, encontró el punto de montaje, puede desmontarlo y luego eliminar el directorio, esta es la siguiente secuencia:
umount directory
rmdir directory
Si es necesario sudo
, use , como siempre.
Notas:
Los recursos compartidos de red pueden negarse rmdir
(y cualquier otra cosa) debido a los derechos de acceso.
Los sistemas de archivos defectuosos pueden negarse rmdir
, dependiendo de la estrategia de falla. Tal vez verá un mensaje razonable en ese caso, tal vez no.
Bajo Linux (y probablemente cualquier sistema operativo moderno) también puede restringir el acceso utilizando diferentes medios (como montar algo de solo lectura, capacidades como en SeLinux, etc.). Esto significa que no ve que es un punto de montaje y que no ve nada malo, pero simplemente no funciona. En ese caso, debe buscar alguna otra razón y puede estar muy enterrado en el sistema operativo. Depende de la herramienta si ve algún mensaje de error razonable. También quizás eche un vistazo al syslog / kernel-log como dmesg
en Linux (lo siento, no sé el equivalente de OS-X).
Tenga en cuenta que el bloqueo obligatorio de archivos también puede ser una fuente. Si bien esto es normal en Windows, generalmente no es el caso normal de Unix y nunca lo escuché por directorios. Los bloqueos de archivos obligatorios están cubiertos por POSIX, pero son opcionales.
Muy a menudo en tales casos, el directorio en cuestión reside en un sistema de archivos diferente al que pensaba. Puede averiguar cuál, con el comando df directory
(creo que esto es lo mismo en OS-X).
Puede inspeccionar más a fondo con herramientas como stat
o statfs
en el directorio. Sin embargo, estos son un nivel un poco bajo para las personas normales, y con frecuencia estas herramientas están bien ocultas para los usuarios normales.
Los directorios pueden tener archivos con nombres divertidos. Como un archivo que borra inmediatamente la salida del terminal, por lo que parece que no está allí. Pruebe algo como ls -al | less
o use algo como MidnightCommander mc
.
Hay muchas otras posibilidades, como insectos, haxors, extraterrestres o quizás cosas más exóticas como las hadas. Pero, por lo general, no es aconsejable comenzar a buscar allí, primero trate de encontrar el error a su lado, porque "errare humanum est".
rmdir
hacerlo, pero a menudo es la causa por la que no se puede desmontar un volumen).