Команда find
очень старая, начиная с Unix V5 . В то время соглашения о синтаксисе командной строки не были так прочно установлены, как сейчас. Несколько старых программ отклоняются от этих соглашений.
Изначально у find
не было опций. Он ожидал, что первый аргумент будет каталогом для обхода, а остальные аргументы будут выражением. Вычисление выражения для каждого файла указывает, должен ли этот файл быть напечатан (или, в более общем смысле, указывает, что делать с файлом ). Выражение состоит из операторов и их операндов. Операторы поиска начинаются с -
(, за исключением нескольких знаков препинания, )по той же причине, что и опции начинаются с -
:, потому что он не имеет особого значения в оболочке, поэтому его легко набирать, но его можно отличить от файла. имена, потому что разумные люди не начинают имя файла с -
.
Операторы не являются опциями. Почему? Потому что у них нет синтаксиса опций… У них есть написание опций (, начинающееся с -
), но они используются в другом контексте.
Позже find
приобрел несколько вещей, которые можно было считать опциями — глобальные настройки, такие как -depth
, которые на самом деле не имеют никакого отношения к выражению.Они были помещены в выражение для согласованности, потому что у find
не было вариантов.
Еще позже find
приобрел несколько опций, с обычным синтаксисом опций :опций перед не -опциями. Это было сделано для совместимости со многими другими программами, которые поддерживают те же параметры(-H
и -L
для настройки поведения символической ссылки ).
Синопсис говорит вам, что -H
, -L
и тому подобное может идти первым, затем путь (s ), затем выражение. Синтаксис синопсиса не всегда может выразить все возможности. Если бы он был полным, он был бы нечитаем, поэтому все, что вы знаете, это то, что он дает одну возможность. Вам нужно читать дальше, если вы хотите точно знать, что возможно, а что нет. Например, -H
, -L
и т. д. могут идти в любом порядке, если они стоят перед путем.
Чтобы выполнить приостановку с -на -диск, вам необходимо полностью выйти из спящего режима, включить диск и записать на него данные гибернации.
Возможное решение:
/etc/pm/sleep.d
, который будет вызываться с помощью thaw
или resume
. touch /run/wakeuptime
)и :. touch /run/wakeuptime
)и приостановить В идеале вы можете указать BIOS просыпаться только в том случае, если система находится в S3, и оставить ее в спящем режиме, если в S4.
(*)для этого я бы использовал [[ -n $(find /run -maxdepth 1 -path /run/wakeuptime -mmin -1440) ]]
.