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").
- 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
/binepython3.
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 outro | Uma segunda etiqueta para o mesmo inode |
| Parece com | Atalho do Windows | O mesmo arquivo com dois nomes |
| Se o original for apagado | O link quebra | Os dados continuam acessíveis pelo outro nome |
| Funciona com pastas? | Sim | Não |
| Funciona entre discos diferentes? | Sim | Não |
Como aparece no ls -l | l no começo e -> mostrando o destino | Igual 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
lno começo indica que é um link. - As permissões
rwxrwxrwxsã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
| Comando | O que mostra |
|---|---|
ls -l link | O link e o destino, depois de -> |
readlink link | Só o destino, exatamente como foi gravado |
readlink -f link | O 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:
| Forma | Comando | Quando usar |
|---|---|---|
| Caminho absoluto | ln -s ~/notas.txt Documentos/atalho-notas | O alvo nunca muda de lugar. É o mais simples. |
| Relativo ao link | ln -s ../notas.txt Documentos/atalho-notas | Você vai mover a pasta inteira junto (projetos, backups). |
| Deixar o ln calcular | ln -sr notas.txt Documentos/atalho-notas | Quer 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.
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á
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
| Forma | Exemplo | Melhor quando… |
|---|---|---|
| Link simbólico | ln -s ~/Documentos/trabalho ~/trabalho | Quer um atalho que funcione no terminal e em qualquer programa. |
| Favorito no Arquivos | Arraste a pasta para a barra lateral, ou Ctrl+D | Só quer acesso rápido no gerenciador de arquivos. |
alias no .bashrc | alias trab='cd ~/Documentos/trabalho' | Quer um "comando" que leve até a pasta. Veja .bashrc, alias, PATH. |
| Link físico | ln dados.csv backup/dados.csv | Precisa que o arquivo continue existindo mesmo se um nome for apagado, no mesmo disco. |
Quando não funciona
$ 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.
$ 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.
$ 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.
$ 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ção | Descrição | Exemplo |
|---|---|---|
-s | Cria link simbólico | ln -s alvo nome |
-f | Substitui se o nome já existir | ln -sf alvo nome |
-n | Trata um link para pasta como arquivo (use com -f) | ln -sfn nova atual |
-r | Calcula o caminho relativo automaticamente | ln -sr arq pasta/link |
-v | Mostra o que foi criado | ln -sv alvo nome |
-i | Pergunta antes de substituir | ln -si alvo nome |
| Comando relacionado | Para quê |
|---|---|
readlink -f nome | Destino final de um link |
unlink nome | Apaga um link (igual a rm nome) |
find . -type l | Lista todos os links |
find . -xtype l | Lista só os links quebrados |
ls -li | Mostra 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:
2. Para onde aponta?
Complete para ver o destino final do link /usr/bin/python3:
3. Apagar só o atalho
Complete para apagar o atalho projeto sem tocar na pasta original:
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 nomecria um atalho (link simbólico); a ordem é a mesma docp.- No
ls -l, links aparecem comle->;readlink -fmostra 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 (
lnsem-s) é outro nome para os mesmos dados; não serve para pastas. - Para apagar um atalho:
rm nome, sem-re sem barra no fim.