Уважаемые подписчики! Девятый выпуск рассылки, выходящей теперь в категории обычных
некоммерческих, посвящен общим характеристикам
пользовательских команд в UnixWare, описанным на странице intro(1). Собственно,
с этого (или man man) и было бы логично начать рассылку, но мне хотелось сначала
поделиться более конкретной информацией.
Структура сайта рассылки
На сайте рассылки представлены
все предыдущие выпуски в виде страниц umanXXX.html, где XXX - номер выпуска с
начальными нулями, а не то, что вы подумали. Например, этот выпуск представлен
страницей uman009.html.
От того, что вы получаете по расслыке или можете найти в ее архиве выпуски отличаются
наличием счетчиков и кнопок, а также исправленными ошибками и опечатками. Если я
или вы их обнаружите, я могу исправить страницу на сайте, но не разосланный выпуск
рассылки. При обнаружении существенных ошибок я буду в последующих выпусках
давать ссылки на исправленные версии.
Кроме того, все страницы руководства, например, по UnixWare 2.03 собраны на сайте
проекта в отдельном каталоге.
Там каждая страница имеет соответствующее название, например,
telnet.html,
не содержит ничего, кроме перевода собственно справочного руководства
по команде, и отличается оформлением. "Картинки" вверху и внизу страниц мне
дороги как память, и на страницах UnixWare 2.03 я их оставлю, чтобы сохранить
исходное, придуманное еще в 1999 году оформление. На страницах по другим версиям
UNIX сделаю оформление проще (или красивее, посмотрим). Самое главное их
отличие в том, что внутри имеются относительные ссылки на другие,
связанные страницы справочного руководства. Даже если пока эти ссылки - висящие,
со временем будет получен достаточно полный и взаимосвязанный набор,
который вы сможете скачать и использовать. В рассылках же
не абсолютные ссылки просто запрещены...
Что послушать и почитать
Слушаем Янку Дягилеву, альбом
"Деклассированным элементам", даже если
будет трудно.
Читаем материалы на
сайте Якоба Нильсена. Обязательно для прочтения
всем, кто занимается Web-сайтами и (графическими) пользовательскими интерфейсами вообще. А вот
любителям командной строки и старого железа будет интересен проект
Linux Terminal Server Project.
Вопросы и ответы
Раздел этот на некоторое время закрывается. Ответам на вопросы
я предполагаю посвятить "юбилейный", 20-й выпуск рассылки, где-то
через неделю-две.
intro - введение в раздел команд и прикладных программ
ОПИСАНИЕ
Этот раздел справочного руководства (1) описывает, в алфавитном порядке,
команды, включая пользовательские, программистские и административные.
В разделе встречаются группы нескольких страниц с одинаковым именем.
Например, имеется несколько страниц справочного руководства по имени
mount(1M).
В каждом из таких случаев первая из группы страниц описывает
синтаксис и опции команды общего назначения, т.е., опции, применимые ко
всем типам файловых систем. Оставшиеся страницы описывают возможности
модулей команды, специфичных для конкретной файловой системы. На этих
страницах имя файловой системы, с которой они связаны, указывается как
суффикс имени раздела в имени команды. Вы не должны пытаться вызывать
такие модули напрямую - команда общего назначения предоставляет
обобщенный интерфейс для них всех. Таким образом, страницы справочного
руководства, специфические для типа файловой системы, не должны
рассматриваться как описывающие отдельные команды, а, скорее, как
детализирующие определенные аспекты команды, связанные с конкретным
типом файловой системы.
Синтаксис команд в справочном руководстве
Если не сказано иначе, команды, описанные в разделе "СИНТАКСИС" на
странице справочного руководства, воспринимают опции и другие аргументы в
соответствии со следующим синтаксисом:
имя [-опция ...] [аргумент_команды ...]
Эта нотация означает следующее:
[]
в квадратные скобки берутся необязательные опции или
аргументы команд
...
показывает, что может быть несколько опций или аргументов
имя
имя выполняемого файла
опция
noargletter ... или argletter optarg[, ...] (перед опцией
всегда указывается "-")
noargletter
Одна буква, представляющая опцию без аргумента.
Учтите, что несколько опций noargletter можно
сгруппировать вместе после одного дефиса, "-" (Правило 5
ниже).
argletter
Одна буква, представляющая опцию, требующую
указания аргумента.
optarg
Аргумент опции (символьная строка), соответствующая
предшествующей букве argletter. Учтите, что группы
аргументов после argletter должны разделяться запятыми
или браться в кавычки и разделяться пробелами (см.
Правило 8 ниже).
аргумент_команды
Путь (или другой аргумент команды), не начинающийся с
"-", или только "-", задающий стандартный входной
поток.
Стандарт синтаксиса команд: правила
Эти правила синтаксиса команд выполняются не всеми командами. Все
процедуры командного интерпретатора должны использовать getopts(1) для
разбора позиционных параметров и проверки допустимости опций. Она
поддерживает Правила 3-10, представленные ниже. Выполнение других правил
должна обеспечить сама команда.
Имена команд (имя выше) должны быть длиной от двух до девяти
символов.
Имена команд должны содержать только строчные буквы и цифры.
Имена опций (опция выше) должны состоять из одного символа.
Группы аргументов опции после нее должны либо разделяться запятыми,
либо браться в кавычки и разделяться пробелами (например, -o xxx,z,yy
или -o "xxx z yy").
Все опции в командной строке должны предшествовать операндам
(аргумент_команды выше).
"--" можно использовать для указания того, что опции закончились.
Порядок опций относительно друг друга не должен иметь значения.
Порядок операндов (аргумент_команды выше) может влиять на их
интерпретацию так, как определяет команда, в которой они задаются.
Дефис ("-"), перед которым и после которого идут пробельные символы,
должен использоваться только для обозначения входного потока.
ДИАГНОСТИКА
По завершении работы каждая команда возвращает два байта статуса, первый
задается системой и определяет причину завершения, и (в случае "нормального"
завершения) второй задается программой
(см. wait(2) и exit(2)).
Первый байт имеет значение 0 при нормальном завершении; второй, по соглашению, имеет
значение 0 при успешном завершении и ненулевое значение, показывающее
проблемы вроде ошибочных параметров, неправильных или недоступных
данных. Его часто называют по-разному: код выхода ("exit code"), cтатус
выхода ("exit status") или код возврата ("return code") и описывают только в
случае использования специальных договоренностей.