<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF122%3ADrBrown3</id>
		<title>LXF122:DrBrown3 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF122%3ADrBrown3"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF122:DrBrown3&amp;action=history"/>
		<updated>2026-05-13T04:30:31Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF122:DrBrown3&amp;diff=10657&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF122:DrBrown3&amp;diff=10657&amp;oldid=prev"/>
				<updated>2010-09-02T08:39:12Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Происхождение ''man''==&lt;br /&gt;
&lt;br /&gt;
: '''''Man''''' Небольшой экскурс в историю команды «''man''» и инструкция по чтению ''man''-страниц и созданию собственных.&lt;br /&gt;
&lt;br /&gt;
Команда ''man'' гораздо старше ''info''. Это традиционный способ документирования утилит Linux, особенно тех, что работают из командной строки. Но вы когда-нибудь интересовались тем, как они устроены?&lt;br /&gt;
&lt;br /&gt;
Каждая ''man''-страница принадлежит к одному из восьми разделов. Это разделение восходит ко временам, когда ''cat'' была еще котенком, хотя названия разделов с тех пор чуть изменились.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF122_44_1.jpg|300px]] Стандартное расположение элементов на ''man''-странице упрощает навигацию, если вы разобрались, что вам надо.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
В современных системах Linux это:&lt;br /&gt;
# Исполняемые программы или команды оболочки.&lt;br /&gt;
# Системные вызовы (функции, предоставленные ядром).&lt;br /&gt;
# Библиотечные вызовы (функции в библиотеках программ).&lt;br /&gt;
# Специальные файлы (обычно находятся в '''/dev''').&lt;br /&gt;
# Форматы файлов и соглашения (например, '''/etc/passwd'').&lt;br /&gt;
# Игры.&lt;br /&gt;
# Разное.&lt;br /&gt;
# Команды системного администрирования.&lt;br /&gt;
&lt;br /&gt;
Номер раздела можно найти на первой строке самой ''man''-страницы в круглых скобках. Например, на экранном снимке ''man''-страницы команды ''odd'' (ниже) мы видим, что она принадлежит к первому разделу ''man''. Откройте ''man''-страницу ''fork'', и вы поймете, что это системный вызов (раздел 2). Команда ''getpwent'' относится к третьему разделу, ''fstab'' – к пятому, а ''fdisk'' – к восьмому.&lt;br /&gt;
&lt;br /&gt;
Некоторые темы входят более чем в один раздел. Например, ''chmod'' – это и команда, и системный вызов. Просто ''man chmod'' покажет страницу из первого раздела. Если вам нужна страница системного вызова ''chmod'', нужно явно запросить ее из второго раздела, командой ''man 2 chmod''. Аналогично, ''man passwd'' покажет ''man''-страницу для команды ''passwd'' из первого раздела, а ''man 5 passwd'' покажет ''man''-страницу для формата файла паролей в разделе 5.&lt;br /&gt;
&lt;br /&gt;
Man-страницы в моем руководстве по Unix редакции 6 (датированном 1973 годом) используют стандартный набор заголовков: заголовков: '''NAME''' (Название), '''SYNOPSYS''' (Краткий обзор), '''DESCRIPTION''' (Описание), '''FILES''' (Файлы), '''SEE ALSO''' (См. также), '''DIAGNOSTICS''' (Диагностика) и '''BUGS''' (Ошибки). Он сохранялся до man-страниц System V (около 1990 года), за исключением заголовка '''BUGS''', который в документации AT&amp;amp;t был удален или переименован в '''Caveats''' (предупреждения, пояснения) – видимо, из-за нежелания компании признать, что в их ПО бывают ошибки. На ''man''-странице может быть раздел с примерами ('''Examples'''). В руководстве GNU подход более либеральный: там можно найти&lt;br /&gt;
такие заголовки, как '''Overview''' (Общее представление), '''Environment '''(Среда), '''Author''' (Автор), '''Copyright''' (Авторские права) и '''Reporting Bugs''' (Как сообщить об ошибке?).&lt;br /&gt;
&lt;br /&gt;
Секция '''SYNOPSIS''' – настоящее сердце ''man''-страницы. Здесь используется формальная запись, чтобы показать верный синтаксис команды, и нужно разбираться в его основных элементах:&lt;br /&gt;
* Квадратные скобки [как эти] означают необязательные элементы. Можно убрать их, и команда останется верной.&lt;br /&gt;
* Вертикальная черта означает «или». Так, [-i|-l] означает, что можно указать ключ '''-i''' или '''-l''', но не оба сразу.&lt;br /&gt;
* Многоточие (три точки …) означает, что предыдущий элемент можно повторить. Выделенный жирным шрифтом текст – это дословный текст команды, курсив (или подчеркнутый текст) нужно заменить подходящим аргументом.&lt;br /&gt;
&lt;br /&gt;
Такая запись – на удивление мощное средство. Рассмотрим примеры:&lt;br /&gt;
&lt;br /&gt;
 ctags [-aBFtuvwx] [-f tagsfile] filename …&lt;br /&gt;
&lt;br /&gt;
Это классический пример из руководства по SVR4. Во-первых, можно указать любое сочетание односимвольных опций из набора '''aBFtuvwx'''. Идея предварять их дефисом идет с незапамятных времен. (Кстати, интерпретирует эти аргументы сама команда, а не оболочка. Оболочка только считает '''-n''' обычной строкой аргумента.) Затем можно указать опцию '''-f''', за которой должно идти имя файла '''tagsfile'''. В конце указывается одно или несколько имен файлов. Имя файла не находится в квадратных скобках, поэтому оно обязательно – следует указать по меньшей мере одно.&lt;br /&gt;
&lt;br /&gt;
Вот весьма эффектный пример использования вложенных квадратных скобок:&lt;br /&gt;
&lt;br /&gt;
 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]&lt;br /&gt;
&lt;br /&gt;
Во-первых, можно указать '''-u, --utc''' или '''--universal''' (все они означают одно и то же). Этот параметр необязателен. Потом можно указать дату и время. В этом случае нужно ввести как минимум '''MMDDhhmm''' (месяц, день, час, минуту). Потом можно (но не обязательно) указать год в виде двухразрядного числа ('''YY'''), который может предваряться или не предваряться двухразрядным числом века ('''CC'''). В конце можно (но не обязательно) указать секунды, предварив их точкой ('''.ss''').&lt;br /&gt;
&lt;br /&gt;
===Большая Перезапись===&lt;br /&gt;
&lt;br /&gt;
Большинство утилит командной строки в современных дистрибутивах Linux были переписаны Фондом свободного ПО (людьми из GNU). Во время этой Большой Перезаписи у команд появилось множество новых опций. Ребята из GNU также предложили «длинные» опции, состоящие из двух дефисов, за которыми следует слово. Например, у команды ''ls'' есть опция '''--directory''', эквивалентная обычной односимвольной опции '''-d'''. Однако у многих «длинных» опций нет однобуквенного эквивалента: например, '''--color''' и '''--group-directories-first''' команды ''ls''. Появление таких ключей стало неизбежным, потому что число параметров росло, и однобуквенных многим командам стало не хватать.&lt;br /&gt;
&lt;br /&gt;
''Man''-страницы GNU также сделали популярной идею указывать в разделе '''SYNOPSYS''' не полный синтаксис команды, а только ее кратчайшее описание. Например, '''SYNOPSYS''' для команды ''ls'' выглядит так:&lt;br /&gt;
&lt;br /&gt;
 SYNOPSYS&lt;br /&gt;
   ls [OPTION] … [FILE] …&lt;br /&gt;
&lt;br /&gt;
Все опции описываются далее в разделе '''DESCRIPTION''' (описание). Конечно, такие ''man''-страницы были и до Linux, но скорее как исключение, чем правило. Ныне так выглядит большинство страниц. &lt;br /&gt;
&lt;br /&gt;
===Где живут man-страницы?===&lt;br /&gt;
&lt;br /&gt;
Сначала ''man''-страницы хранились в каталогах '''/usr/man/manx''' (где '''x''' – номер раздела), и больше нигде. Потом была добавлена переменная окружения '''MANPATH''', которая могла содержать списки каталогов для поиска. Это упрощало работу с набором локальных ''man''-страниц отдельно от системных. Сейчас для указания списка каталогов и «отображений '''manpath'''», которые связывают каталоги из переменной окружения '''PATH''' с каталогами, в которых должны находиться соответствующие страницы ''man'', применяется файл '''/etc/manpath.config'''. В нем также определяется порядок,&lt;br /&gt;
в котором будет производиться поиск в разделах ''man''-страниц.&lt;br /&gt;
&lt;br /&gt;
Команда ''manpath'' показывает каталоги, где будет осуществляться поиск: &lt;br /&gt;
&lt;br /&gt;
 $manpath&lt;br /&gt;
 /home/chris/man:/usr/local/man:/usr/local/share/man:/usr/share/man&lt;br /&gt;
&lt;br /&gt;
''Man''-страницы в Linux также хранятся в сжатом виде: например, ''man''-страница для ''grep'' находится в файле '''grep.1.gz''' (где 1 – номер&lt;br /&gt;
раздела).&lt;br /&gt;
&lt;br /&gt;
===Развернем свои собственные===&lt;br /&gt;
&lt;br /&gt;
Сначала ''man''-страницы писали на древнем языке разметки. Как ни странно, пишут до сих пор! Изначально этот язык обрабатывался одной из двух программ&lt;br /&gt;
«выпуска» [runoff]: ''nroff'' генерировала вывод на экран терминала или простого символьного печатающего устройства, а ''troff'' – для популярного в те дни фотонаборного устройства. Эти команды были одним из первых примеров генерации разного вывода на основе одного и того же языка разметки и ранними предшественниками разметки на основе XML и преобразований XSL. Язык разметки остался, а для форматирования теперь используется команда ''groff'' (замена&lt;br /&gt;
GNU для ''nroff'' и ''troff'').&lt;br /&gt;
&lt;br /&gt;
Язык разметки используется не в «сыром» виде, а через набор макропакетов. ''Мan''-страницы форматируются макропакетом «man». Остальные макропакеты используются для других задач. Я генерировал свои исследовательские отчеты в университете, подредактировав макрос ‘''mm''’, и даже целые книги (включая&lt;br /&gt;
классическую The C Programming Language) были написаны именно таким образом. &lt;br /&gt;
&lt;br /&gt;
Давайте напишем ''man''-страницу для воображаемой (и довольно глупой) программы, которая перерабатывает ненужные биты. Она считывает один или несколько&lt;br /&gt;
указанных файлов и создает два выходных: в одном из них содержатся все нули из входных данных, в другом – все единицы. Вот исходный код для ''man''-страницы, использующий макрос «man»:&lt;br /&gt;
&lt;br /&gt;
 .TH br 1 “” “” “User Commands”&lt;br /&gt;
 .SH NAME&lt;br /&gt;
 br \- bit recycler&lt;br /&gt;
 .SH SYNOPSIS&lt;br /&gt;
 .B br&lt;br /&gt;
 [ \-a | --append ] [ \-d | --delete-original ] [ -f \flbasename\fR ]&lt;br /&gt;
 [\flFILE\fR...]&lt;br /&gt;
 .SH DESCRIPTION&lt;br /&gt;
 .B br&lt;br /&gt;
 assists in the recycling of digital content by separating the&lt;br /&gt;
 ones and zeros in the named \flFILE\fR(s) (or standard input if&lt;br /&gt;
 none) into two separate files.&lt;br /&gt;
 .SH OPTIONS&lt;br /&gt;
 .TP&lt;br /&gt;
 .B -a, --append&lt;br /&gt;
 Append to the end of the output files, rather than starting&lt;br /&gt;
 new ones&lt;br /&gt;
 .TP&lt;br /&gt;
 .B -d, --delete-original&lt;br /&gt;
 Delete the input files after the bits have been recycled&lt;br /&gt;
 .TP&lt;br /&gt;
 .B -f&lt;br /&gt;
 Use&lt;br /&gt;
 .I basename&lt;br /&gt;
 as the base name of the output files. The extensions.ones&lt;br /&gt;
 and.zeros will be appended to form the output file names.&lt;br /&gt;
 If none is specified, a basename of \*(lrecycled\*(rq is&lt;br /&gt;
 assumed&lt;br /&gt;
 .SH BUGS&lt;br /&gt;
 .B br&lt;br /&gt;
 does not recycle the bits of its own code segment when&lt;br /&gt;
 done, which is wasteful&lt;br /&gt;
&lt;br /&gt;
Этот пример не охватывает все возможности макроса форматирования, но демонстрирует основы использования заголовков и изменение шрифта. Чтобы узнать&lt;br /&gt;
все, прочтите ''man''-страницу ''groff_man''.&lt;br /&gt;
&lt;br /&gt;
===Набегание опционности===&lt;br /&gt;
&lt;br /&gt;
Я подсчитал число опций, описанных на ''man''-страницах 16 распространенных команд, и сравнил его в трех дистрибутивах Unix Linux.&lt;br /&gt;
В первом столбце ниже показаны результаты из руководства для шестой редакции Unix (около 1975 года). Второй столбец – из Руководства пользователя&lt;br /&gt;
для System V Release 4, датированного 1990 годом, а третий – из Ubuntu 9.04 2009 года. Частично я руководствовался собственным мнением насчет того,&lt;br /&gt;
что считать отдельной опцией, поэтому числа могут слегка плавать, но, думается, общее направление понятно!&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable border=1 cellpadding=5||-&lt;br /&gt;
! Команда&lt;br /&gt;
! 1975&lt;br /&gt;
! 1990&lt;br /&gt;
! 2009&lt;br /&gt;
|-&lt;br /&gt;
| сat &lt;br /&gt;
|0 &lt;br /&gt;
|5 &lt;br /&gt;
|12 &lt;br /&gt;
|-&lt;br /&gt;
| cc &lt;br /&gt;
| 6 &lt;br /&gt;
| 30 &lt;br /&gt;
| &amp;gt;500 &lt;br /&gt;
|-&lt;br /&gt;
| cmd &lt;br /&gt;
|2 &lt;br /&gt;
|2 &lt;br /&gt;
|7 &lt;br /&gt;
|-&lt;br /&gt;
| cp &lt;br /&gt;
|0 &lt;br /&gt;
|3 &lt;br /&gt;
|28 &lt;br /&gt;
|-&lt;br /&gt;
| date &lt;br /&gt;
|1 &lt;br /&gt;
|2 &lt;br /&gt;
|9 &lt;br /&gt;
|-&lt;br /&gt;
| diff &lt;br /&gt;
|1 &lt;br /&gt;
|15 &lt;br /&gt;
|27 &lt;br /&gt;
|-&lt;br /&gt;
| find &lt;br /&gt;
|15 &lt;br /&gt;
|23 &lt;br /&gt;
|80 &lt;br /&gt;
|-&lt;br /&gt;
| grep &lt;br /&gt;
|4 &lt;br /&gt;
|8 &lt;br /&gt;
|46 &lt;br /&gt;
|-&lt;br /&gt;
| ln &lt;br /&gt;
|0 &lt;br /&gt;
|3 &lt;br /&gt;
|13 &lt;br /&gt;
|-&lt;br /&gt;
| ls &lt;br /&gt;
|10 &lt;br /&gt;
|23 &lt;br /&gt;
|58 &lt;br /&gt;
|-&lt;br /&gt;
| mkdir &lt;br /&gt;
|0 &lt;br /&gt;
|2 &lt;br /&gt;
|6 &lt;br /&gt;
|-&lt;br /&gt;
| mv &lt;br /&gt;
|0 &lt;br /&gt;
|2 &lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
| ps &lt;br /&gt;
|4 &lt;br /&gt;
|12 &lt;br /&gt;
|84 &lt;br /&gt;
|-&lt;br /&gt;
| rm &lt;br /&gt;
|2 &lt;br /&gt;
|3 &lt;br /&gt;
|11 &lt;br /&gt;
|-&lt;br /&gt;
| sort &lt;br /&gt;
|6 &lt;br /&gt;
|14 &lt;br /&gt;
|23 &lt;br /&gt;
|-&lt;br /&gt;
| wc &lt;br /&gt;
|0 &lt;br /&gt;
|3 &lt;br /&gt;
|8&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>