Estou tentando criar um link simbólico no meu diretório pessoal que aponte para um diretório no meu disco rígido externo.
Funciona bem quando eu especifico assim:
cd ~
ln -s /run/media/name/exhdd/Data/ Data
No entanto, ele cria um link com defeito quando tento isso:
cd /run/media/name/exhdd
ln -s Data/ ~/Data
Isso cria um link que não consigo cd
acessar.
Quando tento, o bash reclama:
bash: cd: Data: Too many levels of symbolic links
O link simbólico de dados em minha casa também é colorido em vermelho quando ls
está definido para exibir a saída colorida.
Por que isso está acontecendo? Como posso criar um link dessa maneira? (Desejo criar um link simbólico para um diretório no meu diretório de trabalho em outro diretório.)
Edit: de acordo com esta resposta StackOverflow, se o segundo argumento (no meu caso, seria ~ / Data) já existir e for um diretório,
ln
criará um link simbólico para o destino dentro desse diretório.
No entanto, estou enfrentando o mesmo problema com:
ln -s Data/ ~/
cd ~
geralmente é o mesmo quecd
.ls -l ~/Data
ajudaria você a ver o que havia de errado com o link "vermelho".cat
isso, mas eu esqueci qual foi o resultado ... (eu não estou em casa para elas momento.)/run/media/name/exhdd/Data/
paraData
, em seguida, use o seguinteln -s /run/media/name/exhdd/Data/* Data
Respostas:
Aqui está o que está acontecendo. Se você criar um link simbólico com um caminho relativo, o link simbólico será relativo. Os links simbólicos apenas armazenam os caminhos que você fornece a eles. Eles nunca resolvem caminhos para caminhos completos. Corrida
cria um link simbólico chamado
ls2
em/usr/bin
parals
(viz./usr/bin/ls
) relativo ao diretório que o link simbólico está em (/usr/bin
). O comando acima criaria um link simbólico funcional a partir de qualquer diretório.Se você moveu a ligação simbólica para um diretório diferente, deixaria de apontar para o arquivo no
/usr/bin/ls
.Você está criando um link simbólico que aponta para
Data
e nomeia-oData
. Está apontando para si mesmo. Você precisa fazer um link simbólico com o caminho absoluto do diretório.fonte
Eu estava tendo o mesmo problema. O Google levou a essa resposta, mas a solução mais simples não está documentada aqui:
-T faz o truque
homem em:
Basta adicionar isso aqui para que qualquer pessoa com a mesma pergunta possa encontrar isso :)
fonte
ln
O comportamento de caminhos relativos não é intuitivo. Para restaurar a sanidade, use a-r
bandeira.Explicação:
O que isso significa é que
ln
fará o que você espera. Ele levará em conta em qual diretório você está, em qual diretório o destino está e construirá um caminho relativo ao diretório em que o link estará. O comportamento padrão (sem-r
) é interpretar o primeiro parâmetro (destino) literalmente , em Nesse caso, você deve construir o caminho sozinho para que seja válido no diretório do link.Como alternativa, use um caminho absoluto, como mencionado por @SmithJohn
ou
fonte
Muito simplesmente, você pode criar um link para uma pasta. Olha meu comando
ln -s / home / pasta targated / var / www / html / link_name
fonte