Преобразование информационных страниц в справочные страницы
Меня пригласили повторно опубликовать этот вопрос с меньшим количеством мнений, поэтому, если он кажется знакомым, вот почему.
Как я могу преобразовать информационные страницы в страницы руководства? Раньше у меня была оболочка с одним вкладышем, которая сводила весь информационный документ в одну плоскую страницу, подходящую для навигации с меньшими затратами, но, похоже, я ее потерял. Пожалуйста, поделитесь, если вы знаете, как это сделать.:)
Спасибо!
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