Linux программирование в примерах
Шрифт:
2.1. Соглашения по опциям и аргументам
У слова аргументы есть два значения. Более техническим определением является «все 'слова' в командной строке». Например:
Здесь пользователь напечатал четыре «слова». Все четыре слова сделаны доступными программе в качестве ее аргументов [27] .
Второе определение более неформальное: аргументами являются все слова командной строки, за исключением имени команды. По умолчанию, оболочки Unix отделяют аргументы
27
Имя команды —
Кавычки прозрачны для запущенной программы;
Аргументы можно подразделить далее на опции и операнды. В предыдущих двух примерах все аргументы были операндами: файлы для
Опции являются специальными аргументами, которые каждая программа интерпретирует. Опции изменяют поведение программы или предоставляют программе информацию. По старому соглашению, которого (почти) всегда придерживаются, опции начинаются с черточки (т.е. дефиса, значка минус), и состоят из единственной буквы. Аргументы опции являются информацией, необходимой для опции, в отличие от обычных аргументов-операндов. Например, опция
Рис. 2.1. Компоненты командной строки
Таким образом,
2.1.1. Соглашения POSIX
Стандарт POSIX описывает ряд соглашений, которых придерживаются удовлетворяющие стандарту программы. Никто от вас не требует, чтобы ваши программы удовлетворяли этим стандартам, но это хорошая мысль сделать так: пользователи Linux и Unix по всему миру понимают и используют эти соглашения, и если вы не будете им следовать, ваши пользователи будут несчастны. (Или у вас вообще не будет пользователей!) Более того, функции, которые мы обсуждаем далее в этой главе, освобождают вас от бремени ручной реализации этих соглашений для каждой программы, которую вы пишете. Вот эти правила, перефразированные из стандарта:
1. В имени программы должно быть не менее двух и не более девяти символов.
2. Имена программ должны содержать лишь строчные символы и цифры.
3. Имя опции должно быть простым буквенно-цифровым символом. Опции с множеством цифр не должны допускаться. Для производителей,
4. Все опции должны начинаться с символа '
5. Для опций, не требующих аргументов, должно быть возможно объединение нескольких опций после единственного символа '
6. Когда опции все же требуется аргумент, он должен быть отделен от опции пробелом (например, '
Однако, стандарт допускает историческую практику, при которой иногда опция и ее операнд могут находиться в одной строке: '
7. Аргументы опций не должны быть необязательными.
Это означает, что если в документации программы указано, что опции требуется аргумент, этот аргумент должен присутствовать всегда, иначе программа потерпит неудачу GNU
8. Если опция принимает аргумент, который может иметь несколько значений, программа должна получать этот аргумент в виде одной строки со значениями, разделенными запятыми или разделителем.
Например, предположим, что гипотетической программе
В таком случае вы должны самостоятельно отделить и обработать каждое значение (т.е. здесь нет стандартной процедуры), но ручная реализация обычно проста.
9. Опции должны находиться в командной строке первыми, перед операндами. Версии
10. Специальный аргумент '
11. Порядок, в котором приведены опции, не должен играть роли. Однако, для взаимно исключающих опций, когда одна опция перекрывает установки другой, тогда (так сказать) последняя побеждает. Если опция, имеющая аргумент, повторяется, программа должна обработать аргументы по порядку. Например, '
12. Нормально, когда порядок аргументов имеет для программы значение. Каждая программа должна документировать такие вещи.
13. Программы, читающие или записывающие именованные файлы, должны трактовать единственный аргумент '
Отметим, что многие стандартные программы не следуют всем указанным соглашениям. Главной причиной является историческая совместимость; многие такие программы предшествовали систематизации этих соглашений.
Гвардия. (Дилогия)
65. В одном томе
Фантастика:
научная фантастика
рейтинг книги
Я все еще царь. Книга XXXI
31. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
Латино-Иерусалимское королевство
История крестовых походов
Научно-образовательная:
история
рейтинг книги
Академия
2. Медорфенов
Фантастика:
юмористическая фантастика
попаданцы
аниме
рейтинг книги
12
рейтинг книги
3ds Max 2008
Видеосамоучитель
Компьютеры и Интернет:
программное обеспечение
рейтинг книги
Неудержимый. Книга VI
6. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Попала, или Кто кого
Любовные романы:
современные любовные романы
рейтинг книги
Управленческая элита. Как мы ее отбираем и готовим
Деловая литература:
управление, подбор персонала
рейтинг книги
Том 14. Критические статьи, очерки, письма
14. Собрание сочинений
Документальная литература:
критика
публицистика
рейтинг книги
Философия и культура
Научно-образовательная:
философия
рейтинг книги
В этом мире еще можно удивляться
Любовные романы:
любовно-фантастические романы
рейтинг книги
Газлайтер. Том 18
18. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Шум и ярость
Проза:
классическая проза
рейтинг книги