Преобразование информационных страниц в справочные страницы

Меня пригласили повторно опубликовать этот вопрос с меньшим количеством мнений, поэтому, если он кажется знакомым, вот почему.

Как я могу преобразовать информационные страницы в страницы руководства? Раньше у меня была оболочка с одним вкладышем, которая сводила весь информационный документ в одну плоскую страницу, подходящую для навигации с меньшими затратами, но, похоже, я ее потерял. Пожалуйста, поделитесь, если вы знаете, как это сделать.:)

Спасибо!

4 ответа

Решение

Это выведет info в виде простого текстового файла:

info --subnodes --output=info_file.txt info_file

Например:

info --subnodes --output=info.txt info
less info.txt

Сценарий выше не совсем работает. Для нормальных man-страниц он попадает в бесконечную рекурсию; не приятно в командной строке. Когда он вызывает команду "man", он должен убедиться, что он не вызывает сам себя - это проблема, если она находится в каталоге, который находится в вашем PATH.

Так как мой каталог ~/bin находится в моем PATH, я изменил конец списка case следующим образом:

*)
  /usr/bin/man $@
  ;;
esac

Я никогда не видел, чтобы настоящий мужчина был где-либо, кроме / usr / bin / man, так что это должно сработать.

Другие ответы здесь будут работать, но у меня есть гораздо более простая альтернатива:

info foo | less

Эта команда принимает вывод info и пропусти less, что сделает информационную страницу похожей на обычную man-страницу. Это не так точно, как другие альтернативы, но будет работать в большинстве случаев.

Выход:

stefanl@host:~ $ info vi | less

File: *manpages*,  Node: vim,  Up: (dir)

VIM(1)                                                                  VIM(1)

NAME
       vim - Vi IMproved, a programmers text editor

SYNOPSIS
       vim [options] [file ..]
       vim [options] -
       vim [options] -t tag
       vim [options] -q [errorfile]
...
...

Более точная, но более сложная версия:

info ls --subnodes -o - |less

Другие ответы здесь требуют, чтобы вы помнили тайные флаги или вносили изменения в свою среду в каждой поддерживаемой вами системе Linux, что не работает, если у вас есть аккаунты на сотнях систем. В какой-то момент вы окажетесь в системе, где нет вашей пользовательской среды, и info foo | less будет очень легко запомнить.

Я не хотел избавляться от привычки печатать "мужчина", поэтому я написал обертку, используя ответ Денниса Уильямсона.

Содержание ~/bin/man:

#!/bin/bash

case $1 in
info-*)
  page=$(echo $1 | sed -e s/info-//g)
  tmpfile="/tmp/info2man-$page.txt"
  info --subnodes --output=$tmpfile $page \
  && less $tmpfile \
  && rm -f $tmpfile
  ;;
*)
  man $@
  ;;
esac

Случай использования

man sed

# learn the sed man page isn't adequate

man info-sed
Другие вопросы по тегам