O que acontece quando tento mudar para um diretório pai depois de ter sido renomeado?

1

Eu tenho vários diretórios filhos e insiro cd .. e recebo este erro:

cd: ..: No such file or directory

Estou confuso - é claro que existe um diretório pai, eu estou nele! Um pouco de escavação mostra que meu colega de trabalho renomeou o diretório de um avô de debaixo de mim e quando eu tentei mover para o meu diretório pai, eu recebi o erro acima. Eu tentei reproduzir isso assim:

server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> pwd
/n01/data/adf/temp/TEMPTEST/SUB1/SUB2
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> mv /n01/data/adf/temp/TEMPTEST /n01/data/adf/temp/NEWTEMPTEST
server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> pwd
/n01/data/adf/temp/NEWTEMPTEST/SUB1/SUB2

E agora estou perdido e à deriva, mudar para o diretório pai me dará o mesmo erro de antes.

server|/n01/data/adf/temp/TEMPTEST/SUB1/SUB2> cd ..
server|/n01/data/adf/temp/NEWTEMPTEST/SUB1>

Nenhum erro. Eu mudei diretórios com sucesso. O que aconteceu? Por que esse erro não aconteceu da primeira vez?

    
por MackM 18.11.2017 / 00:47

2 respostas

5

A renomeação do diretório pai não causará tal erro. No entanto, a exclusão, por exemplo:

# mkdir -p some/deep/path
# cd some/deep/path
# rm -r some/deep/path
# cd ..
error: No such file or directory

Não existe um comando "rename" per se no Linux. Você pode "mover" as coisas. Ao mover-se dentro do mesmo sistema de arquivos, isso equivale a uma renomeação. No entanto, quando se deslocam entre filsystems, esta é efetivamente uma operação de cópia / exclusão, o que poderia resultar em uma situação semelhante à mostrada acima, por exemplo:

# mkdir -p /fs1/a/b
# cd /fs1/a/b
# mv /fs1/a /fs2/a
# cd ..
error: No such file or directory

quando /fs1 e /fs2 são sistemas de arquivos diferentes (pontos de montagem, neste caso).

    
por 18.11.2017 / 01:06
1

Simplesmente renomear o diretório não teria conseguido nada, porque o nome é apenas um rótulo (é assim que você pode ter dois arquivos apontando para o mesmo objeto usando hard links).

O conteúdo do diretório pai provavelmente foi movido para um novo diretório, e o diretório antigo, agora vazio, foi destruído. Isso precisa ser feito enquanto você está no diretório filho imediato, eu acho.

Isso também acontece se você mover o diretório entre diferentes sistemas de arquivos montados enquanto (opcionalmente) o renomeia; não é a renomeação, mas a alteração no sistema de arquivos que força o original a ser excluído.

    
por 18.11.2017 / 01:06

Tags