Como posso verificar se existe um link simbólico no CentOS

2

Normalmente, ls -la daria isso para mim, mas acho que o CentOS é diferente. Eu preciso verificar se existe um link simbólico.

    
por Mark Henderson 11.03.2010 / 02:43

3 respostas

5

Se você quer dizer "O link realmente aponta para um arquivo?", (o que eu acho que você faz porque então:

if [[ -e "$file" ]]; then echo it is there; fi

Se quiser apenas testar se o arquivo é um link simbólico, então:

if [[ -h "$file" ]]; then echo it is a link; fi

Isto é feito sob medida para o Bash, e não da maneira mais portátil. E como um pouco de trivialidade, você não precisa das aspas ao usar a sintaxe de colchetes duplos.

Se você deseja pesquisar links quebrados, use find -L . -type l .

Se você quer que o ls funcione novamente com suas cores diferentes para links quebrados, vá em eval $(dircolors)

    
por 11.03.2010 / 02:53
1

Se você deseja verificar um arquivo que já sabe usar. Além disso, o arquivo pode ser usado para identificar o tipo de objeto de arquivo:

[akula@jasonlawer ~]$ file /var/www/html/2001914
/var/www/html/2001914: symbolic link to '/tickets/rhev/2001914.zip_FILES/'

Se foi fornecido como parte de um pacote, o mais fácil é usar o RPM para verificar o pacote usando

[akula@jasonlawer ~]$ rpm -V httpd
    
por 11.03.2010 / 03:56
1

você pode usar

if [[ -f 'readlink filename' ]]; then
....
fi

O comando readlink retorna o destino do link simbólico. -f testa se esse arquivo existe. Tenha cuidado com 'character, its not' ou '. Ele ajuda você a executar o comando bash interno como uma consulta interna em um sistema sql.

    
por 24.11.2010 / 14:54