ln

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.

 

Sumário      |      Topo