Назад | Перейти на главную страницу

Преобразование информационных страниц в страницы руководства

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

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

Спасибо!

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

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

Например:

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

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

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

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

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

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

info foo | less

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

Вывод:

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