Um link em Linux é um ficheiro especial que se refere a outro ficheiro ou diretório. Desta forma, um ficheiro pode ser colocado em vários locais ao mesmo tempo. Quando o ficheiro original é apagado, o link é mantido. Isto pode resultar em crashes e geralmente entope o sistema.
Para começar, vamos explicar o método de verificar se o ficheiro é realmente um link. Isto é convenientemente feito usando o utilitário ls
. Depois disso, vamos ver três métodos de remoção, cada um com as suas particularidades.
Com a ajuda do ls
, é conveniente ver informações sobre o ficheiro. Para usar o utilitário, dê-lhe a opção -l
e especifique o caminho. Como exemplo, tomemos o ficheiro ~/symlinks/link_1
:
$ ls -l ~/symlinks/link_1
Pode verificar se existem ligações num catálogo inteiro:
$ ls -l ~/symlin
Um ficheiro que não seja necessário é marcado com uma seta caraterística a seguir ao seu nome.
O comando rm
pode ser usado para apagar qualquer ficheiro no sistema de ficheiros Linux, incluindo links. Ou seja, ele é adequado para a nossa tarefa. É importante mencionar aqui que o arquivo ou diretório original não será afetado como resultado da exclusão do link.
No terminal, execute o comando:
$ rm ~/symlinks/link_1
Além disso, para obter informações detalhadas sobre o procedimento, adicione a opção -v
ao comando:
$ rm -v ~/symlinks/link_1
Adicionalmente, pode verificar se a ligação desapareceu do diretório. Para fazer isso, use o comando ls
descrito anteriormente.
Agora você sabe como remover um link simbólico do Linux.
O utilitário unlink
foi concebido para remover ficheiros do sistema de ficheiros Linux. Ele só precisa especificar o caminho para o link:
$ unlink ~/symlinks/link_1
Dentro do escopo da tarefa em questão, rm e unlink funcionam de forma quase idêntica. Agora vamos passar para o último método.
Com a ajuda do comando find
pode procurar e apagar ligações num determinado diretório. Isto significa que não precisa de usar o ls
adicionalmente.
Ao contrário das duas opções anteriores, este comando tem caraterísticas bastante avançadas, por exemplo, a definição de critérios de pesquisa. Mas a sintaxe também não é tão simples por este motivo.
Para pesquisar, é necessário especificar um diretório e alguns parâmetros:
$ find ~/symlinks/ -type l -print
O parâmetro -type l
é necessário para selecionar apenas as ligações simbólicas, -print
para produzir o nome completo. E com a ajuda de -maxdepth
pode especificar a profundidade da pesquisa por diretórios aninhados. Se especificar 1, a pesquisa será efectuada apenas no próprio diretório, sem anexos:
$ find ~/symlinks/ -maxdepth 1 -type l -print
Quando existem muitas ligações no diretório, pode especificar um padrão de pesquisa para o comando find
. Como exemplo, vejamos uma situação em que queremos encontrar apenas ligações ocultas com uma data de última modificação não superior a 30 dias:
$ find ~/data/ -type l -name ".*" -mtime -30 -print
Foram adicionados dois critérios:
-name
- pesquisa por nome
.-mtime
- por hora de modificação.Todas as ligações encontradas podem ser apagadas de acordo com o padrão especificado. Para este efeito, -print
é substituído por -delete
:
$ find ~/data/ -type l -name ".*" -mtime -30 -delete
No final da instrução vamos lidar com a procura e eliminação de ligações quebradas que não levam a lado nenhum, por exemplo, depois de apagar o ficheiro ou diretório original. O parâmetro -xtype l
é adequado para este propósito. -print
não é necessário para a saída:
$ find ~/broken_links/ -xtype l
Como resultado, todos os links quebrados serão exibidos no terminal. Para as remover, adicione -delete
no fim do comando:
$ find ~/broken_links/ -xtype l -delete
Isto completa as instruções para apagar um link no Linux.