Если у вас нет файла /var/log/cron
, вы можете восстановить команды (но не тайминги) из syslog
.
grep 'CRON.*(yourusername)' /var/log/syslog
затем вы можете определить большинство временных интервалов, посмотрев на метки даты.
Поскольку даже системный вызов stat(2)
не может работать для любого файла в каталоге, в котором отсутствует бит x
в разрешениях, все, что основано на системном вызове stat(2)
, не будет работать в таком каталоге.
Если в вашем каталоге установлен бит r
, вы действительно можете прочитать содержимое этого каталога, используя readdir()
, но вы не можете stat
или open
любой файл.
Напротив, каталог с установленным битом x
позволяет вам использовать файлы stat(2)
или open
, если вы знаете связанные имена файлов, но вы не можете использовать readdir()
для извлечения содержимого связанного каталога..
test -e
завершается с не -нулевым статусом в случае, если файл не существует (после разрешения символической ссылки, так что это также относится к существующим символическим ссылкам на несуществующим -или недоступные -файлы )или любая ошибка при попытке stat(2)
связанного файла.
Чтобы дополнить прекрасный ответ @schily, один из способов проверить, что данный каталог, к которому у вас есть доступ для чтения, но не обязательно доступ для поиска , содержит запись с заданным именем, — это прочитать содержимое этого каталог и найдите это имя файла.
Для этого можно использовать подстановку оболочки.
set -- /tmp/semi-secret/[f]oobar.txt
if [ "$1" = /tmp/semi-secret/foobar.txt ]; then
echo exists
fi
С помощью zsh
вы также можете:
if ()(($#)) /tmp/semi-secret/foobar.txt(N); then
echo exists
fi
С find
реализациями, поддерживающими-maxdepth
:
if find /tmp/semi-secret -mindepth 1 -maxdepth 1 -name foobar.txt -print |
grep -q '^'; then
echo exists
fi
За исключением решения zsh
, сложно адаптироваться к произвольным именам файлов.