porque. / home / Desktop está incorreto e ./Desktop está correto?

2

Estou aprendendo sobre o Linux, iniciado ontem. Eu tenho uma pergunta que não consegui responder do meu livro ou do Google. Qual é a diferença entre ./ e / no shell?

Estou perguntando isso porque quando eu executo, por exemplo, o comando ./home/yogesh/Desktop/Books , recebo este erro:

bash: ./home/yogesh/Desktop : No such file or directory

No entanto, ao remover o ponto que ele fornece

/home/yogesh/Desktop/Books : Is a directory

Ou, se eu executar /Desktop , ele retornará

/Desktop : No such file or directory

Mas ao adicionar um ponto antes de / , obtenho

./Desktop: is a directory

Qual é a diferença entre ./ e / ?

    
por user239887 16.05.2015 / 09:48

4 respostas

1

No unix (como no Windows), /foo é o local de um arquivo ou diretório (local absoluto, no diretório raiz: / ). Considerando que ./foo é uma localização relativa (relativa ao diretório atual) ... Você pode omitir o ponto + barra principal e apenas escrever foo .

Ao digitar o comando /Desktop ou ./Desktop , você diz ao shell para executar o Desktop ... O que não pode ser executado.

/Desktop não existe, portanto, a mensagem de erro.

Considerando que ./Desktop , que é a localização absoluta, /Home/YOURNAME/Desktop não existe. Mas é um diretório, não um arquivo executável ... Você provavelmente esqueceu o prefixo com o comando para executar (geralmente cd ou ls )

    
por 16.05.2015 / 10:06
1

Exemplo de explicação:

/ (barra) significa raiz, da raiz do sistema de arquivos. Portanto, /home/yogesh/Desktop/Books começa na raiz, depois verifica home , home verifica yogesh e assim por diante. Isso é chamado de caminho absoluto.

. (ponto) significa partir do diretório atual. Portanto, se seu diretório atual for /home/yogesh e você verificar ./Desktop , ele estará lá. Isso é chamado de caminho relativo.

    
por 16.05.2015 / 10:07
1

Em sistemas Unix e Unix-like, . significa o diretório atual. Por exemplo, ls . é o mesmo que ls , ele listará o conteúdo do diretório atual. Portanto, quando você executar ./Desktop , ele encontrará um diretório chamado Desktop que está sob o diretório atual. Você então recebe um erro informando que este é um diretório e, portanto, não pode ser executado, pois não é um comando.

/ é a raiz do sistema de arquivos. É semelhante a C:\ no Windows. Quando você executar /Desktop , o sistema procurará um diretório chamado Desktop , que está no diretório / . Isso não existe e assim é.

Por exemplo, se eu estiver em /home/yogesh e quiser ir para /home/yogesh , posso usar o caminho relativo (com relação ao diretório em que estou agora) e executar cd ./Desktop ou cd Dessktop ou posso usar o caminho absoluto e executar cd /home/yoges/Desktop .

    
por 16.05.2015 / 15:37
0

O primeiro não deve ser um local relativo.

Uma localização relativa é para notificar as coisas mais curtas de dentro do local em que você está. Um local absoluto é da raiz / que é o primeiro local do diretório no Linux. Quando você não está em / var, você pode usar

cd /var/www

como / var / www uma localização absoluta é. Se você está em / var você pode usar

cd ./www

ou

cd www

Para anotar ainda mais curto.

Eu recomendo um e-book gratuito do William Shotts.

Aqui está o link para o eBook:

A linha de comando do Linux por William Shotts

    
por 16.05.2015 / 15:12