Crie um link simbólico de diretório no Ubuntu [fechado]


247

Abaixo está o meu código para criar um link simbólico de um diretório:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Eu já criou o diretório /etc/nginx. Eu só quero que o conteúdo do diretório de origem ( /usr/local/nginx/conf/) esteja no conteúdo do diretório de destino ( /etc/nginx). Mas quando executo o código, /etc/nginxcontém um diretório chamado conf, em vez do conteúdo de conf. Esse diretório contém o conteúdo que eu quero, mas no local errado.

Por que ele colocou um diretório na pasta de destino, em vez de apenas colocar o conteúdo do diretório na pasta de destino?


Você também pode usar arquivos (navegador de arquivos padrão). Clique com o botão direito do mouse na pasta que você deseja vincular> opção "Criar link". Ele criará uma pasta vinculada que você pode mover e renomear conforme necessário.
John Linhart

4
Use o bind mountrecurso linux . exemplo
gkiko

Respostas:



30

É o que lnestá documentado para fazer quando o destino já existe e é um diretório. Se você quiser /etc/nginxpara ser um link simbólico, em vez de conter um link simbólico, é melhor não tinha criá-lo como um diretório em primeiro lugar!


51
Sua resposta só faz sentido no contexto em que o leitor já sabe a resposta. É inútil para quem iria fazer a pergunta
Ricardo Saporta

1
Posso realmente criar um link simbólico para a raiz de um dispositivo USB montado (portanto, não posso apagar esta pasta primeiro)?
Grigory Kornilov

1
@GrigoryKornilov, você pode criar um link simbólico para o que quiser, incluindo algo que não existe. Essa pergunta era sobre o local onde o link simbólico é criado (não para onde ele aponta). Um nome de caminho específico no sistema de arquivos é um arquivo comum ou é um diretório ou um link simbólico (ou é um soquete, canal ou dispositivo). Não pode ser mais do que uma dessas coisas ao mesmo tempo (ou seja, você não pode ter mais de um arquivo distinto com o mesmo nome).
Celada

10

No script é útil algo como isto:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

impede antes de recriar o link simbólico em loop "ruim" após executar novamente o script


1
Excelente! Esta é a solução exata. não é necessário criar o diretório, se ele já existir. É um ajuste muito bom para o hard link e afunda no buraco negro (/ dev / null)
Cosmo Arun
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.