Parece que deve ser simples vincular um arquivo a um novo arquivo em um subdiretório .... .... sem mover subdiretórios. Mas algo sobre a sintaxe é desconcertante e contrário ao que eu esperaria. Aqui está um caso de teste:
mkdir temp
cd temp
mkdir deploy
echo "Contents of the build file!" > deploy/resources.build.php
ln -s deploy/resources.build.php deploy/resources.php
cat deploy/resources.php #bad symlink
Isso apenas cria um link simbólico quebrado! Estou executando isso em um script de configuração do ambiente de compilação, portanto, desejo evitar alterar o diretório de trabalho atual, se possível.
ln -s deploy/resources.build.php resources.php
cat deploy/resources.php
Também não funciona porque cria o link simbólico no diretório temp em vez do subdiretório deploy.
cd deploy
ln -s resources.build.php resources.php
cd ..
Isso funciona, mas eu preferiria saber como fazer isso sem alterar os diretórios.
Usando um caminho completo como:
/home/whatever/src/project/temp/stuff/temp/deploy/resources.build.php
Funciona, mas é imprudente e um tanto impraticável, especialmente em um ambiente de construção em que todo o material do projeto pode ser diferente entre construções e similares.
Como posso criar um link simbólico entre dois arquivos em um subdiretório, sem passar para o subdiretório e sair dele e, ao mesmo tempo, dar ao novo arquivo "alias" um novo nome?
Isso me confundiu até eu perceber que um link simbólico é basicamente um arquivo de configuração. ou seja, como eu escreveria esses dados de caminho em um arquivo de texto simples:
torna-se:
O erro que eu (e provavelmente OP) estava fazendo está em pensar ln precisa saber sobre o arquivo que tem como meta. ln não se importa. É só escrever algumas informações do caminho em um arquivo. Este é um comando ln perfeitamente razoável :
Conseqüentemente:
produz um arquivo simlink chamado
resources.php
na./deploy
pasta que está referenciando o arquivoresources.build.php
na pasta./deploy/deploy/
.Isso é improvável o que você deseja e fornece um link ruim (quebrado). Não há nada errado com o link, se você colocar esse arquivo lá, o link funcionará. No entanto, (como apontado por outros), o que eu e o OP queríamos era:
fonte