ln [opções] origem destino
Descrição
Este comando cria ligações (links) entre arquivos. Há dois conceitos de ligação em sistemas Unix:
- Ligação direta – define mais um nome para um arquivo (um arquivo pode ter diversos nomes). O arquivo será removido do disco quando o último nome for removido. Não há algo como um nome original, todos os nomes tem o mesmo status.
- Ligação simbólica ou dymlink – define um caminho para um arquivo. Ligações simbólicas podem apontar para arquivos em diferentes sistemas de arquivo e não necessitam apontar para arquivos que realmente existem.
Em uma ligação direta os arquivos possuem o mesmo inode. Enquanto que em uma ligação simbólica os arquivos apontam para a mesma área de dados, mas possuem diferentes inodes.
Algumas opções do comando
- -d : cria uma ligação direta (hard link), é o padrão.
- -L ou −−logical : cria uma ligação para um link simbólico.
- -s : cria uma ligação simbólica (soft link).
- -v : mostra o nome de cada arquivo antes de criar o link.
Exemplos
- O comando abaixo cria, no diretório teste, ligação direta para os arquivos do diretório atual cujos nomes começam por aula. Isto significa que cada arquivo terá dois nomes: um fica no diretório atual e o outro no diretório teste. As alterações feitas usando um dos nomes serão vistas quando se acessar o arquivo usando o outro nome. Se um dos nomes for apagado, o arquivo continuará existindo com o outro nome.
ln aula* teste/.
Quando dois nomes representam o mesmo arquivo, eles possuem o mesmo inode. Para ver os inodes dos arquivos de um diretório, basta digitar
ls -i
- Para criar, no diretório atual, um link simbólico chamado teste para o arquivo /etc/passwd, basta digitar
ln -s /etc/passwd teste
É possível então usar o comando ls -l para ver as características do arquivo criado.
lrwxrwxrwx 1 aluno aluno 11 Dez 31 16:17 teste -> /etc/passwd
Note que temos duas indicações de que se trata de um link simbólico: o primeiro caractere das permissões é “l” e o arquivo teste aponta para o arquivo /etc/passwd.
- Para criar links simbólicos no diretório atual para todos os arquivos do diretório testes que começam por script, basta digitar
ln -sv testes/script* .
Note que, no comando acima, a opção “-v” lista os links sendo criados e que o ponto (‘.’) representa o diretório atual.
- Para criar um link simbólico para o diretório /etc com o nome teste, digite
ln -s /etc teste
Portanto, qualquer operação feita no diretório teste será feita na realidade no diretório /etc e pode precisar de permissão de administrador.
- É possível criar uma ligação para um link simbólico. Por exemplo,
ln -s teste link1
cria o link simbólico link1 para o arquivo teste. O comando
ln -sL link1 link2
cria o link simbólico link2 para o arquivo link1. Portanto, link2 aponta para o arquivo apontado por link1.
lrwxrwxrwx | 1 | aluno | aluno | 5 | Mai 6 16:23 | link1 -> teste |
lrwxrwxrwx | 1 | aluno | aluno | 5 | Mai 6 16:23 | link2 -> link1 |
-rw-rw-r−− | 1 | aluno | aluno | 7743 | Mai 6 16:23 | teste |
Observações
- Não é possível criar vínculos diretos para diretórios e nem para sistemas de arquivos.