» » » » UNIX — универсальная среда программирования - Керниган Брайан Уилсон

UNIX — универсальная среда программирования - Керниган Брайан Уилсон

Перейти на страницу:
Конец ознакомительного фрагментаКупить книгу

Ознакомительная версия. Доступно 29 страниц из 187

Упражнение 9.2

Как мы сформатировали эту главу?

Упражнение 9.3

Если вашим ограничителем для

eqn
является знак доллара, то как вы получите этот знак в выходном потоке? Подсказка: исследуйте кавычки и предопределенные слова
eqn
.

Упражнение 9.4

Почему команда

$ doctype <i>имена_файлов</i>

не выполняется? Модифицируйте

doctype
так, чтобы запускать команду, полученную в результате, вместо того, чтобы ее печатать.

Упражнение 9.5

Важны ли накладные расходы на добавочную команду

cat
в
doctype
? Перепишите
doctype
, чтобы избавиться от дополнительного процесса. Какая версия проще?

Упражнение 9.6

Что лучше: использовать

doctype
или писать файл
shell
, содержащий команды, для форматирования конкретного документа?

Упражнение 9.7

Поэкспериментируйте с различными комбинациями

grep
,
egrep
,
fgrep
,
sed
,
awk
и
sort
, чтобы повысить быстродействие doctype.

9.4 Справочник

Основной документацией для команды является обычно справочная страничка (называемая далее справочником) одностраничное описание в справочном руководстве по UNIX (см. рис. 9.2). Справочник хранится в стандартном каталоге, как правило, в

/usr/man
, в подкаталоге, нумерованном в соответствии с разделом руководства. Например, наш справочник для
hoc
хранится в
/usr/man/man1/hoc.1
.

Справочники печатаются с помощью команды

man(1)
, т.е. файла
shell
, который запускает
nroff -man
, поэтому
man hoc
печатает справочник
hoc
. Если одно и то же имя появляется в нескольких разделах, как само man (раздел 1 описывает команду, тогда как раздел 7 описывает макрокоманды), то раздел можно определить для
man
как

$ man 7 man

В результате печатается только описание макрокоманд пакета

man
. По умолчанию принято печатать все справочники с определенным именем, использующим
nroff
, но
man -t
порождает справочники для наборного устройства с помощью
troff
.

Автор справочника создает файл в соответствующем подкаталоге

/usr/man
. Чтобы печатать справочник, команда
man
вызывает
nroff
или
troff
с пакетом макроопределений; это можно увидеть, отыскав команду
man
для вызовов форматирующей программы. Мы получили бы такой результат:

$ grep roff `which man`

nroff $opt -man $all ;;

neqn $all | nroff $opt -man ;;

troff $opt -man $all ;;

troff -t $opt -man $all | tc ;;

eqn $all troff $opt -man ;;

eqn $all troff -t $opt -man | tc ;;

$

Разнообразие достигается применением флагов:

nroff
или
troff
, запускается или нет
eqn
и т.д. Справочник по макрокомандам, вызываемый
troff -man
, определяет команды
troff
, форматирующие в стиле данного руководства. В принципе они аналогичны макрокомандам
ms
, но есть и различия, особенно в установке названия и командах смены шрифта. Макрокоманды кратко документированы в
man(7)
, но основные из них легко запоминаются. Разметка справочника такова:

.TH COMMAND номер раздела

.SH NAME

команда - краткое описание функций

.В команда возможные аргументы

.SH DESCRIPTION

Подробное объяснение команд и флагов.

Абзацы вводятся .PP.

.PP

Это новый абзац.

.SH FILES

Файлы, используемые командой, например, passwd(1)

упоминает /etc/passwd

.SH &quot;SEE ALSO.&quot;

Ссылки к связанным документам, включая другие справочники

.SH DIAGNOSTICS

Описание некоторого необычного выходного потока

(например, см. cmp(1))

.SH BUGS

Неожиданные черты (не всегда ошибки; см. ниже)

Если какой-то раздел пуст, его заголовок опускается. Строка.

.TH
и разделы
NAME
,
SYNOPSIS
,
DESCRIPTION
не обязательны. Строка

.TH COMMAND номер раздела

называет команду и определяет номер раздела. Различные строки

.SH
идентифицируют разделы справочника. Разделы
NAME
и
SYNOPSIS
являются специальными; остальные содержат обычный текст. Раздел
NAME
называет команду (на этот раз строчными буквами) и дает ее описание в одной строке, а раздел
SYNOPSIS
называет флаги, но не описывает их. Как и в любом разделе, входной текст имеет произвольную форму, поэтому смену шрифта можно определять с помощью макрокоманд
.B
,
.I
,
.R
. В разделе
SYNOPSIS
и имя, и флаги выделены жирным шрифтом; прочая информация печатается обычным шрифтом. Разделы
ed(1)
NAME
и
SYNOPSIS
, например, имеют вид и выводятся как

Ознакомительная версия. Доступно 29 страниц из 187

Перейти на страницу:
Комментариев (0)