UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
И, наконец, поскольку
eqn
@[email protected]
eqn
from
to
Как только ваш документ готов, вы должны соединить все препроцессоры и
troff
tbl
eqn
troff
troff
$ troff -ms <i>имена_файлов</i>
-mm
Иначе вам придется задать аргумент
<i>имена_файлов</i>
$ eqn <i>имена_файлов</i> | troff -ms
или
$ tbl <i>имена_файлов</i> | eqn | troff -ms
Неудобно следить за тем из препроцессоров, который действительно должен печатать какой-то отдельный документ. Мы сочли уместным написать программу
doctype
$ doctype ch9.*
cat ch9.1 ch9.2 ch9.3 ch9.4 | pic | tbl | eqn | troff -ms
$ doctype hoc.ms
cat hoc.ms | tbl | eqn | troff -ms
$
Программа
doctype
awk
.PP
ms
$ cat doctype
# doctype: synthesize proper command line for troff
echo -n "cat $* | "
egrep -h (EQ|TS|[|PS|IS|PP)' $* |
sort -u |
awk '
/^.PP/ { ms++ }
/^.EQ/ { eqn++ }
/^.TS/ { tbl++ }
/^.PS/ { pic++ }
/^.IS/ { ideal++ }
/^.[/ { refer++ }
END {
if (refer > 0) printf "refer | "
if (pic > 0) printf "pic | "
if (ideal > 0) printf "ideal | "
if (tbl > 0) printf "tbl | "
if (eqn > 0) printf "eqn | "
printf "troff "
if (ms > 0) printf "-ms"
printf "n"
} '
$
(Флаг
-h
troff
Программа
doctype
bundle
shell
Когда дело дойдет до запуска реальных команд
troff
Между прочим, в новой версии этой программы не предусмотрена программа
egrep
sort
awk
egrep
sort -u
awk
В качестве иллюстрации сравним
doctype
awk
$ time awk '... doctype without egrep ...' ch9.*
cat ch9.1 ch9.2 ch9.3 ch9.4 | pic | tbl | eqn | troff -ms
real 31.0
user 8.9
sys 2.8
$ time doctype ch9*
cat ch9.1 ch9.2 ch9.3 ch9.4 | pic | tbl | eqn | troff -ms
real 7.0
user 1.0
sys 2.3
$
Сравнение, очевидно, в пользу версии с тремя процессами. (Работа была выполнена в однопользовательском режиме; соотношение значений времени показало бы даже более значительное преимущество версии
egrep