Назад | Перейти на главную страницу

Как определить разницу между «Нет такого файла или каталога» и «В разрешении отказано»

Я бы предпочел не разбирать STDERR, но я не могу придумать другого способа программно определить разницу между ними:

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

Независимо от того, какую команду я пробую, они оба возвращают один и тот же код ошибки, так что это тупик:

$ 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

Я пробовал различные тесты файлов на perl, но они оба возвращают одинаковые коды.

Вместо этого проверьте файл.

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

Увидеть test страница руководства для других возможностей.

$ test -f /etc/passwd
$ echo $?
0

$ test -f /etc/passwds
$ echo $?
1