Ubuntu Links (ln)

Um link é um segundo nome para um arquivo ou pasta que já existe. É como um atalho da área de trabalho do Windows, só que funciona para qualquer programa, inclusive no terminal. O comando que cria links é o ln (de link, "ligação").

Você vai aprender
  • A diferença entre link simbólico (atalho) e link físico (outro nome para os mesmos dados).
  • Criar, ver, atualizar e apagar links com segurança.
  • Por que um link "quebra", e como evitar com caminhos relativos e absolutos.
  • Onde o próprio Ubuntu usa links, como em /bin e python3.

O simulador desta página não cria links. Os exemplos são sessões mostradas, conferidas num Ubuntu 26.04 real. Para praticar, use o seu terminal numa pasta de testes.


Dois tipos de link

Para entender links, é preciso saber como o Linux guarda arquivos. O nome que você vê numa pasta é só uma etiqueta. Os dados ficam num lugar do disco identificado por um número, o inode. A etiqueta aponta para o inode.

Link simbólico (ln -s)Link físico (ln)
O que éUm arquivinho que guarda o caminho de outroUma segunda etiqueta para o mesmo inode
Parece comAtalho do WindowsO mesmo arquivo com dois nomes
Se o original for apagadoO link quebraOs dados continuam acessíveis pelo outro nome
Funciona com pastas?SimNão
Funciona entre discos diferentes?SimNão
Como aparece no ls -ll no começo e -> mostrando o destinoIgual a um arquivo comum, com contador de links maior que 1

No dia a dia, você vai usar o simbólico em 95% dos casos. Ele é o "atalho".


Criar um link simbólico

ln
O programa que cria links.
-s
Link simbólico (de symbolic). Sem o -s, vira link físico.
Documentos/trabalho/2026/projeto-site
O alvo: para onde o link vai apontar. Vem primeiro.
projeto
O nome do link: o atalho que será criado. Vem por último.

A ordem é a mesma do cp: primeiro o que já existe, depois o nome novo. Uma forma de lembrar: "ln -s de onde vem como vai se chamar".

$ ln -s Documentos/trabalho/2026/projeto-site projeto
$ ls -l projeto
lrwxrwxrwx 1 ana ana 37 Oct 15 11:02 projeto -> Documentos/trabalho/2026/projeto-site

Leia a linha do ls -l:

  • O l no começo indica que é um link.
  • As permissões rwxrwxrwx são sempre assim em links simbólicos; o que vale são as permissões do alvo.
  • 37 é o tamanho do link: o número de caracteres do caminho que ele guarda.
  • projeto -> Documentos/… mostra o nome do link e para onde ele aponta.

Agora o atalho funciona como se fosse a pasta:

$ cd projeto
$ pwd
/home/ana/projeto                    « o caminho "pelo atalho"
$ pwd -P
/home/ana/Documentos/trabalho/2026/projeto-site     « o caminho real

O -P (de physical) mostra onde você está de verdade, sem atalhos.


Descobrir para onde um link aponta

ComandoO que mostra
ls -l linkO link e o destino, depois de ->
readlink linkSó o destino, exatamente como foi gravado
readlink -f linkO caminho final, completo, seguindo links em cadeia

O Ubuntu usa links em cadeia. O comando editor, por exemplo, aponta para outro link, que aponta para o editor escolhido:

$ ls -l /usr/bin/editor
lrwxrwxrwx 1 root root 24 Mar 30  2024 /usr/bin/editor -> /etc/alternatives/editor
$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 9 Feb  9  2026 /etc/alternatives/editor -> /bin/nano
$ readlink -f /usr/bin/editor
/usr/bin/nano                        « o destino final

Repare que o destino final é /usr/bin/nano, e não /bin/nano. É que o próprio /bin também é um link:

$ ls -ld /bin /lib /sbin
lrwxrwxrwx 1 root root 7 Apr 22  2024 /bin -> usr/bin
lrwxrwxrwx 1 root root 7 Apr 22  2024 /lib -> usr/lib
lrwxrwxrwx 1 root root 8 Apr 22  2024 /sbin -> usr/sbin
$ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 10 Mar 21  2026 /usr/bin/python3 -> python3.14

Quando o Python for atualizado, basta mudar o link python3; quem digita python3 nem percebe.


Relativo ou absoluto: a causa nº 1 de links quebrados

O caminho que você escreve como alvo é gravado do jeito que foi digitado. Se for relativo, ele é lido a partir da pasta onde o link está, e não de onde você estava quando o criou.

$ ls
Documentos  notas.txt
$ ln -s notas.txt Documentos/atalho-notas
$ cat Documentos/atalho-notas
cat: Documentos/atalho-notas: No such file or directory
$ ls -l Documentos/atalho-notas
lrwxrwxrwx 1 ana ana 9 Oct 15 11:10 Documentos/atalho-notas -> notas.txt     « procura Documentos/notas.txt

O link mora em Documentos/ e aponta para notas.txt. Então ele procura Documentos/notas.txt, que não existe. Três formas de acertar:

FormaComandoQuando usar
Caminho absolutoln -s ~/notas.txt Documentos/atalho-notasO alvo nunca muda de lugar. É o mais simples.
Relativo ao linkln -s ../notas.txt Documentos/atalho-notasVocê vai mover a pasta inteira junto (projetos, backups).
Deixar o ln calcularln -sr notas.txt Documentos/atalho-notasQuer relativo sem fazer a conta. O -r (relative) calcula sozinho.

O ~ é expandido pelo shell para /home/ana antes de o ln rodar, por isso vira um caminho absoluto.


Link físico

ln
Sem -s: link físico.
original.txt
O arquivo que já existe.
outro-nome.txt
O novo nome para os mesmos dados.
$ ln original.txt outro-nome.txt
$ ls -li original.txt outro-nome.txt
1835023 -rw-rw-r-- 2 ana ana 6 Oct 15 11:20 original.txt
1835023 -rw-rw-r-- 2 ana ana 6 Oct 15 11:20 outro-nome.txt
 « mesmo inode (1835023) e contador de links = 2

O -i do ls mostra o número do inode, na primeira coluna. Os dois nomes têm o mesmo número: são o mesmo arquivo. O 2 depois das permissões diz quantos nomes ele tem.

$ rm original.txt
$ cat outro-nome.txt
ideia                                « os dados continuam lá
$ ls -l outro-nome.txt
-rw-rw-r-- 1 ana ana 6 Oct 15 11:20 outro-nome.txt     « contador voltou para 1

Os dados só são apagados de verdade quando o último nome é removido.

Link físico não é backup

Como é o mesmo arquivo, editar por um nome altera o outro. Para ter uma cópia independente, use cp.


Atualizar e apagar links

Trocar o destino: -f

Se o nome do link já existe, o ln recusa. O -f (de force) substitui o link antigo:

$ ln -s ~/Documentos/v2 atual
ln: failed to create symbolic link 'atual': Already exists
$ ln -sfn ~/Documentos/v2 atual
$ ls -l atual
lrwxrwxrwx 1 ana ana 23 Oct 15 11:30 atual -> /home/ana/Documentos/v2

Com links para pastas, junte também o -n. Sem ele, o ln entra na pasta apontada e cria o link novo lá dentro, em vez de substituir.

Apagar um link

Apagar o link não apaga o alvo. Use rm ou unlink no nome do link, sem barra no fim:

$ rm projeto/
rm: não foi possível remover 'projeto/': É um diretório
$ rm projeto
$ ls Documentos/trabalho/2026/
projeto-site                         « a pasta original continua lá
Nunca use rm -r num link com barra no fim

rm -r projeto/ entra na pasta apontada e apaga o conteúdo real. Depois ainda mostra rm: não foi possível remover 'projeto/': Não é um diretório, e o atalho continua lá, apontando para uma pasta agora vazia. Para remover um atalho, é sempre rm projeto, sem -r e sem barra.


Formas diferentes de criar atalhos

FormaExemploMelhor quando…
Link simbólicoln -s ~/Documentos/trabalho ~/trabalhoQuer um atalho que funcione no terminal e em qualquer programa.
Favorito no ArquivosArraste a pasta para a barra lateral, ou Ctrl+DSó quer acesso rápido no gerenciador de arquivos.
alias no .bashrcalias trab='cd ~/Documentos/trabalho'Quer um "comando" que leve até a pasta. Veja .bashrc, alias, PATH.
Link físicoln dados.csv backup/dados.csvPrecisa que o arquivo continue existindo mesmo se um nome for apagado, no mesmo disco.

Quando não funciona

"No such file or directory" ao abrir um link que existe
$ ls -l ideias.txt
lrwxrwxrwx 1 ana ana 22 Oct 15 11:40 ideias.txt -> /home/ana/rascunho.txt
$ cat ideias.txt
cat: ideias.txt: No such file or directory

O que aconteceu: o link está quebrado: o alvo (rascunho.txt) foi apagado, renomeado ou movido. No terminal, links quebrados costumam aparecer em vermelho.

Como confirmar: find . -xtype l lista todos os links quebrados a partir da pasta atual.

Como resolver: recrie apontando para o lugar certo: ln -sf ~/Documentos/rascunho.txt ideias.txt.

"Already exists"
$ ln -s ~/notas.txt atalho.txt
ln: failed to create symbolic link 'atalho.txt': Already exists

Como resolver: escolha outro nome, ou substitua de propósito com ln -sf. A mensagem sai em inglês no Ubuntu 26.04.

"hard link not allowed for directory"
$ ln Documentos docs
ln: Documentos: hard link not allowed for directory

O que aconteceu: faltou o -s. Links físicos não podem apontar para pastas.

Como resolver: ln -s Documentos docs.

"target 'x' is not a directory"
$ ln -s Meus Documentos atalho
ln: target 'atalho' is not a directory

O que aconteceu: o nome com espaço virou dois argumentos. Com três nomes, o ln entende que o último é uma pasta onde criar dois links.

Como resolver: aspas: ln -s "Meus Documentos" atalho.


Referência de opções

OpçãoDescriçãoExemplo
-sCria link simbólicoln -s alvo nome
-fSubstitui se o nome já existirln -sf alvo nome
-nTrata um link para pasta como arquivo (use com -f)ln -sfn nova atual
-rCalcula o caminho relativo automaticamenteln -sr arq pasta/link
-vMostra o que foi criadoln -sv alvo nome
-iPergunta antes de substituirln -si alvo nome
Comando relacionadoPara quê
readlink -f nomeDestino final de um link
unlink nomeApaga um link (igual a rm nome)
find . -type lLista todos os links
find . -xtype lLista só os links quebrados
ls -liMostra o inode, para identificar links físicos

Exercícios

1. Atalho para uma pasta

Complete para criar na pasta pessoal um atalho chamado fotos que aponta para /media/ana/HD/Fotos:

ln /media/ana/HD/Fotos ~/fotos

2. Para onde aponta?

Complete para ver o destino final do link /usr/bin/python3:

readlink /usr/bin/python3

3. Apagar só o atalho

Complete para apagar o atalho projeto sem tocar na pasta original:

projeto

4. Você apagou o arquivo original. O que acontece com um link simbólico que apontava para ele?

5. Em ln -s A B, quem é quem?


Resumo

  • ln -s alvo nome cria um atalho (link simbólico); a ordem é a mesma do cp.
  • No ls -l, links aparecem com l e ->; readlink -f mostra o destino final.
  • Alvos relativos são lidos a partir da pasta do link; na dúvida, use caminho absoluto ou ln -sr.
  • Link físico (ln sem -s) é outro nome para os mesmos dados; não serve para pastas.
  • Para apagar um atalho: rm nome, sem -r e sem barra no fim.