Gostaria que meu script interpretasse links ao processar arquivos

0
> ls -l aliasedname
lrwxr-xr-x  1 anon3202  users  19 Dec 25 05:24 aliasedname -> www/realfilename

Eu gostaria que meu script retornasse detalhes sobre ~/www/realfilename quando ele fornecesse informações sobre aliasedname ($ 1) em vez das informações sobre o link chamado aliasedname (o que é mostrado acima).

Eu acho (talvez?) Eu quero algum tipo de exec ? Mas estou muito confuso sobre isso.

Eu estava pensando em fazer um ls , um cut e avaliá-lo, então pegar a última parte para usar como caminho ... mas parece que é muito trabalho, e que deveria haver um mais simples ( mais elegante) solução lá fora.

Eu estou fazendo uma variedade de coisas para $ 1 com o meu script, mas qualquer coisa pode ser passada para o meu script para processamento. Gostaria de ter certeza de que estou lidando com o arquivo real pretendido e não com um alias.

Eu poderia apenas verificar se é um arquivo ( if [ -f $1 ]; then ), mas se eu tiver passado por um alias, está bem claro qual era a intenção, e eu não deveria falhar.

    
por user3082 16.01.2015 / 15:48

2 respostas

0

Que tal usar readlink ? man readlink para detalhes.

Por exemplo,

[/tmp]$ ls -l
lrwxrwxrwx. 1 root root 9 Jan 16 10:07 mylink -> test-link
-rw-r--r--. 1 root root 0 Jan 16 10:07 test-link

[/tmp]$ readlink -f mylink 
/tmp/test-link

Em resposta à sua edição, você pode se beneficiar de " Operadores de teste de arquivo "

-h file is a symbolic link

    
por 16.01.2015 / 15:51
1

Se você precisar de ls detalhes, use a opção -H (--dereference-command-line) :

ls -lH ./aliasedname
    
por 16.01.2015 / 15:56

Tags