Гуманные маны

HuMan> расшифровывается как HumanManual, или, говоря по-русски, ГУманное РУководство. Иначе говоря, руководство, написанное человеком, уже разобравшимся с командой, и для человека, впервые столкнувшегося с ней; то есть написанное по-человечески.

Я пересказывал русским языком, со множеством примеров, руководства команд, с применением которых мне удалось разобраться, и публиковл их под одинаковым заголовком. Синтаксис этого заголовка был такой: HuMan: <имя команды>

А чем, слышу я возмущенные голоса многочисленных гуру от Линукса и прочих Юниксовидных ОС, обычные маны тебе не хороши?

Отвечаю: большую часть манов я лично не понимаю, или не понимаю до конца (наверно я особенно невосприимчив к этому жанру). Я достаточно владею английским языком, чтобы со словарем разобраться практически с любым текстом. Но вот маны написаны зачастую так, что и старина Билл Гейтс в них не разобрался бы (может быть, поэтому он создал Windows, где нет никаких манов).

Мне кажется даже, что я понимаю причины и механизм этого явления. Программы пишут программисты, это люди особенного склада, творческие и увлекающиеся. И когда программа написана, ошибки наконец-то выловлены и отлажены, то надоела она уже хуже горькой редьки; к тому же в голове уже зреет новая идея. А тут надо ман писать! Да отпишусь побыстрее, не особенно выбирая слова (зачастую не родного английского языка), кому надо - разберется. К тому же автор программы настолько хорошо ее знает, что многие вещи, ставящие в тупик постороннего, кажутся ему очевидными, и он, в лучшем случае, мимоходом коснется их.

В результате получаются неудобопонятные, неграмотно сляпанные руководства, в которых могут разобраться разве что другие программисты. А чтобы дать примеры... нет уж, увольте.

Я не хочу сказать, что таковы все мануалы. Попадаются и понятные, но все же очень много откровенно плохих (то есть по ним очень трудно овладеть программой, которую они описывают). Мне тут могут напомнить про известную рыбку из пруда, но я буду стоять на своем - я не хочу тратить половину дня, чтобы разобраться с опциями простой программы.

Вот и в тот день я сочинял статью про перенаправления ввода/вывода и программные каналы в Юниксовидных ОС. Дошло дело до команд-фильтров, которые и делают программные каналы и перенаправления столь всемогущими. Стал я приводить список команд-фильтров, дошел до команды cut и тут убедился, что автор статьи, откуда я беру пример, сам не вполне знает команду, о которой пишет. Вот точная цитата из его статьи (не буду раскрывать инкогнито): "Users can also cut based upon "fields" of data by using the -f and (perhaps) the -d options. Refer to man pages for additional details."

Перевод: "Пользователи могут также вырезать, пользуясь командой cut, ориентируясь по "полям" данных, применяя опцию -f и (возможно) опцию -d. Детали ищите в манах программы cut".

Значит я не одинок! Кто-то еще не смог, или не захотел тратить время на расшифровку китайской грамоты мана.

Что же, нечего делать, полезем в маны. Привожу русский ман этой программы (очень грамотный и почти дословный перевод с английского):

cut

Section: Команда Русский ман (1)

НАЗВАНИЕ cut - удаляет секции из каждой строки файлов

СИНТАКСИС

cut {-b список-байтов, --bytes=список-байтов} [-n] [--help] [--version] [файл...]

cut {-c список-символов, --characters=список символов} [--help] [--version] [файл...]

cut {-f список полей, --fields=список-полей} [-d разделитель] [-s] [--delimiter=разделитель] [--only-delimited] [--help] [--version] [файл...]

ОПИСАНИЕ

Это документация не обновлялась долгое время и по этому может оказаться неточной или неполной. Используйте авторскую документацию в Texinfo.

Эта страница руководства описывает GNU версию программы cut. cut печатает секции каждой строки каждого входного файла (или стандартного ввода, если входные файлы не заданы). Имя файла `- ' означает стандартный ввод. Секции, которые будут напечатаны, определяются заданием опций.

ОПЦИИ

список-байтов, список-символов, и список-полей могут быть одним числом или несколькими числами, а также диапазонами (два числа разделенных тире) которые перечисляются через запятую. Первый байт, символ и поле нумеруются 1. Могут быть заданы неполные диапазоны: `-m ' означает `1-m '; `n- ' означает `n ' через конец строки или следующее поле.

-b, --bytes список-байтов

Печатает только байты в позициях перечисленных в списке-байтов. Табуляции и backspaces трактуются как любой другой символ; они занимают 1 байт.

-c, --characters список-символов

Печатает только символы в позициях перечисленных в списке-символов. Так же как и в случае -b табуляции и backspaces трактуются как любой другой символ; они занимают 1 символ, но интернационализация будет вносить свои изменения.

-f, --fields список-полей

Печатает только поля перечисленные в списке-полей. Поля по умолчанию разделяются символом TAB.

-d, --delimiter разделитель

Для -f, поля разделяются первым символом, указанным в delim вместо символа TAB.

-n

Не разбивать многобайтные символы (ничего не делать для этого случая)

-s, --only-delimited

Для -f, не печатать строки, которые не содержат символ-разделитель поля.

--help

Выводит подсказку об использовании и выходит с успешным кодом возврата.

--version

Выводит информацию о версии на стандартный вывод и завершается.

Перевод

Перевел с английского Виктор Вислобоков 2:5054/8.34@Fidonet.org

Ну, как? Все понятно? Особенно что такое список-байтов, список-символов и список-полей (и главное - что это за поля такие)?

Теперь посмотрим английский ман. Напрасные старания, все те же загадочные поля. Я знаю только одни поля в текстовом файле - те, которые по краям страницы, но здесь речь явно не о них. Правда слово "fields" не столь однозначно, оно может обозначать области, регионы и прочее, но хотелось бы знать, что автор мана имел в виду применительно к файлу!? Не стану вас мучить и приводить английский ман, перевод очень точный. Поищем в Интернете.., есть ман от OpenBSD, тот поподробнее и - о, счастье! - два примера, от которых уже можно танцевать.

Результатам этих танцев, продолжавшихся целый рабочий день, и стал этот проект.

Hosted by uCoz