Qual é a diferença entre “cd ../” vs. “cd / ..”?

7

O que esses dois comandos significam?

cd ../
cd /..

Estou terminando em dois diretórios para cima, a árvore no primeiro comando e no diretório raiz do segundo comando. Por que isso acontece?

    
por Fazlan 02.04.2013 / 18:50

3 respostas

9

Um / no fim do nome de um diretório / pasta é opcional . Na maioria das vezes, incluir ou omitir a barra final em um nome de diretório não altera o efeito de um comando.

Portanto, cd ../ é equivalente a cd .. .

Caminhos que não iniciam com / são caminhos relativos; eles são resolvidos em relação ao diretório atual .

Todo diretório tem entradas especiais:

  • uma entrada de diretório chamada . que resolve para o próprio diretório
  • uma entrada de diretório chamada .. que resolve para o pai do diretório (ou seja, o diretório que contém esse diretório)

Portanto, cd ../ e cd .. mudam de diretório para o pai do diretório atual . Assim, se você começar em /home/fazlan e executar cd .. ou cd ../ , você acabará em /home .

Por outro lado, /.. é um caminho absoluto (embora incomum). / é a raiz do sistema de arquivos - o diretório que você acessa se você subir na hierarquia de diretórios até o fim. (Usando a mesma metáfora parent e child , dizemos que / é o ancestor de tudo no sistema de arquivos.)

Como .. significa "o diretório pai deste diretório" e / significa "a parte superior do sistema de arquivos," /.. significa "o diretório pai da parte superior do sistema de arquivos".

Mas o que significa falar sobre o diretório que contém / ? Bem, / é uma exceção. Como nenhum diretório contém, , dizemos que o pai de / é ele mesmo. Portanto, em / , .. é / . Conseqüentemente, /.. é o mesmo que / .

É por isso que cd ../ leva você até um diretório de onde você começou, enquanto cd /.. leva você ao topo. As maneiras mais elegantes e fáceis de ler essas coisas são cd .. e cd / , respectivamente.

    
por Eliah Kagan 02.04.2013 / 18:59
2

O primeiro é um caminho relativo. O segundo é um caminho absoluto.

O operador .. nesse argumento significa subir um.

A barra quando não está na frente significa divisão do nome do subdiretório.

A barra quando na frente significa "Este é um caminho absoluto. Comece no diretório raiz." O .. é descartado desde que você não pode voltar mais longe. (Houve um tempo em que muitos deles permitiram que você quebrasse chroots)

    
por RobotHumans 02.04.2013 / 18:56
1

Um único ponto (.) representa o diretório atual. De fato, se você executasse um cd . , ele o colocaria em seu diretório atual (o que parece não fazer nada). Se você copiasse algo de / dir1 para seu diretório atual, poderia fazer assim:

cp /dir1/somefile.txt .

A execução de um cd .. leva você até um nível de diretório. Um cd ../ faz o mesmo. Se você quisesse subir dois níveis, adicionaria mais dois pontos no final, assim:

cd ../..

Para retornar ao diretório raiz, você pode executar um cd / . Agora digamos que eu executei o seguinte:

cd /dir1/dir2/dir3/..

Isso me coloca no diretório / dir1 / dir2, porque (como nós estabelecemos acima) o .. diz para subir um nível. Então vai para dir3 e depois sobe.

Ao invocar um cd /.. , você está dizendo para ele ir para o diretório raiz / e, em seguida, subir um nível, o que não pode ser feito. Então, é efetivamente deixar você no diretório raiz.

    
por Aaron 02.04.2013 / 19:00