Eu tenho um link simbólico para um diretório importante. Eu quero me livrar desse symlink, enquanto mantenho o diretório atrás dele.
Eu tentei rm' e voltar
rm: cannot remove 'foo'. Eu tentei
rmdir' e voltei rmdir: falhei em remover 'foo': Diretório não vazio';
rmdir'
Eu então progredi através de rm -f',
rm -rf' e `sudo rm -rf'.
Depois fui procurar os meus reforços.
Existe uma maneira de se livrar da ligação simbólica de deitar fora o bebé com a água do banho?
# this works
rm foo
# versus
rm foo/
Basicamente, você precisa dizer a ele para apagar um arquivo, não para apagar um diretório. Eu acredito que a diferença entre rm
e rmdir
existe devido às diferenças na forma como a biblioteca C trata cada um deles.
De qualquer forma, o primeiro deve funcionar, enquanto o segundo deve reclamar que o foo é um diretório.
Se não funcionar como acima, então verifique as suas permissões. Você precisa de permissão de escrita no diretório que contém os arquivos para removê-los.
use o comando "unlink" e certifique-se de que **não*** tenha o / no final
$ unlink mySymLink
unlink() apaga um nome do sistema de arquivos. Se esse nome foi o último link para um arquivo e nenhum processo tiver o arquivo aberto, o arquivo é excluído e o espaço que estava usando é disponibilizado para reutilização. Se o nome foi o último link para um arquivo mas qualquer processo ainda tem o arquivo aberto, o arquivo permanecerá até que o último descritor de arquivo referente a ele seja fechado.
Acho que isto pode ser problemático se o estiver a ler correctamente.
Se o nome se referir a um link simbólico, o link é removido.
Se o nome se refere a um soquete, fifo ou dispositivo, o nome para ele é removido, mas os processos que têm o objeto aberto podem continuar a usá-lo.