страница 'человека' является слишком узкой (не использование в своих интересах терминального размера)

Условия привыкают, чтобы описать терминал и диск ввод-вывод, но означать разные вещи в каждом контексте.

Режимы без предварительной обработки и режимы с обработкой на обработке покрытия оконечного устройства (character-at-a-time по сравнению с line-at-a-time, существует также несколько других различий).

'Необработанное' дисковое устройство (/dev/rdsk/*) устройство посимвольного ввода-вывода, и /dev/dsk/ блочное устройство. IIRC, который основное различие - то, что блочное устройство имеет буферизацию ядра и мелкомодульное управление режимами I/O теми, которые направляют/отображают ввод-вывод, может быть указан на сырых данных defice.

Описание сырых данных и приготовленных tty режимов может быть найдено здесь. Регистрация о сырых данных по сравнению с приготовленными дисковыми устройствами может быть найдена здесь.

7
10.08.2011, 17:00
2 ответа

Я проверил что 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 во время компиляции.

9
27.01.2020, 20:17
  • 1
    Интересный, я просмотрел groffстраница справочника и это ничего не упоминают о -rLL или -rLT. Я проверил troff на всякий случай, потому что я знаю groff вызовы это. Затем я просто попытался добавить флаги с 119n и это действительно работало, однако существует все еще некоторое пространство, и это, кажется, не "простирается" и не соответствует терминальному размеру, больше как статическая установка. –  n0pe 10.08.2011, 17:53
  • 2
    Спасибо за выделение, что Вы сделали между прочим, очень интересный –  n0pe 10.08.2011, 17:53
  • 3
    @MaxMackie, да, это статично - man просто 'динамично' определяет текущую терминальную ширину и предоставляет его - т.е. в моем первом вызове мой терминал был 171 столбец шириной, и в 2-м вызове это было 119 столбцов шириной. –  maxschlepzig 10.08.2011, 18:02
  • 4
    Хорошо я думаю свое понимание того, что на самом деле делает groff испорчен затем. Мой "исходный" файл (простой текст с макросами) является файлом человека? Или groff создает новый файл для меня? Если бы я должен был создать страницу справочника и установить ее в моей системе, то groff мог бы помочь мне сделать это, или она только обрабатывает форматирование? Например, мог я groff -Tascii -man ./path > /man/file? –  n0pe 10.08.2011, 18:11
  • 5
    @MaxMackie, страницы справочника, установленные в моей системе, являются troff файлами разметки, например. gunzip -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

Я верю актуальнейшим версиям man будет DoTheRightThing™ при определении страницы справочника как аргумента, содержащего наклонную черту:

man ./stuff.1

1
27.01.2020, 20:17

Теги

Похожие вопросы