it-swarm.cn

在手册页中查找信息的技巧和提示

有人在手册页中找到信息的技巧和窍门吗?

82
Casebash

请注意节号:假设您需要printf的帮助。它们至少有两个:在Shell和C中。printf的bash版本在第1节中,C版本在第3或3C节中。如果您不知道想要哪一个,请键入_man -a printf_,然后将显示所有手册页。

如果您要查找的是带有所有%代码的printf格式,并且该格式没有出现在printf手册页上,则可以跳至“另请参见”段落中列出的相关手册页。您可能会发现类似formats(5)的内容,建议您键入_man 5 formats_。

如果您因为_man printf_给您printf(1)而感到烦恼,而您只想要printf(3),则必须在MANPATH环境变量中更改扫描目录的顺序,然后将其放入Shell命令之前的C语言。当Fortran或TCL/Tk手册页在C页之前列出时,也可能发生这种情况。

如果您不知道从哪里开始,请键入_man intro_或_man -s <section> intro_。这为您提供了所请求部分的命令摘要。

各节定义明确:

  • 1是用于Shell命令,
  • 2是用于系统调用,
  • 3用于编程接口(有时3C用于C,3F用于Fortran ...)
  • 5用于文件格式和其他规则,例如printf或regex格式。

最后但并非最不重要的一点:手册页中提供的信息不是多余的,因此请从头到尾仔细阅读以增加找到所需内容的机会。

51
mouviciel

输入斜杠/,然后键入要搜索的字符串。然后继续按n转到下一项

58
Alexander Pogrebnyak

man -k 搜索

这将为您提供与“搜索”相关的所有手册页的列表。

37
Kristof Provost

正如@Steven D所说,请不要忘记info页。

此外,请勿被info页面吓倒。我知道很多人由于内置导航系统而不使用信息页面。我最喜欢的解决方案是通过less传递信息页面:

info gpg |less

这样,我可以使用自己喜欢的寻呼机浏览info页。 info页现在的行为与man页相同。

20
Stefan Lasiewski

apropos 实用程序非常容易找到合适的联机帮助页。

18
Hank Gay

读取手册页的默认寻呼机是less。有关less此处 的文档。

特别是:

  • 向上/向下滚动一页: b / space
  • 上下滚动半页: u / d
  • 向前/向后搜索: / / ?,然后输入正则表达式,
    • 然后打 n 去下一场比赛或
    • shiftN 去上一场比赛。
    • 如果页面上出现无趣的匹配项,请点击 space 转到下一页。
  • 添加一个 @ 从正则表达式开始搜索。
16
Casebash

务必查看“另请参阅”部分中的内容。通过将光标放在所需的命令上,然后按Enter键,可以选择info页中此部分下面显示的命令。我经常以这种方式找到其他有用的命令或功能。

8
Neth

如果与默认分页器相比,您对编辑器更满意,则可以在环境中设置MANPAGER。例如,我的~/.bashrc

export MANPAGER="col -b | vim -c 'set ft=man nomod nolist ignorecase' -"
7
Rob Hoelz

我想,使用 most pager是个好主意。该传呼机功能非常强大,但对我来说主要功能是-显示彩色手册页。此功能改善了对纯文本的感知,并简化了对所需信息的搜索。

看所附的屏幕截图,文字看起来非常漂亮,不是吗?

most pager

4
dr.

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

当您不知道在哪里搜索时非常有用。

4
enzotib

不要忽略info页。许多GNU)工具的信息页比手册页要丰富得多。另请参阅部分通常会说:“ foo的完整文档作为Texinfo手册进行维护。 “对于GNU coreutils软件包中的任何内容,尤其如此。

另外,如果您是emacs用户,请不要忘记可以在不离开编辑器的情况下阅读信息和手册页:M-x infoM-x woman

3
Steven D

对于那些更长,更复杂的手册页,我发现从计算机上阅读它们要容易得多(我知道有些奇怪),因此我在.bashrc中有这些功能

# Print man pages 
manp() { man -t "[email protected]" | lpr -pPrinter; }

# Create pdf of man page - requires ghostscript and mimeinfo
manpdf() { man -t "[email protected]" | ps2pdf - /tmp/manpdf_$1.pdf && \
    xdg-open /tmp/manpdf_$1.pdf ;}
3
jasonwryan

从克里斯托夫(Kristof)答案中,如果您(即)输入man -k chmod您将获得一个可能性列表。请注意括号中的数字,这意味着在手册页中需要查找的部分:

在UNIX上,您可以尝试:

man -s1 chmod将显示chmod命令的手册页

man -s2 chmod它将显示C库函数chmod()的手册页

在Linux上,您应该更改-s-S

2
jyz

与Rob Hoelz的回答类似但略有不同,

在您的~/.vimrc中添加以下内容:

let $GROFF_NO_SGR=1
runtime ftplugin/man.vim

现在vimman是出色的联机帮助页查看器,并且:Man在Vim内(或直接点击K就是一个很好的联机帮助浏览器。

2
ephemient

在用户友好的图形应用程序中查看手册页:

konqueror man:(command)

对于顶级目录:

konqueror man:

特征:

  • 如果您输入的命令在多个部分中都具有匹配项,那么它将带您进入歧义消除页面
  • 这是一个图形应用程序,因此您无需记住密码键序列即可浏览页面
  • 它包括指向相关页面的超链接(包括“另请参见”页面)
  • 您可以在单独的标签中打开相关页面
2
nobar

Dayum,人们!困惑的答案是什么?简单性发生了什么,才是光彩的关键,而没有什么呢?您的大多数vi/vim键都可以顺畅地工作:

_/_或_?_-向前或向后搜索(某些人已经提到过)。在前者的情况下,小写字母n将向前滚动匹配项,大写字母N将向后滚动。后者(问号)则相反。

通过正则表达式进行稍微复杂一些的搜索。 man(或less)和VIM]之间的区别在于,使用后者时,必须使用escape()字符在表达式中声明元字符好消息是,当您使用前一个(manless)时-不用那么多,因此您可以轻松地在搜索iptables手册页中包含多个术语,例如:/(iptables|rules)。如果您不熟悉正则表达式,则表示“搜索单词iptables OR = rules”。输入此内容并持续按n时,您将在搜索的交替结果中滚动,结果将以不同的颜色很好地突出显示给您(实际上是两个。哈哈)。尝试浏览页面,并专注于特定的术语或概念-您不会错过任何一件事!

而且,为了更快地导航,您的常规vi备用支架仍然站立(无双关):ggG-文档的开始/结束; (更正!在man中,您可以使用下面提到的所有键,而无需使用Ctrl。这仅适用于vi)。 _Ctrl + u or d_-向上或向下滚动; _Ctrl + b or f_-一样,只有更大的飞跃。 “向后或向前翻页”; ey-滚动一行,但是我认为大多数人宁愿只使用箭头键。但是,如果您想留下“ 1337”并且“永远不要离开家中的行”(就像我一样大声笑),这就是要走的路。

我要说的是UNIX有两种主要的键盘程序控件,它们都是readline库的一部分:vi和emacs。任您选择(但最好同时兼顾),这将使您的生活变得不那么复杂。 UNIX中的大多数CLI程序都使用其中之一。 BASH默认使用emacs控件,但是可以通过键入_set -o vi_轻松将其设置为“ vi模式”。对于正则表达式也可以这样说,但是这将成为话题。我什至要说这两个都是UNIX的“通用语言”。

2
Max

为了有效查找单字符切换,例如-u,您通常可以使用:

/^ *-u($|\s)

如果许多选项都带有“ -u”作为前缀,则可以节省大量时间。

1
matt

我们大多数人都设置PATH变量。这将向您展示如何自动使人工搜索路径与命令搜索路径匹配。

假设您追加路径以包括个人的,特定于工作的和本地安装的实用程序,例如export PATH=$PATH:~/bin:/workgroup/bin:/opt/local/bin:。副作用是man foo不会显示存储在〜/ 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
Stefan Lasiewski

man -a printf只是默认为man 1在我的Linux Mint机器上。 whatis printf给我有关的信息。

1
stu

如果您要查找有关内置bash的信息(例如timedisownset[[),而不是浏览详细的bash信息页面或man bash,您可以输入help {builtin-keyword}并快速获取基本语法信息。

1
LawrenceC

我只使用grep。如果我想知道read命令的-s选项的作用,我将依次尝试这些命令,直到得到答案:

info read |grep \\-s

man read |grep \\-s

help read |grep \\-s

在这种情况下,只有info命令提供了明确的答案。 这个极好的答案 提供了有关不同帮助系统的详细信息。

1
Cees Timmerman

如果您对man printf给您printf(1)感到恼火,而您只想要printf(3),则可以通过将部分放在printf之前告诉男人您想要第3节中的printf,就像这样:man 3 printf,而不必更改MANPATH环境变量中扫描目录的顺序,并将C语言的目录放在Shell命令的目录之前。

1
Li Lo

对于喜欢在触摸屏上阅读人和信息页面的人们,您可以将人/信息传递到yad或zenity,并利用所有gtk3东西(例如本机手指滚动)。也适用于反射屏幕和鼠标:

man cat |yad --text-info 

您还可以使用zenity,也可以添加yad选项,例如:

man cat |yad --text-info --height=500 --width=800 --center --wrap --show-uri --no-markup &

提示:通过show uri,您可以用鼠标/手指单击手册页中的Web链接。

0
George Vasiliou

enter image description here 如果您由于所有白色文本而难以阅读手册,则可以将其着色。大多数手册页都以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 "[email protected]"
}

这适用于bash和zsh。对于mostfishxtermrxvt,请参见上面的链接。

进一步阅读:

0
vikram99

apropos(1) 命令用于搜索手册页。但是, apropos(1) 的大多数实现只是在NAME部分中搜索,这是非常有限的。

NetBSD 具有apropos(1)的全文本搜索实现,它能够搜索手册页的完整内容。还有一个基于Web的界面: man-k.org ,您可以尝试一下。

0
Abhinav Upadhyay