Сегодня как будто заново родился в прямом смысле слова.
Можно значительно улучшить разработку скриптов с применением утиллит консольного типа поддерживающих задание опций в стиле UNIX подхода и поддерживать его в своих тулзах. Вероятно вы видели в консоли строку помощи, подобную этой:
c:\tools\grep_>grep --help
Usage: grep [OPTION]... PATTERN [FILE] ...
Search for PATTERN in each FILE or standard input.
Example: grep -i 'hello world' menu.h main.c
Regexp selection and interpretation:
-E, --extended-regexp PATTERN is an extended regular expression
-F, --fixed-strings PATTERN is a set of newline-separated strings
Возможно у Вас также как и у меня возникали вопросы:
Для того чтобы понять эту разницу, нужно осознавать, что существуют два случая применения программ консольного типа:
Для первого же случая использование утиллит предполагает, что они применяются для быстрого получение результата, к примеру необходимого при отладке командного сценария и пользователь, как правило помнит назначение применяемых им опций. Поэтому при использовании опций такого типа допускается для скорости набора "буковок" команды применять один дефис.
Для второго случая следует, когда утилиты консольного типа используются в скриптах. Их применение предполагает, что в будущем возможно придется изменить скрипт, а это надо означает, что надо помнить значение каждой опции и при этом скрипт может быть сколь угодно большим. Для таких опций используются два дефиса.
Осталось пояснить еще один нюанс, который весьма важен и который нужно знать!
Значения в коротких опциях, следуют через пробел, а в длинных через символ "=" , который в языке программирования в "С" означает "присвоить".
Можно значительно улучшить разработку скриптов с применением утиллит консольного типа поддерживающих задание опций в стиле UNIX подхода и поддерживать его в своих тулзах. Вероятно вы видели в консоли строку помощи, подобную этой:
c:\tools\grep_>grep --help
Usage: grep [OPTION]... PATTERN [FILE] ...
Search for PATTERN in each FILE or standard input.
Example: grep -i 'hello world' menu.h main.c
Regexp selection and interpretation:
-E, --extended-regexp PATTERN is an extended regular expression
-F, --fixed-strings PATTERN is a set of newline-separated strings
Возможно у Вас также как и у меня возникали вопросы:
- А чем отличаются опции с одним дифисом, от опций с двумя дефисами?
- Если обе опции ведут к одному и тому же, то зачем вводить две?
- Короткие опции, помечаемые одним дефисом;
- Длинные опции, помечаемые двумя дефисами.
Для того чтобы понять эту разницу, нужно осознавать, что существуют два случая применения программ консольного типа:
- В визуальной среде позволяющей интерактивно работать с програмами консольного типа(К примеру: для MS Windows это "cmd.exe", либо FAR с горячей клавишей "ctrl+O");
- В командных сценариях(*.bat, *.cmd, *.sh, etc).
Для первого же случая использование утиллит предполагает, что они применяются для быстрого получение результата, к примеру необходимого при отладке командного сценария и пользователь, как правило помнит назначение применяемых им опций. Поэтому при использовании опций такого типа допускается для скорости набора "буковок" команды применять один дефис.
Для второго случая следует, когда утилиты консольного типа используются в скриптах. Их применение предполагает, что в будущем возможно придется изменить скрипт, а это надо означает, что надо помнить значение каждой опции и при этом скрипт может быть сколь угодно большим. Для таких опций используются два дефиса.
Осталось пояснить еще один нюанс, который весьма важен и который нужно знать!
Значения в коротких опциях, следуют через пробел, а в длинных через символ "=" , который в языке программирования в "С" означает "присвоить".
5 комментариев:
Не понял про знак "=".
Вполне можно и без него.
И даже нужно!
Примеров - почти всё. Только Configure понимаш пробел хочет.
Тфу, я имел ввиду Configure знак '=' хочет.
>>Тфу, я имел ввиду Configure знак '=' хочет.
И правильно хочет!!! Когда ты пишешь длинные опции, ты своего рода пишешь переменную с присваиванием ей значения. А в программировании под "присваиванием" часто понимает символ "=".
обычно с одним '-' в опциях только одна буква, а с двумя сразу слово. Например у того же grep -s с одним тире, а эквивалентная ей --no-messages с двумя
>>обычно с одним '-'
Ты верно подметил "обычно"! К примеру во фряхе до п..ды опций где вроде как слово, но почему-то одно тире?! ;) Примером может служить "man find"(просмотрено на FreeBSD 8.2 release i386)
Отправить комментарий