Como saber a diferença entre "Nenhum arquivo ou diretório" e "Permissão negada"

3

Prefiro não analisar STDERR, mas não consigo pensar em outra maneira de diferenciar, de forma programática, entre os dois:

$ ls /net/foo.example.com/bar/test
/net/foo.example.com/bar/test: Permission denied
$ ls /sdfsdf
/sdfsdf: No such file or directory

Não importa qual comando eu tente, ambos parecem retornar o mesmo código de erro, então esse é um beco sem saída:

$ ls /net/foo.example.com/bar/test
/net/foo.example.com/bar/test: Permission denied
$ echo $?
2
$ ls /sdfsdf
/sdfsdf: No such file or directory
$ echo $?
2

Eu tentei os vários testes de arquivo no perl, mas ambos retornam os mesmos códigos também.

    
por wsaxton 20.05.2014 / 22:14

2 respostas

8

Teste o arquivo.

test -e /etc/shadow && echo The file is there

test -f /etc/shadow && echo The file is a file

test -d /etc/shadow && echo Oops, that file is a directory

test -r /etc/shadow && echo I can read the file

test -w /etc/shadow && echo I can write the file

Veja a página test man para outras possibilidades.

    
por 20.05.2014 / 22:16
1
$ test -f /etc/passwd
$ echo $?
0

$ test -f /etc/passwds
$ echo $?
1
    
por 20.05.2014 / 22:16