Como verificar se um link simbólico existe no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como determinar se um arquivo no Linux é um link simbólico. Você explorará três métodos diferentes para alcançar este objetivo.

Primeiramente, você usará o comando test com a opção -L para verificar programaticamente o tipo de arquivo. Em seguida, você verificará as informações do link examinando a saída do comando ls -l. Finalmente, você aprenderá como resolver o arquivo ou diretório de destino para o qual um link simbólico aponta, usando o comando readlink.

Nesta etapa, você aprenderá como testar se um arquivo é um link simbólico usando o comando test com a opção -L.

Um link simbólico (ou symlink) é um tipo especial de arquivo que aponta para outro arquivo ou diretório. Pense nele como um atalho no Windows. Quando você acessa um link simbólico, você está, na verdade, acessando o arquivo ou diretório para o qual ele aponta.

Primeiro, vamos criar um arquivo simples. Certifique-se de estar no diretório ~/project.

echo "This is the original file." > original_file.txt

Agora, vamos criar um link simbólico para original_file.txt. Vamos nomear o link simbólico my_symlink.

ln -s original_file.txt my_symlink
  • ln: O comando usado para criar links.
  • -s: Esta opção diz ao ln para criar um link simbólico (em vez de um hard link).
  • original_file.txt: O arquivo de destino para o qual o link simbólico apontará.
  • my_symlink: O nome do link simbólico que estamos criando.

Agora, podemos usar o comando test para verificar se my_symlink é um link simbólico. O comando test é usado para verificar tipos de arquivos e comparar valores. Ele não produz saída diretamente, mas seu status de saída indica sucesso (0) ou falha (não-zero).

Podemos combinar test com echo para ver o resultado.

test -L my_symlink && echo "my_symlink is a symbolic link" || echo "my_symlink is NOT a symbolic link"
  • test -L my_symlink: Isso verifica se my_symlink é um link simbólico.
  • &&: Este é um operador lógico AND. Se o comando antes de && for bem-sucedido (status de saída 0), o comando após && será executado.
  • ||: Este é um operador lógico OR. Se o comando antes de || falhar (status de saída não-zero), o comando após || será executado.

Como my_symlink é de fato um link simbólico, a saída deve ser:

my_symlink is a symbolic link

Agora, vamos testar um arquivo regular, como original_file.txt:

test -L original_file.txt && echo "original_file.txt is a symbolic link" || echo "original_file.txt is NOT a symbolic link"

A saída deve ser:

original_file.txt is NOT a symbolic link

Isso confirma que test -L identifica corretamente os links simbólicos.

Nesta etapa, você aprenderá como identificar links simbólicos e seus destinos usando o comando ls -l.

O comando ls é usado para listar arquivos e diretórios. A opção -l fornece um formato de "lista longa", que inclui informações detalhadas sobre cada arquivo, como permissões, propriedade, tamanho e tempo de modificação.

Quando você usa ls -l em um link simbólico, ele exibe o próprio link e também mostra para onde ele aponta.

Certifique-se de estar no diretório ~/project onde você criou original_file.txt e my_symlink na etapa anterior.

Agora, execute o comando ls -l:

ls -l

Você deve ver uma saída semelhante a esta:

total 4
-rw-rw-r-- 1 labex labex   25 Feb 28 10:00 original_file.txt
lrwxrwxrwx 1 labex labex   15 Feb 28 10:00 my_symlink -> original_file.txt

Vamos analisar a saída para my_symlink:

  • O primeiro caractere l indica que este é um link simbólico. Para um arquivo regular, seria -.
  • As permissões (rwxrwxrwx) são frequentemente mostradas como permissões completas para links simbólicos, mas as permissões reais são determinadas pelo arquivo de destino.
  • A contagem de links é tipicamente 1 para um link simbólico.
  • O proprietário e o grupo são labex.
  • O tamanho (15) é o número de caracteres no caminho de destino (original_file.txt).
  • O timestamp é o tempo de criação ou modificação do próprio link simbólico.
  • my_symlink: O nome do link simbólico.
  • -> original_file.txt: Esta parte mostra claramente que my_symlink aponta para original_file.txt.

Compare isso com a saída para original_file.txt:

  • O primeiro caractere - indica que este é um arquivo regular.
  • As permissões (rw-rw-r--) mostram quem pode ler, escrever e executar o arquivo.
  • A contagem de links (1) indica quantos hard links apontam para os dados deste arquivo.
  • O tamanho (25) é o tamanho real do conteúdo do arquivo em bytes.

Usar ls -l é uma maneira muito comum de identificar rapidamente links simbólicos e ver para onde eles estão apontando.

Nesta etapa, você aprenderá como usar o comando readlink para encontrar o destino de um link simbólico.

Embora ls -l seja ótimo para uma visão geral visual, o comando readlink é projetado especificamente para resolver links simbólicos e imprimir seu caminho de destino. Isso é particularmente útil em scripts ou quando você precisa apenas do caminho de destino sem outras informações do arquivo.

Certifique-se de estar no diretório ~/project.

Use o comando readlink no link simbólico my_symlink que você criou nas etapas anteriores:

readlink my_symlink

A saída será o caminho para o qual o link simbólico aponta:

original_file.txt

Isso confirma que my_symlink está realmente apontando para original_file.txt.

O comando readlink tem uma opção útil, -f, que segue recursivamente todos os links simbólicos e os resolve para o caminho absoluto do destino final. Isso é útil se você tiver uma cadeia de links simbólicos.

Vamos criar outro link simbólico que aponte para my_symlink:

ln -s my_symlink another_link

Agora, se você usar readlink em another_link sem a opção -f, ele mostrará o destino imediato:

readlink another_link

Saída:

my_symlink

Mas se você usar readlink -f em another_link, ele seguirá a cadeia (another_link -> my_symlink -> original_file.txt) e fornecerá o caminho absoluto do destino final:

readlink -f another_link

Saída:

/home/labex/project/original_file.txt

Isso mostra o caminho completo para o arquivo original. O comando readlink -f é muito poderoso para encontrar o destino final de um link, mesmo que ele esteja aninhado dentro de outros links.

Você agora aprendeu três maneiras de trabalhar com links simbólicos: usando test -L para verificar se um arquivo é um link, usando ls -l para ver detalhes e destinos do link e usando readlink para resolver o caminho de destino.

Resumo

Neste laboratório, você aprendeu como verificar se um arquivo é um link simbólico no Linux. Você primeiro criou um arquivo regular e um link simbólico apontando para ele. Em seguida, você usou o comando test com a opção -L para determinar programaticamente se um determinado arquivo é um link simbólico, observando como seu status de saída pode ser usado com operadores lógicos (&& e ||) para exibir um resultado.

Você também aprendeu como verificar visualmente um link simbólico usando o comando ls -l, que exibe um 'l' no início do campo de permissões e mostra o destino do link. Por fim, você explorou o comando readlink para resolver o caminho de destino de um link simbólico, compreendendo sua utilidade para scripting e automação.