rmdir dir dá erro 'Não é um diretório'

0

Eu tenho o que parece ser um diretório de diretório dir2 , uma vez movi-o de outro diretório dir1 para fazer o backup e criei um novo dir1 .

Agora, de repente, vi novamente, percebi que não precisava e usei rm -r -f dir2 e descobri que meu novo dir1 também está vazio.

Eu recuperei meus arquivos (era um repositório de código, então apenas algumas alterações foram perdidas - mas eu ainda quero remover esse link redundante ou o que quer que seja dir2 ).

Quando tentei rmdir (antes de perceber que apaguei tudo) recebi um erro Not a directory . O que é e como faço para removê-lo? Usando o bash no terminal OSX.

Atualização: por sugestões abaixo:

ls -ld dir2 outputs drwxr-xr-x. 19 asaf users 4096 Mar 8 13:09 dir2/

file dir2/ outputs dir2/: directory

file dir2 outputs dir2: symbolic link to ...'

    
por sprite 08.03.2016 / 12:04

2 respostas

4

É impossível saber o que aconteceu, uma vez que as evidências foram excluídas. Suas descrições dos sintomas são compatíveis com dir2 , sendo um link simbólico para um diretório. Um link simbólico é um tipo de arquivo especial que diz “o arquivo real está realmente lá”. O link simbólico em si não é um diretório, então rmdir não pode fazer nada com ele. Mas acessos ao conteúdo do link simbólico (arquivos no diretório de um link simbólico apontando para um diretório, conteúdo do arquivo para um link simbólico apontando para um arquivo regular) vão para o destino do link de forma transparente, então você não teria notou alguma coisa ao usar cd dir2 ou ao editar arquivos no diretório.

Se este for o caso (o que é plausível, mas não é de todo certo!), então o comando rm -r -f dir2 excluiu apenas o link simbólico, e o diretório contendo suas mudanças ainda existe… em algum lugar. Como você excluiu o link, pode ser difícil encontrar o local, mas você pode tentar procurar os nomes de arquivo que você sabia que estavam nesse diretório com o locate ou com uma GUI equivalente (Spotlight?).

No futuro, execute

ls -ld dir2

Isso informa que tipo de arquivo dir2 é. Se a linha começar com d , é um diretório. Se a linha começar com l , é um link simbólico e a saída indica para onde aponta (a parte após -> ).

    
por 09.03.2016 / 01:51
3

Se você executar ls -ld dir2 , ele deve nos informar muito sobre a situação.

Pode ser um link simbólico ou um tipo de arquivo estranho. Eu sei que neste momento estamos assumindo que é um diretório, mas há outras opções. Pode até ser um compartilhamento de automontagem perdido.

Tente também executar file dir2 . Se não for um diretório verdadeiro, você provavelmente verá um erro com rmdir .

    
por 08.03.2016 / 13:56