трюки и советы по поиску информации на страницах руководства

<p>у кого-нибудь есть хитрости и советы по поиску информации на страницах руководства?</p>

<p>обратите внимание на номер раздела: предположим, вам нужна помощь по <code>printf</code>. их как минимум два: в shell и в c. bash-версия printf находится в разделе 1, версия c - в разделе 3 или 3c. если вы не знаете, какой из них вам нужен, введите <code>man -a printf</code>, и все справочные страницы будут отображены.</p><p>если вам нужен формат printf со всеми кодами%, и он не отображается на справочной странице printf, вы можете перейти к соответствующим справочным страницам, перечисленным в разделе "смотри также". вы можете найти что-то вроде <code>formats(5)</code>, которая предлагает вам набрать <code>man 5 formats</code>.</p><p>если вас раздражает, что <code>man printf</code> дает вам printf (1) и все, что вам нужно, это printf (3), вам нужно изменить порядок сканированных каталогов в переменной среды <code>manpath</code> и поместить их для языка си, прежде чем для команд shell. это может также произойти, если страницы руководства fortran или tcl/tk перечислены перед буквой c.</p><p>если вы не знаете, с чего начать, введите <code>man intro</code> или <code>man -s <section> intro</code>. это дает вам сводку команд запрошенного раздела.</p><p>разделы хорошо определены:</p><ul> <li>1 для команд оболочки,</li> <li>2 для системных вызовов,</li> <li>3 для программирования интерфейсов (иногда 3c для c, 3f для fortran ...)</li> <li>5 для форматов файлов и других правил, таких как форматы printf или regex.</li> </ul><p>и последнее, но не менее важное: информация, предоставляемая на страницах руководства, не является избыточной, поэтому внимательно читайте от начала до конца, чтобы увеличить свои шансы найти то, что вам нужно.</p>

<p>введите косую черту <code>/</code>, а затем введите строку для поиска. затем продолжайте нажимать <code>n</code>, чтобы перейти к следующему элементу</p>

<blockquote> <p>man -k <em>поиск</em></p> </blockquote><p>это даст вам список всех справочных страниц, которые относятся к "поиску".</p>

<p>как говорит @steven d, не забывайте страницы <code>info</code>.</p><p>кроме того, не пугайтесь страниц <code>info</code>. я знаю много людей, которые не используют информационные страницы из-за встроенной навигационной системы. мое любимое решение - передать информационные страницы через <code>less</code>:</p><pre><code>info gpg |less </code></pre><p>таким образом, я могу перемещаться по страницам <code>info</code>, используя мой любимый пейджер. страницы <code>info</code> теперь будут вести себя так же, как страницы <code>man</code>.</p>

<p>утилита <a href="http://unixhelp.ed.ac.uk/cgi/man-cgi?apropos"><code>apropos</code></a> очень удобна для поиска подходящей man-страницы.</p>

<p>пейджером по умолчанию для чтения справочной страницы является <code>less</code>. есть документация по <code>less</code> <a href="http://unixhelp.ed.ac.uk/cgi/man-cgi?less">здесь</a> .</p><p>в частности:</p><ul> <li>прокрутить вверх/вниз на одну страницу: <kbd>b</kbd> / <kbd>space</kbd></li> <li>прокрутите вверх/вниз на половину страницы: <kbd>u</kbd> / <kbd>d</kbd></li> <li>поиск вперед/назад: <kbd>/</kbd> / <kbd>?</kbd>, затем введите регулярное выражение, <ul> <li>затем нажмите <kbd>n</kbd> перейти к следующему матчу или</li> <li><kbd>shift</kbd>+ <kbd>n</kbd> перейти к предыдущему матчу.</li> <li>если страница покрыта неинтересными совпадениями, нажмите <kbd>space</kbd> перейти на следующую страницу.</li> </ul> </li> <li>добавить <kbd>@</kbd> перед регулярным выражением для поиска с самого начала.</li> </ul>

<p>всегда проверяйте, что находится в разделе смотри также. команды, показанные в этом разделе на странице <code>info</code>, можно выбрать, поместив курсор на нужную команду и нажав клавишу ввода. часто я нахожу другие полезные команды или функции таким образом.</p>

<p>если вам удобнее работать с вашим редактором, чем с пейджером по умолчанию, вы можете установить <code>manpager</code> в своей среде. например, у меня есть эта строка в моем <code>~/.bashrc</code>:</p><pre><code>export manpager="col -b | vim -c 'set ft=man nomod nolist ignorecase' -" </code></pre>

<p>я полагаю, использование <a href="http://www.jedsoft.org/most/">большинство</a> пейджер это хорошая идея. этот пейджер очень мощный, но главная особенность для меня - отображение цветных man-страниц. эта функция улучшает восприятие простого текста и облегчает поиск необходимой информации.</p><p>посмотрите на прикрепленный скриншот, текст выглядит очень хорошо, не так ли?</p><p><img src="https://i.stack.imgur.com/eawts.jpg" alt="most pager"></p>

<p>в linux <code>man</code> вы можете сделать <code>man -k string</code> (обратите внимание на верхний регистр k), чтобы выполнить поиск грубой силы по данному термину</p><pre><code> -k, --global-apropos search for text in all manual pages. this is a brute-force search, and is likely to take some time; if you can, you should specify a section to reduce the number of pages that need to be searched. search terms may be simple strings (the default), or regular expressions if the --regex option is used. </code></pre><p>очень полезно, когда вы не знаете, где искать.</p>

<p>не игнорируйте страницы <code>info</code>. многие gnu инструменты имеют гораздо более обширные информационные страницы, чем справочные страницы. часто в разделе <strong>см. также</strong> будет сказано: "полная документация для foo поддерживается как руководство texinfo. "это особенно верно для всего, что есть в пакете gnu coreutils).</p><p>кроме того, если вы являетесь пользователем emacs, не забывайте, что вы можете читать информацию и справочные страницы, не покидая своего редактора: <code>m-x info</code> а также <code>m-x woman</code>.</p>

<p>для тех более длинных и сложных man-страниц мне намного легче читать их с компьютера (странно, я знаю), и поэтому у меня есть эти функции в моем <code>.bashrc</code></p><pre><code># print man pages manp() { man -t "$@" | lpr -pprinter; } # create pdf of man page - requires ghostscript and mimeinfo manpdf() { man -t "$@" | ps2pdf - /tmp/manpdf\_$1.pdf &&  xdg-open /tmp/manpdf_$1.pdf ;} </code></pre>

<p>от кристофа ответ, если вы (то есть) напечатаете <code>man -k chmod</code> вы получите список возможностей. обратите внимание на число в скобках, это означает раздел, который нужно искать на страницах справочника:</p><p>в unix вы можете попробовать:</p><p><code>man -s1 chmod</code> он покажет страницу руководства для команды chmod</p><p><code>man -s2 chmod</code> он покажет страницу руководства для функции c lib chmod ()</p><p>в linux вы должны изменить <code>-s</code> за <code>-s</code></p>

<p>аналогично, но немного отличается от ответа роба хольца,</p><p>добавьте следующее в ваш <code>~/.vimrc</code>:</p><pre><code>let $groff_no_sgr=1 runtime ftplugin/man.vim теперь vimman отличный просмотрщик man-страниц, и <strong>:man</strong> изнутри vim (или просто нажимая <strong>k</strong> по ключевому слову) - отличный браузер man-страниц.

просмотр справочных страниц в удобном графическом приложении:konqueror man:(command) для оглавления верхнего уровня:konqueror man: особенности: если вы введете команду, у которой есть совпадение в нескольких разделах, вы попадете на страницу устранения неоднозначности это графическое приложение, поэтому вам не нужно запоминать загадочные последовательности клавиш для навигации по странице. включает гиперссылки на связанные страницы (в том числе "смотрите также") вы можете открыть связанные страницы в отдельных вкладках 

даюм, люди! что с запутанными ответами ?! что случилось с простотой, являющейся ключом к блеску, а что нет? большинство ваших клавиш vi/vim будут работать плавно:/ или ? - поиск вперед или назад (как уже упоминали некоторые ребята). в первом случае строчная буква n будет прокручивать матчи вперед, заглавная буква n - назад. для последнего верно обратное - знак вопроса.чуть более сложные поиски через регулярные выражения. разница между man (или less) и vim) заключается в том, что вы должны использовать символ escape () для объявления метасимволов в выражении при использовании последнего хорошей новостью является то, что когда вы используете первый (man или less) - не так уж много. таким образом, вы можете легко использовать это при поиске, например, iptables man-страница для нескольких терминов, например: /(iptables|rules). если вы не знакомы с регулярными выражениями, это означает "поиск примеров слов iptables or"). = rules ". после ввода и продолжения нажатия n вы будете прокручивать чередующиеся результаты поиска, причем результаты будут приятно выделены для вас разными цветами (на самом деле два. ха-ха). если вы пытаясь пролистать страницу и сконцентрироваться на конкретных терминах или понятиях - вы не пропустите ничего!и, конечно же, для более быстрой навигации ваши обычные vi резервные копии все еще остаются (без каламбура): gg или g - начало/конец документа; (исправление! в man вы можете использовать все перечисленные ниже клавиши, не используя ctrl. это только для vi). ctrl + u or d - прокрутка вверх или вниз; ctrl + b or f - то же самое, только большими прыжками. "страница назад или вперед"; e или y - прокрутка одной строкой, но я думаю, что большинство людей предпочитают просто использовать клавиши со стрелками. однако, если вы хотите остаться "1337" и "никогда не покидать домашний скандал" (как я делаю, смеется) - это путь.я пытаюсь сказать, что в unix есть два основных варианта программ управления клавиатурой, которые являются частью библиотеки readline: vi и emacs. подберите свои отбивные в одном (но, предпочтительно, в обоих), и это сделает вашу жизнь намного менее сложной. большинство программ cli в unix используют любую из них. bash по умолчанию использует элементы управления emacs, но его можно легко установить в "режим vi", набрав set -o vi. то же самое можно сказать и о регулярных выражениях, но это будет не по теме. я бы даже сказал, что оба они являются "языком общения" unix.

чтобы эффективно искать односимвольный переключатель, например -u, вы часто можете использовать:/^ -u($|\s) </code></pre><p>экономит много времени, если многие опции имеют префикс -u.</p>

<p>большинство из нас устанавливают переменную path. это покажет вам, как автоматически сделать так, чтобы путь поиска человека соответствовал вашему пути поиска path.</p><p>допустим, вы добавляете свой путь, чтобы включить ваши личные, специфичные для работы и локально установленные утилиты, такие как <code>export path=$path:~/bin:/workgroup/bin:/opt/local/bin:. в качестве побочного эффекта man foo не будет отображать man-страницы, хранящиеся в ~/man,/workgroup/man или/opt/local/man.чтобы решить эту проблему, я использую команду manpath для автоматической установки пути поиска на странице man. например, мой ~/.bashrc имеет следующее. это работает для меня на сотне разных систем, работающих под управлением freebsd 4.x, darwin и centos 5:### path & manpath # my personal utilities export path=$path:$home/bin ### set the manpath based on the path, after man(1) parses man.conf # - no need to modify man.conf or manually modify manpath_map # - works on linux, freebsd & darwin, unlike /etc/manpaths.d/ # see "search path for manual pages" in man(1) # just set the man search path. don't print output to screeen. manpath >/dev/null некоторые системы (например, apple leopard) устанавливают manpath автоматически, но это означает, что ваша система будет использовать переменную manpath вместо использования manpath. в результате страницы man для ' macports (/ opt/local/man) игнорируются. я хочу контролировать это сам, поэтому я сбросил manpath:unset manpath manpath >/dev/null 

man -a printf просто по умолчанию man 1 на моей машине linux mint. whatis printf дает мне соответствующую информацию.

если вы ищете информацию о встроенном bash (например, time, disown, set или [[), вместо того, чтобы пробираться по подробной странице bash info или man bash, вы можете ввести help {builtin-keyword} и быстро получить основную информацию о синтаксисе.

я просто использую grep. если бы мне было интересно, что -s опция команды read сделала, я бы попробовал эти команды по порядку, пока не получу ответ:info read |grep -s man read |grep -s help read |grep -s в этом случае только команда info дала четкий ответ. <a href="https://unix.stackexchange.com/a/159817/16521">это отличный ответ дает подробную информацию о различных справочных системах.

если вас раздражает, что man printf дает вам printf (1) и все, что вам нужно, это printf (3), вы можете сказать man, что вы хотите printf из раздела 3, поместив этот раздел перед printf, например так: man 3 printf, без необходимости изменять порядок сканируемых каталогов в переменной среды manpath и ставить те для языка c перед тем для команд shell.

и для тех людей, которые любят читать страницы man и info на сенсорном экране, вы можете передать man/info в yad или zenity и использовать все gtk3 лакомства, такие как нативная прокрутка пальцев. также отлично работает с refular экраном и мышью:man cat |yad --text-info вы также можете использовать zenity или добавить такие опции, как:man cat |yad --text-info --height=500 --width=800 --center --wrap --show-uri --no-markup & подсказка: by show uri yoh может щелкать мышью/пальцем веб-ссылки на страницах руководства.

 <a href="https://i.stack.imgur.com/cyb58.jpg"><img src="https://i.stack.imgur.com/cyb58.jpg" alt="enter image description here"> если вам трудно читать справочные страницы из-за всего текста белого цвета, вы можете раскрасить их. большинство man-страниц открываются с помощью less. для less я использую следующие настройки цвета в .bashrc из <a href="https://wiki.archlinux.org/index.php/color_output_in_console#man">здесь :man() { less_termcap_md=$'\e[01;31m' \red less\_termcap\_me=$'e[0m'  less_termcap_se=$'\e[0m' \ less\_termcap\_so=$'e[01;44;33m' yellow on blue less_termcap_ue=$'\e[0m' \ less\_termcap\_us=$'e[01;32m' green command man "$@" } </code></pre><p>это для bash и zsh. для <code>most</code>, <code>fish</code>, <code>xterm</code> и <code>rxvt</code> см. ссылку выше.</p><p>для дальнейшего чтения:</p><ul> <li> <p> <a href="https://unix.stackexchange.com/questions/119/colors-in-man-pages">цвета на страницах руководства</a> </p> </li> <li> <p> <a href="https://unix.stackexchange.com/questions/108699/documentation-on-less-termcap-variables">документация по переменным less\_termcap\_ *?</a> </p> </li> <li> <p>termcap manual- <a href="https://www.gnu.org/software/termutils/manual/termcap-1.3/html\_mono/termcap.html">https://www.gnu.org/software/termutils/manual/termcap-1.3/html\_mono/termcap.html</a> </p> </li> <li> <p>для цветовых кодов <a href="https://wiki.archlinux.org/index.php?title=bash/prompt\_customization&oldid=362976#list\_of\_colors\_for\_prompt\_and\_bash">https://wiki.archlinux.org/index.php?title=bash/prompt\_customization&oldid=362976#list\_of\_colors\_for\_prompt\_and\_bash</a> </p> </li> </ul>

<p>команда <a href="http://man-k.org/man/netbsd/1/apropos">apropos (1)</a> используется для поиска справочных страниц. однако большинство реализаций <a href="http://man-k.org/man/netbsd/1/apropos">apropos (1)</a> просто выполняют поиск в разделе name, что очень ограничивает.</p><p> <a href="http://netbsd.org">netbsd</a> имеет реализацию apropos (1) для полнотекстового поиска, которая способна выполнять поиск по всему содержимому справочных страниц. для этого также есть веб-интерфейс: <a href="http://man-k.org">man-k.org</a> , который вы можете попробовать.</p>