Quando usar uma barra precedente em nomes de caminho? (por exemplo, para o comando 'cd')

3

Eu sou um usuário novato e estou tentando instalar o Oracle Java. O processo me chama para acessar /usr/local/java , mas aqui está o problema. Eu chego até /usr/local , então esta é a mensagem que recebo:

leonard@leonard-MT6452:/usr/local$ dir
bin  etc  games  include  java  lib  man  sbin  share  src

leonard@leonard-MT6452:/usr/local$ cd /java/
bash: cd: /java/: No such file or directory

leonard@leonard-MT6452:/usr/local$ rm -r ~/java
rm: cannot remove ‘/home/leonard/java’: No such file or directory

Ajuda?

    
por Len Cilliers 10.04.2015 / 01:09

2 respostas

2

Você não precisa do / inicial, enquanto /usr/local/ vai para /usr/local/java . O comando correto usando o caminho relativo:

leonard@leonard-MT6452:/usr/local$ cd java/
leonard@leonard-MT6452:/usr/local/java$ pwd
/usr/local/java    

Você também pode obter ajuda de bash_completion apenas digitando cd j (desde que não haja outro diretório iniciado com j ) e, em seguida, clique em Tab , cd java/ será impresso.

Além disso, você pode usar o caminho absoluto de qualquer lugar:

cd /usr/local/java

O / no início de um caminho de arquivo sempre se refere ao diretório raiz da hierarquia do sistema de arquivos . Como não há nenhum arquivo chamado /java você estava recebendo /java/: No such file or directory mensagem de erro.

    
por heemayl 10.04.2015 / 01:14
2

Existem duas maneiras de especificar um caminho.

Caminhos absolutos

Os caminhos absolutos sempre começam com / . Isso significa que o ponto inicial da especificação do caminho é fixo. Não importa onde seu local atual esteja, um caminho absoluto sempre apontará para o mesmo local. A única exceção é quando você usa um atalho do shell, como ~ , no início, em que o shell substituirá ~ pelo que é geralmente o caminho absoluto do diretório inicial. Mesmo que não pareça que ~/bin comece com / , quando o shell apresentar sua forma final, ele terá um / .

Caminhos relativos

Caminhos relativos nunca começam com / . Seu ponto de partida é o diretório atual, então onde você acaba depende de onde você começa. Eles podem começar com qualquer subdiretório. Além disso:

  • Você pode usar . e .. para se referir ao diretório atual e ao diretório pai. Você também pode usar esses caminhos absolutos dentro de , mas não no início ( /foo/../bar é o mesmo que /bar e ambos são caminhos absolutos, mas ../foo não é absoluto).
  • Você pode usar uma configuração (variável de ambiente) chamada CDPATH (geralmente não definida), especificamente para o comando cd . Se você adicionar um diretório a CDPATH , poderá usar um caminho relativo (não começando com . ou .. ) para ele de qualquer lugar com cd .

Para resumir:

  • cd /usr/local/java sempre levará você ao mesmo local, assim como cd /usr/local/./java .
  • cd java leva você a lugares diferentes, dependendo de onde você está e do que o CDPATH contém. (Observe que somente cd deve ser afetado por CDPATH - para outros comandos, ./java e java devem significar a mesma coisa.)
  • cd ./java irá levá-lo ao diretório chamado java dentro do diretório atual.
  • cd ../java irá levá-lo ao diretório chamado java dentro do diretório pai.
  • cd ~/java sempre levará você ao diretório chamado java em seu diretório inicial. Nesse caso, o caminho é absoluto, mas como o shell expande o ~ antes de o cd operar nele, usuários diferentes acabarão em lugares diferentes.
por muru 10.04.2015 / 06:07