Книга: Linux программирование в примерах
2.1.2. Длинные опции GNU
2.1.2. Длинные опции GNU
Как мы видели в разделе 1.4.2 «Поведение программ», программам GNU рекомендуется использовать длинные опции в форме --help
, --verbose
и т.д. Такие опции, поскольку они начинаются с '--
', не конфликтуют с соглашениями POSIX. Их также легче запомнить, и они предоставляют возможность последовательности среди всех утилит GNU. (Например, --help
является везде одним и тем же, в отличие от -h
для «help», -i
для «information» и т.д.) Длинные опции GNU имеют свои собственные соглашения, реализованные в функции getopt_long()
:
1. У программ, реализующих инструменты POSIX, каждая короткая опция (один символ) должна иметь также свой вариант в виде длинной опции.
2. Дополнительные специфические для GNU опции не нуждаются в соответствующей короткой опции, но мы рекомендуем это сделать.
3. Длинную опцию можно сократить до кратчайшей строки, которая остается уникальной. Например, если есть две опции --verbose
и --verbatim
, самыми короткими сокращениями будут --verbo
и --verba
.
4. Аргументы опции отделяются от длинных опций либо разделителем, либо символом =
. Например, --sourcefile=/some/file
или --sourcefile /some/file
.
5. Опции и аргументы могут быть заинтересованы в операндах командной строки, getopt_long()
переставляет аргументы таким образом, что сначала обрабатываются все опции, а затем все операнды доступны последовательно. (Такое поведение можно запретить.)
6. Аргументы опций могут быть необязательными. Для таких опций считается, что аргумент присутствует, если он находится в одной строке с опцией. Это работает лишь для коротких опций. Например, если -х такая опция и дана строка 'foo -хYANKEES -y
', аргументом -х
является 'YANKEES
'. Для 'foo -х -y
' у -х
нет аргументов.
7. Программы могут разрешить длинным опциям начинаться с одной черточки (Это типично для многих программ X Window.)
Многое из этого станет яснее, когда позже в этой главе мы рассмотрим getopt_long()
.
GNU Coding Standards уделяет значительное место перечислению всех длинных и коротких опций, используемых программами GNU. Если вы пишете программу, использующую длинные опции, посмотрите, нет ли уже использующихся имен опций, которые имело бы смысл использовать и вам.
- Appendix H. GNU Free Documentation License
- Appendix I. GNU General Public License
- 1.3. Автоматизация процесса с помощью GNU-утилиты make
- The GNU Image Manipulation Program
- 8.5. Обход дерева файлов: GNU du
- GNU Emacs and the Free Software Foundation
- Проект GNU и Фонд свободного ПО
- 2.1.2. Соглашения по работе с командной строкой в GNU
- Using the GNU C Compiler
- Appendix A. GNU Public License
- 13.1. GNU Debugger (GDB)
- Setting Up an NIS Client with GNU libc