Para o benefício dos leitores:
Tenha em atenção o rm -rf
neste caso! Pode criar problemas noutro local, caso seja um compartilhamento de rede! Você foi avisado!
Em quase todos os casos, se um directory
parece estar vazio, use rmdir directory
ou talvez sudo rmdir directory
. Não use rm
(ou del
no Windows). Se isso não funcionar, você precisa descobrir o que bloqueia essa solicitação, consertá-la e, em seguida, tente novamente o rmdir
.
Please note that I do not know OS-X, but I think things there are very similar to the Unix/BSD behavior.
É muito provável que o diretório em questão fosse apenas um ponto de montagem (do encfs) ou residindo em um ponto de montagem que se tornou somente leitura ou preso em algum estado inadequado (o que impediu o diretório de ser removido). Se você agora forçar a remoção do diretório, coisas muito ruins podem acontecer.
No caso em que o diretório estava realmente vazio, removê-lo (destruir a montagem etc.) não causou mais danos. Na pior das hipóteses, não estava vazio, apenas parecia estar, o que significa que você destruiu algo que talvez você não quisesse matar. Isso tudo depende do tipo de montagem, quais drivers estão em uso, etc. pp.
Se as coisas forem implementadas razoavelmente bem, normalmente nada de ruim deve acontecer. No entanto, este não é o caso normal. As coisas já estão em um estado estranho, o que significa: algo está errado, então é melhor não tentar misturar ainda mais! Se algo estiver quebrado, qualquer toque errado pode quebrá-lo.
Por exemplo, se você acertar uma condição de corrida em um compartilhamento de rede, pode ser que seu rm -rf
remova dados copiados para o compartilhamento por outra pessoa.
No entanto, rmdir
tem garantia de nunca causar danos, além de remover diretórios realmente vazios. Isso é verdade mesmo no NFS, porque o NFS só garante um comportamento verdadeiramente atômico em mkdir
e rmdir
, mas em nenhum outro lugar.
FYI:
Você pode detectar um ponto de montagem usando a ferramenta mountpoint directory
. Alternativamente, examine a saída de mount
e tente localizar suas montagens lá. Mas cuidado, pelo menos no Linux isso pode mentir. Usando o utilitário mountpoint
mais confiável, mas menos conveniente.
Nesse caso, você encontrou o ponto de montagem, pode desmontá-lo e depois remover o diretório, esta é a seguinte sequência:
umount directory
rmdir directory
Se necessário, use sudo
, como de costume.
Notas:
-
Os compartilhamentos de rede podem negar rmdir
(e qualquer outra coisa) devido a direitos de acesso.
-
Sistemas de arquivos com defeito podem negar rmdir
, dependendo da estratégia de falha. Talvez você veja uma mensagem razoável nesse caso, talvez não.
-
No Linux (e provavelmente em qualquer sistema operacional moderno), você também pode restringir o acesso usando diferentes meios (como montar algo somente leitura, recursos como no SeLinux, etc.). Isso significa que você não vê que é um ponto de montagem e não vê nada de errado, mas simplesmente não funciona. Nesse caso, você precisa procurar por algum outro motivo e pode ser profundamente enterrado no sistema operacional. Depende da ferramenta se você vir alguma mensagem de erro razoável. Talvez também dê uma olhada no syslog / kernel-log como dmesg
no Linux (desculpe, eu não sei o equivalente do OS-X).
-
Observe que o bloqueio obrigatório de arquivos também pode ser uma fonte. Enquanto isso é normal no Windows, geralmente não é o caso normal do Unix e eu nunca ouvi-lo para diretórios. Bloqueios de arquivos obrigatórios são cobertos pelo POSIX, mas são opcionais.
-
Muitas vezes, nesses casos, o diretório em questão reside em um sistema de arquivos diferente daquele em que você pensou. Você pode descobrir qual, com o comando df directory
(acho que é o mesmo no OS-X).
-
Você pode inspecionar mais profundamente com ferramentas como stat
ou statfs
no diretório. No entanto, estes são um nível um pouco baixo para pessoas normais, e muitas vezes essas ferramentas estão bem escondidas dos usuários normais.
-
Os diretórios podem ter arquivos com nomes engraçados. Como um arquivo que imediatamente apaga a saída do terminal, parece que não está lá. Tente algo como ls -al | less
ou use algo como MidnightCommander mc
.
Há trem de outras possibilidades, incluindo insetos, haxors, alienígenas, ou talvez mais coisas exóticas, como fadas. Mas normalmente não é aconselhável começar a procurar lá, em vez disso tente primeiro encontrar o erro ao seu lado, porque "errare humanum est".