Bem, está no GNU , FreeBSD , OpenBSD e gerais BSD ls
implementações, então eu diria que é muito provável que seja em qualquer lugar.
Eu tenho alguns softwares que, entre outras coisas, precisam:
Atualmente, ele executa o comando ls -l
. Se o arquivo é um link simbólico, eu tenho que obter as permissões do arquivo de destino. A opção -L
funciona bem para isso.
A pergunta: existem sabores do Unix nos quais eu corro o risco de não estar disponível? Se sim, quais são? (Se eles são raros e antigos o suficiente, eu poderia simplesmente ignorar o problema.)
Não analise ls
se puder evitar. Dependendo do que você está fazendo, o utilitário test
pode ser uma alternativa melhor.
test -r filename
retornará sucesso se o arquivo for legível com as permissões do usuário atual e seguirá os links simbólicos automaticamente. Da mesma forma, -w
e -x
dirão se o arquivo é gravável ou executável. O comando test
é especificado pelo POSIX e, portanto, deve funcionar com qualquer UNIX moderno.
Se você realmente precisa conhecer as permissões específicas do arquivo, ls
pode ser a maneira mais portátil, contanto que você o use apenas em um arquivo por vez. Nesse caso, os sinalizadores -L
e -l
também são especificados por POSIX , portanto você deve estar razoavelmente seguro. (Veja " Não Analise ls
" para um pouco mais de comentários sobre a portabilidade dos campos de saída de ls -l
. )
Outra opção pode ser escrever um pequeno programa em C para aproveitar os stat(2)
chamada de sistema, que estará disponível em todos os UNIX sob o sol. Se essa é uma pequena parte de um software maior que já está sendo compilado a partir de C, essa pode ser a melhor opção.
Está no SUSv3 (Posix 2001) mas não no SUSv2 (também conhecido como Unix98).
Tags compatibility ls scripting symlink