Условия привыкают, чтобы описать терминал и диск ввод-вывод, но означать разные вещи в каждом контексте.
Режимы без предварительной обработки и режимы с обработкой на обработке покрытия оконечного устройства (character-at-a-time по сравнению с line-at-a-time, существует также несколько других различий).
'Необработанное' дисковое устройство (/dev/rdsk/*
) устройство посимвольного ввода-вывода, и /dev/dsk/
блочное устройство. IIRC, который основное различие - то, что блочное устройство имеет буферизацию ядра и мелкомодульное управление режимами I/O теми, которые направляют/отображают ввод-вывод, может быть указан на сырых данных defice.
Описание сырых данных и приготовленных tty режимов может быть найдено здесь. Регистрация о сырых данных по сравнению с приготовленными дисковыми устройствами может быть найдена здесь.
Я проверил что groff
вызов выполняется, когда я вызываю man man
(который использует полную ширину):
$ strace -o log -f -v -s 1024 -e trace=process man man
Поиск groff
результаты вызова в следующем:
$ grep groff log | sed 's/\], \[.*//'
28721 execve("/usr/bin/groff", ["groff", "-mtty-char", "-Tutf8", "-mandoc",
"-rLL=171n", "-rLT=171n"
Теперь я изменяю размер своего xterm:
$ strace -o log2 -f -v -s 1024 -e trace=process man man
$ grep groff log2 | sed 's/\], \[.*//'
28852 execve("/usr/bin/groff", ["groff", "-mtty-char", "-Tutf8", "-mandoc",
"-rLL=119n", "-rLT=119n"
Таким образом я предполагаю что -rLL
и -rLT
аргументы влияют на то, чем используется терминальная ширина groff
во время компиляции.
Я верю актуальнейшим версиям man
будет DoTheRightThing™ при определении страницы справочника как аргумента, содержащего наклонную черту:
man ./stuff.1
groff
страница справочника и это ничего не упоминают о-rLL
или-rLT
. Я проверилtroff
на всякий случай, потому что я знаюgroff
вызовы это. Затем я просто попытался добавить флаги с119n
и это действительно работало, однако существует все еще некоторое пространство, и это, кажется, не "простирается" и не соответствует терминальному размеру, больше как статическая установка. – n0pe 10.08.2011, 17:53man
просто 'динамично' определяет текущую терминальную ширину и предоставляет его - т.е. в моем первом вызове мой терминал был 171 столбец шириной, и в 2-м вызове это было 119 столбцов шириной. – maxschlepzig 10.08.2011, 18:02groff -Tascii -man ./path > /man/file
? – n0pe 10.08.2011, 18:11gunzip -c /usr/share/man/man1/man.1.gz > man.1
,file man.1
man.1: troff or preprocessor input text
. Подразумевать, чтоgroff
команду называют непрерывнойman
управляйте каждый раз, когда это вызывается. Возможно, существуют системы, которые делают некоторое кэширование вывода troff (и, возможно, только поддерживайте вывод на 80 столбцов...). – maxschlepzig 10.08.2011, 21:21