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

80

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

Casebash
источник
1
man --help/ man -hи его более полный брат man manимеет советы по поиску и навигации.
Антон Тарасенко

Ответы:

51

Обратите внимание на номер раздела: Предположим, вам нужна помощь printf. их как минимум два: в оболочке и на языке C. Версия bash для printf находится в разделе 1, версия на C - в разделе 3 или 3C. Если вы не знаете, какой из них вы хотите, введите man -a printfи все справочные страницы будут отображаться.

Если вам нужен формат printf со всеми кодами%, и он не отображается на справочной странице printf, вы можете перейти к соответствующим справочным страницам, перечисленным в разделе «СМОТРИ ТАКЖЕ». Вы можете найти что-то вроде formats(5), что предлагает вам напечатать man 5 formats.

Если вас раздражает то, что man printfвы получаете printf (1), и все, что вам нужно, это printf (3), вы должны изменить порядок сканированных каталогов в MANPATHпеременной среды и поставить для языка C перед каталогами для команд оболочки. Это может также произойти, если страницы руководства Fortran или TCL / Tk перечислены перед буквой C.

Если вы не знаете, с чего начать, введите man introили man -s <section> intro. Это дает вам сводку команд запрошенного раздела.

Разделы хорошо определены:

  • 1 для команд оболочки,
  • 2 для системных вызовов,
  • 3 для программирования интерфейсов (иногда 3C для C, 3F для Fortran ...)
  • 5 для форматов файлов и других правил, таких как форматы printf или regex.

И последнее, но не менее важное: информация, предоставляемая на страницах руководства, не является избыточной, поэтому внимательно читайте от начала до конца, чтобы увеличить свои шансы найти то, что вам нужно.

оборота мувичиэль
источник
11
В большинстве систем вы можете man manпосмотреть полное описание различных разделов.
Стивен Д.
1
Было бы здорово, если бы была программа для поиска страниц по «ключевым словам». Т.е. я недавно не мог вспомнить имя функции c, чтобы найти подстроку (the strstr()) , и у меня не было интернета вокруг меня.
Привет, Ангел,
3
@ Привет, Ангел, man -k substringили apropos substringпомог бы тебе.
Кусалананда
58

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

Александр Погребняк
источник
37

man -k search

Это даст вам список всех справочных страниц, которые относятся к «поиску».

Кристоф Провост
источник
2
И чтобы перечислить все справочные страницы, относящиеся к «поиску» в определенном разделе (например, номер 3), можно использовать это: man -k search -s 3 Также упомянуто в superuser.com/a/677969/599957
kenichi
Я знаю, что такие комментарии не одобряются, но спасибо, спасибо, спасибо! Я буквально искал такую ​​команду дольше, чем хотел бы признать ... лет !!
MikeyE
19

Как говорит @Steven D, не забывайте о infoстраницах.

Кроме того, не пугайтесь infoстраниц. Я знаю много людей, которые не используют информационные страницы из-за встроенной навигационной системы. Мое любимое решение - передать информационные страницы через less:

info gpg |less

Таким образом, я могу перемещаться по infoстраницам, используя мой любимый пейджер. На infoстраницах теперь будут вести себя так же , как manстраницы.

оборота Стефан Ласевский
источник
1
эй, это отличный совет о навигации
Гленн Джекман
18

aproposУтилита серьезно удобна для нахождения соответствующей справочной страницы.

Хэнк Гей
источник
1
man -k== aproposне так ли?
phunehehe
1
aproposэто то, что я использую все время, когда ищу что-то, что не имеет справочной страницы для себя.
Полемон
1
«человек-человек» говорит, что «человек-к» эквивалентен «уместно-р». Я думаю, что по поводу немного более мощным. Я обычно использую man -k, так как он немного короче.
Кристоф Провост
16

Пейджер по умолчанию для чтения справочной страницы less. Существует документация на less здесь .

В частности:

  • Прокрутить вверх / вниз на одну страницу: b/ space
  • Прокрутите вверх / вниз на половину страницы: u/ d
  • Поиск вперед / назад: // ?, затем введите регулярное выражение,
    • затем нажмите, n чтобы перейти к следующему матчу или
    • shift+ Nперейти к предыдущему матчу.
    • Если страница покрыта неинтересными совпадениями, нажмите, spaceчтобы перейти на следующую страницу.
  • Добавьте @перед регулярным выражением поиск с самого начала.
Casebash
источник
Это лучший ответ. Дополнительные очки за использование символов kbd. ;)
Тирамису
Прокрутить вверх / вниз на одну страницу также можно с помощью ctrl+space/ f, что может быть полезно в зависимости от того, какие пальцы вы предпочитаете использовать для навигации.
Джоелостблом
8

Всегда проверяйте, что находится в разделе СМОТРИ ТАКЖЕ. Команды, показанные в этом разделе на infoстранице, можно выбрать, установив курсор на нужную команду и нажав клавишу ввода. Часто я нахожу другие полезные команды или функции таким образом.

Neth
источник
7

Если вам удобнее работать с вашим редактором, чем с пейджером по умолчанию, вы можете установить его MANPAGERв своей среде. Например, у меня есть эта строка в моем ~/.bashrc:

export MANPAGER="col -b | vim -c 'set ft=man nomod nolist ignorecase' -"
Rob Hoelz
источник
4

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

Посмотрите на прикрепленный скриншот, текст выглядит очень хорошо, не так ли?

самый пейджер

др.
источник
2
Вы пропустили самую важную информацию: как я могу использовать ее mostдля просмотра справочных страниц.
user1968963
2
@ACK_stoverflow - вероятно, не очень хорошая идея рекомендовать этого парня, так > ~/.bashrcкак он перезапишет то, что уже есть. Лучше добавить ( >>) или добавить известь вручную, на мой взгляд.
Вацуг
@vatsug Wow хороший вызов, вот что мой комментарий должен был сказать: Установите его и попробовать его: aptitude install most; export MANPAGER="most"; man man. Чтобы сделать его постоянным:echo 'export MANPAGER="most"' >> ~/.bashrc
ACK_stoverflow
4

В Linux manвы можете сделать man -K string(обратите внимание на верхний регистр K), чтобы выполнить поиск методом грубой силы по данному термину

   -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.

очень полезно, когда вы не знаете, где искать.

enzotib
источник
3

Не игнорируйте infoстраницы. Многие инструменты GNU имеют гораздо более обширные информационные страницы, чем справочные страницы. Часто в разделе СМОТРИ ТАКЖЕ говорится: «Полная документация для foo поддерживается в виде руководства в формате Texinfo». Это особенно верно для всего, что есть в пакете GNU coreutils.

Кроме того, если вы являетесь пользователем emacs, не забывайте, что вы можете читать информацию и справочные страницы, не покидая своего редактора: M-x infoи M-x woman.

Стивен Д
источник
3

Для более длинных и сложных man-страниц мне гораздо проще читать их с компьютера (странно, я знаю), и поэтому у меня есть эти функции в моем .bashrc

# 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 ;}
jasonwryan
источник
2

От ответа Кристофа, если вы (то есть) напечатаете, man -k chmodвы получите список возможностей. Обратите внимание на число в скобках, это означает раздел, который нужно искать на страницах справочника:

В UNIX вы можете попробовать:

man -s1 chmod он покажет страницу руководства для команды chmod

man -s2 chmod он покажет страницу руководства для функции C lib chmod ()

В Linux вы должны поменять -sна-S

jyz
источник
man 1 chmod man 2 chmod делает то же самое.
эллиптический вид
2

Просмотр справочных страниц в удобном графическом приложении:

konqueror man:(command)

Для оглавления верхнего уровня:

konqueror man:

Функции:

  • Если вы введете команду, у которой есть совпадение в нескольких разделах, вы попадете на страницу устранения неоднозначности
  • Это графическое приложение, поэтому вам не нужно запоминать загадочные последовательности клавиш для навигации по странице.
  • Включает гиперссылки на связанные страницы (в том числе «смотрите также»)
  • Вы можете открыть связанные страницы в отдельных вкладках
нобар
источник
Кстати, это тоже работает с info:(command). Некоторые программы предоставляют намного больше информации через «info», чем через «man», и konqueror предоставляет гораздо более приятный интерфейс для просмотра этих информационных страниц. Примечание: просто использование info:, также работает для получения оглавления верхнего уровня.
Нобар
Подобный эффект может быть достигнут с помощью gmanпакета, который устанавливает веб-сервер manpage по адресу localhost / cgi-bin / man / man2html .
Нобар
Альтернативы на AskUbuntu: askubuntu.com/questions/253705/...
nobar
... yelpявляясь более легкой заменой konqueror- хотя у нее есть недостаток: она не содержит оглавления или страницы для устранения неоднозначности имен, используемых в нескольких разделах. Вы должны дифференцировать их явно, добавляя .(section)- например yelp man:open.2. Вы также можете использовать <kbd> Ctrl-L </ kbd>, чтобы открыть панель адреса.
Нобар
2

Дайум, люди! Что с запутанными ответами ?! Что случилось с простотой, являющейся ключом к блеску, а что нет? Большинство ваших клавиш vi / vim будут работать плавно:

/или ?- Поиск вперед или назад (как уже упоминали некоторые ребята). В первом случае строчная буква n будет прокручивать матчи вперед, заглавная буква N - назад. Для последнего верно обратное - знак вопроса.

Чуть более сложные поиски через регулярные выражения. Разница между man(или less) и VIM заключается в том, что вы должны использовать символ escape () для объявления метасимволов в вашем выражении при использовании последнего. Хорошей новостью является то, что когда вы используете первый ( manили less) - не так уж много. Таким образом , вы можете легко поместить это использовать при поиске, например, на iptablesстранице человека для нескольких терминов , как так: /(iptables|rules). Если вы не знакомы с регулярными выражениями, это означает «Поиск примеров слов iptablesИЛИ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.

Максимум
источник
2

Аналогично, но немного отличается от ответа Роба Хольца,

Добавьте следующее в ваш ~/.vimrc:

let $GROFF_NO_SGR=1
runtime ftplugin/man.vim

Теперь vimmanэто отличный просмотрщик man-страниц, а :Manизнутри Vim (или просто поиск Kпо ключевому слову) - отличный браузер man-страниц.

ephemient
источник
1

Большинство из нас устанавливают переменную PATH. Это покажет вам, как автоматически сделать так, чтобы путь поиска человека соответствовал вашему пути поиска PATH.

Скажем, вы добавляете свой путь, чтобы включить ваши личные, специфичные для работы и локально установленные утилиты, например export PATH=$PATH:~/bin:/workgroup/bin:/opt/local/bin:. Как побочный эффект, man fooне будут отображаться manpages, хранящиеся в ~ / man, / workgroup / man или / opt / local / man.

Чтобы решить эту проблему, я использую manpathкоманду, чтобы автоматически установить путь поиска страницы руководства. Например, мой ~ / .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. В результате страницы руководства для MacPorts (/ opt / local / man) игнорируются. Я хочу контролировать это сам, поэтому я отключил MANPATH:

unset MANPATH
manpath >/dev/null
оборота Стефан Ласевский
источник
1

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

LawrenceC
источник
1

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

Ли Ло
источник
1

Я просто использую grep. Если бы я задавался вопросом, что делает -sопция readкоманды, я бы попробовал эти команды по порядку, пока не получу ответ:

info read |grep \\-s

man read |grep \\-s

help read |grep \\-s

В этом случае только infoкоманда дала четкий ответ. Этот превосходный ответ дает подробную информацию о различных системах помощи.

Сис Тиммерман
источник
1

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

сту
источник
1

Например -u, для эффективного поиска односимвольного переключения вы часто можете использовать:

/^ *-u($|\s)

Экономит много времени, если многие опции имеют префикс -u.

матовый
источник
Также, это регулярное выражение было бы полезно: /-u($|[,\s]) в случае, если символ опции заключен в запятую. Но если вы хотите , чтобы увидеть все записи символа опции «и» (как -u]в [--udp|-u]в netstatруководстве) вам нужно что - то вроде этого: /-u($|[^a-z]) А если viи vimиспользуются в качестве пейджера: /-u\($\|[^a-z]\)
Kenichi
0

Команда apropos (1) используется для поиска man-страниц. Однако большинство реализаций apropos (1) просто выполняют поиск в разделе NAME, что очень ограничивает.

NetBSD имеет реализацию полнотекстового поиска apropos (1), которая способна выполнять поиск по всему содержимому справочных страниц. Для этого также есть веб-интерфейс: man-k.org , который вы можете попробовать.

Абхинав Упадхьяй
источник
0

введите описание изображения здесьЕсли вам трудно читать справочные страницы из-за всего текста белого цвета, вы можете раскрасить их. Большинство man-страниц открываются с помощью less. Для less, я использую следующие настройки цвета в .bashrcот здесь :

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 "$@"
}

Это для bash и zsh. Для most, fish, xtermи rxvtувидеть ссылку выше.

Для дальнейшего чтения:

викрамреддым
источник
0

А для тех, кто любит читать страницы 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 может щелкать мышью / пальцем веб-ссылки на страницах руководства.

Георгий Васильев
источник