Двойной тире является все еще posix стандартом для длинных переключателей?

Обновление: Обратите внимание, что этот ответ с 2013, он относится к FreeBSD 8.x и ранее. BSD grep был добавлен в пересмотре 222273 и появился в FreeBSD-9.0 (странно, что изменение отсутствует в обычно всесторонней информации о версии: поиск Google). Полнофункциональный GNU grep продолжает быть доступным в наборе портов.


FreeBSD grep был GNU grep, хотя старый и с несколькими примененными патчами:

# which grep 
/usr/bin/grep

# /usr/bin/grep -V
grep (GNU grep) 2.5.1-FreeBSD

Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Это имеет небольшое количество патчей (большинство которых порождает из Fedora Linux), если Вы имеете /usr/src/ установленный они детализированы в /usr/src/gnu/usr.bin/grep/FREEBSD-upgrade.

При необходимости в чем-то конкретно в версии порта (2.12 по сравнению с 2.5.1) существует много bugfixes, улучшения скорости и поддержка PCRE (-P, не включенный в версии системы), должно быть довольно безопасно переупорядочить Ваш PATH помещать /usr/local/bin во-первых, это - то, что я обычно делаю. (Это - хорошая практика для использования su - так, чтобы среда корня была установлена правильно, хотя на FreeBSD значение по умолчанию ~root/.cshrc наборы PATH явно.)

Иначе проверьте свою страницу справочника оболочки и установите alias как требуется, но это действительно только для интерактивного использования, сценарии оболочки или Make-файлы не будут наблюдать его.

7
13.04.2017, 15:37
2 ответа
[112932]Я думаю, что [113339]POSIX не определяет длинные опции[113340] :

Руководящий принцип 3: Каждое имя опции должно содержать один буквенно-цифровой символ (алфавит[113591]). классификация символов) из портативного набора символов. -W (капитальный вариант-W) должен быть зарезервирован за опциями поставщика.

# hwclock --systohc

Многозначные опции не должны допускаться.

# hwclock --hctosys
Двойная тире [113345]- это конвенция GNU[113346].

В определении POSIX[113347]find[113348] "длинные переключатели" с одинарной тире не являются частью опций, а представляют собой выражение, данное в качестве операнда.[112939].

13
27.01.2020, 20:15

find[113328] кажется исключением из правила. Фактически [113329] find[113330] возникло вне группы разработчиков исходных утилит для Unix, отсюда и несоответствующий способ использования "длинных" опций.

Так часто стандартизация происходила только после того, как использование коротких и длинных опций стало обычной практикой в [113331]большинстве[113332] программ, и отчасти потому, что стали доступны некоторые подпрограммы или библиотеки для выполнения разбора опций (тем самым навязывая какой-то неявный стандарт). Но, конечно, в то время было слишком поздно изменять [113333] существующие [113334] программы, такие, как [113335] находят [113336], таким образом, чтобы не нарушать сценарии. Совместимость с POSIX, с двойными тире, менее важна, чем не нарушать эти скрипты.

Обратная совместимость, например, также является причиной того, что короткие опции для [113337]tar[113338] могут быть заданы с тире или без него.[112925].

2
27.01.2020, 20:15

Теги

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