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