Guia do Linux/Iniciante+Intermediário/Comandos diversos/ln
ln
editarCria links para arquivos e diretórios no sistema. O link é um mecanismo que faz referência a outro arquivo ou diretório em outra localização. O link em sistemas GNU/Linux
faz referência reais ao arquivo/diretório podendo ser feita cópia do link (será copiado o arquivo alvo), entrar no diretório (caso o link faça referência a um diretório), etc.
ln [opções] [origem] [link]
Onde:
- origem
- Diretório ou arquivo de onde será feito o link.
- link
- Nome do link que será criado. Se já existe um arquivo de nome link, o comando ln funcionará de forma errada, criando um link para um outro arquivo. Ver abaixo para mais detalhes.
- opções
- -s
- Cria um link simbólico. Usado para criar ligações com o arquivo/diretório de destino.
- -v
- Mostra o nome de cada arquivo antes de fazer o link.
- -d
- Cria um hard link para diretórios. Somente o root pode usar esta opção.
Tipos de link
editarExistem 2 tipos de links: simbólicos e hardlinks.
- O link simbólico cria um arquivo especial no disco (do tipo link) que tem como conteúdo o caminho para chegar até o arquivo alvo (isto pode ser verificado pelo tamanho do arquivo do link). Use a opção -s para criar links simbólicos.
- O hardlink faz referência ao mesmo inodo do arquivo original, desta forma ele será perfeitamente idêntico, inclusive nas permissões de acesso, ao arquivo original.
Ao contrário dos links simbólicos, não é possível fazer um hardlink para um diretório ou fazer referência a arquivos que estejam em partições diferentes.
Problemas
editarSe o link já existe, o comando ln dará erro ou fará uma coisa errada. Exemplo (feito na conta usuario; use outra conta para verificar)
mkdir -p /home/usuario/teste1/arquivos # cria um diretorio echo "teste1" > /home/usuario/teste1/arquivos/teste1.txt mkdir -p /home/usuario/teste2/arquivos # cria um diretorio ln -sv /home/usuario/teste1/arquivos /home/usuario/teste2/arquivos # erro ls -lart /home/usuario/teste2 ls -lart /home/usuario/teste2/arquivos
Como pode ser visto pela sequencia acima, o erro foi criar o diretório link /home/usuario/teste2/arquivos, com isso, ao se criar o link simbolico, ele foi colocado como /home/usuario/teste2/arquivos/arquivos.
Sequencia certa:
mkdir -p /home/usuario/teste1/arquivos # cria um diretorio echo "teste1" > /home/usuario/teste1/arquivos/teste1.txt mkdir -p /home/usuario/teste2 # cria um diretorio ln -sv /home/usuario/teste1/arquivos /home/usuario/teste2/arquivos # certo ls -lart /home/usuario/teste2 ls -lart /home/usuario/teste2/arquivos cat /home/usuario/teste2/arquivos/teste1.txt
Removendo o link
editarPara remover o link, usa-se o comando rm; como este comando também é usado para apagar arquivos, é bom tomar muito cuidado antes de remover o link para não remover coisas erradas:
- rm [nome do link]
Observações
editar- Se for usado o comando
rm
com um link, somente o link será removido. - Se for usado o comando
cp
com um link, o arquivo original será copiado ao invés do link. - Se for usado o comando
mv
com um link, a modificação será feita no link. - Se for usado um comando de visualização (como o
cat
), o arquivo original será visualizado.
Exemplos:
- ln -s /dev/ttyS1 /dev/modem - Cria o link
/dev/modem
para o arquivo/dev/ttyS1
. - ln -s /tmp ~/tmp - Cria um link
~/tmp
para o diretório/tmp
.