Команда `find` с одиночным дефисом перед [дубликатом]

Небольшое обновление для ответа Lynob: я столкнулся с той же проблемой и обнаружил, что blueman-applet, по крайней мере, в версии 1.99, имеет ту же ошибку, но проблемный код находится в /usr/lib/python2.7/dist-packages/blueman/main/KillSwitchNG.py.

Строки 87-88:

флаги |= os.O_NONBLOCK
self.fd = os.open("/dev/rfkill", флаги)
...

Чтобы решить проблему, бит binary mode также должен быть установлен в flags путем добавления этой строки перед вызовом open(...):

флаги |= os.O_BINARY

0
27.03.2018, 13:28
1 ответ

Поскольку findявляется утилитой, стандартизированной POSIX , а git— нет. Таким образом, разработчики gitмогут свободно реализовывать его опции/операнды любым способом, который они считают нужным.

Утилиты POSIX используют -для ввода параметров, а реализации этих утилит (, такие как lsи т. д. ), всегда реализуют их так, как предписывает стандарт POSIX. Кроме того, для некоторых утилит существует дополнительный вариант «длинной опции» некоторых стандартных опций вместе с расширениями, которые даже не упоминаются в POSIX.

В случае findэто не строго «опции», а «операнды» (, также называемые «первичными» или «предикатами» в зависимости от того, какое руководство вы читаете )в форме « выражения операнда» и воздействовать на имя пути, которое findобрабатывает в данный момент. Реальные варианты стандарта find— это просто-H(разыменование символических ссылок )и-L(не разыменование символических ссылок ). Вы заметите разницу в руководстве, где опции и операнды разделены на отдельные разделы.

Также для gitэто не «истинная опция», если она указана в командной строке так, как это делается в вопросе, а операнды. Параметры всегда указываются перед параметрами, отличными от -, и любые аргументы командной строки после последнего параметра являются просто «операндами». Однако они вполне могут быть преобразованы в истинные параметры для команды sub -, которая gitвызывается позже.

3
28.01.2020, 02:23

Теги

Похожие вопросы