Artigo original: Symlink Tutorial in Linux – How to Create and Remove a Symbolic Link

Um symlink (também chamado de link simbólico) é um tipo de arquivo no Linux que aponta para outro arquivo ou diretório em seu computador. Os symlinks são semelhantes aos atalhos no Windows.

Alguns chamam os symlinks de "soft links" – um tipo de link nos sistemas Linux/UNIX – em oposição aos "hard links."

Os soft links lembram os atalhos, podendo apontar para outro arquivo ou diretório em qualquer sistema de arquivos.

Os hard links também são atalhos para pastas e diretórios, mas um hard link não pode ser criado para um arquivo ou diretório em um sistema de arquivos diferente.

Vamos ver os passos envolvidos na criação e remoção de um symlink. Também veremos o que são links quebrados e como excluí-los.

A sintaxe para a criação de um symlink é:

ln -s <caminho para o arquivo/diretório a ser vinculado> <caminho do link a ser criado>

ln é o comando para links. A flag -s especifica que o link tem de ser um soft link. O -s também pode ser inserido como -symbolic.

Por padrão, o comando ln cria hard links. O próximo argumento é o caminho para o arquivo ou diretório para onde você quer fazer um link (ou seja, o arquivo ou diretório para o qual você quer criar um atalho).

O último argumento é o caminho para o link em si (o atalho).

ln -s /home/james/transactions.txt trans.txt

Após executar esse comando, você poderá acessar o arquivo /home/james/transactions.txt usando trans.txt. Qualquer modificação feita em trans.txt será refletida no arquivo original.

Observe que esse comando acima criará o arquivo de link trans.txt em seu diretório atual. Também é possível criar um arquivo vinculado em um diretório assim:

ln -s /home/james/transactions.txt my-stuff/trans.txt

Deve haver um diretório chamado "my-stuff" no seu diretório atual – do contrário, o comando lançará um erro.

Da mesma forma que acima, podemos usar:

ln -s /home/james james

Isso criaria um diretório vinculado por symlink chamado 'james', que teria o conteúdo de /home/james. Quaisquer mudanças a este diretório vinculado também afetarão o diretório original.

Antes de querer remover um symlink, confirme se o arquivo ou o diretório é um symlink, para não bagunçar seus arquivos.

Uma maneira de fazer isso é:

ls -l <caminho do suposto symlink>

Ao executar esse comando no seu terminal, serão exibidas as propriedades do arquivo. No resultado, se o primeiro caractere for uma letra L minúscula ('l'), significa que o arquivo/diretório é um symlink.

Você também verá uma seta (->) ao final indicando o arquivo/diretório para o qual o symlink aponta.

Há dois métodos de remover um symlink:

A sintaxe é:

unlink <caminho para o symlink>

Isso exclui o symlink se o processo tiver êxito.

Mesmo se o symlink estiver na forma de um diretório, não inclua '/', pois o Linux assumirá que é um diretório e unlink não pode excluí-los.

Como vimos, um symlink é apenas outro arquivo ou diretório que aponta para um arquivo ou diretório original. Para remover essa relação, é possível remover o arquivo vinculado.

Assim, a sintaxe é:

rm <caminho para o symlink>

Por exemplo:

rm trans.txt
rm james

Observe que tentar executar rm james/ resultaria em um erro, pois o Linux assumirá que 'james/' é um diretório, o que exigiria outras opções, como r e f. No entanto, não é isso que queremos. Um symlink pode ser um diretório, mas estamos interessados apenas no nome.

O benefício principal de rm com relação a unlink é o fato de você poder remover diversos symlinks ao mesmo tempo, do mesmo jeito que você remove arquivos.

Links quebrados ocorrem quando o arquivo ou o diretório para o qual um symlink aponta muda de caminho ou é excluído.

Por exemplo, se 'transactions.txt' mudasse de /home/james para /home/james/personal, o link 'trans.txt' estaria quebrado. Qualquer tentativa de acessar o arquivo resultaria em um erro 'No such file or directory' (O arquivo ou diretório não existe). Isso ocorre porque o link não tem conteúdo próprio.

Ao descobrir links quebrados, você pode excluir o arquivo com facilidade. Um modo fácil de excluir symlinks quebrados é:

find /home/james -xtype l

Isso listará todos os symlinks quebrados no diretório james – de arquivos, diretórios e subdiretórios.

Ao passar a opção -delete, você os excluirá, dessa forma:

find /home/james -xtype l -delete

Para concluir

Os links simbólicos são um recurso interessante dos sistemas Linux e UNIX.

Você pode criar symlinks facilmente acessíveis para que eles façam referência a um arquivo ou diretório que, do contrário, não seria de fácil acesso. Com um pouco de prática, você entenderá como eles funcionam em um nível mais intuitivo e eles o deixarão ser muito mais eficiente no gerenciamento de sistemas de arquivos.