在手册页中查找信息的技巧和提示[关闭]


Answers:


51

请注意节号:假设您需要帮助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环境变量中已扫描目录的顺序,并将C语言的目录放在shell命令的目录之前。当Fortran或TCL / Tk手册页在C页之前列出时,也可能发生这种情况。

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

各节定义明确:

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

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


11
在大多数系统上,您可以签出man man以查看各个部分的完整说明。
史蒂文D 2010年

1
如果有一个程序可以通过“关键字”搜索页面,那将很酷。也就是说,我最近不记得要找到子字符串strstr()的c函数的名称,而且我周围没有互联网。
Hi-Angel

3
@ Hi-Angel man -k substring还是apropos substring会帮助您的。
库萨兰达


37

man -k 搜索

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


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
嘿,这是有关导航的一个很好的提示
glenn jackman 18/09/20


16

读取手册页的默认寻呼机是less。有文档上less 这里

尤其是:

  • 向上/向下滚动一页: b/ space
  • 上下滚动半页: u/ d
  • 向前/向后搜索: // ?,然后输入正则表达式,
    • 然后点击 n 进入下一场比赛,或
    • shift+ N转到上一场比赛。
    • 如果该页面上覆盖了无趣的匹配项,请点击 space以转到下一页。
  • @在正则表达式之前添加一个以从头开始搜索。

这是最好的答案。使用kbd符号的加分。;)
Chiramisu

还可使用ctrl+space/ 向上/向下滚动一页f,这可能会有所帮助,具体取决于您偏爱用于导航的手指。
joelostblom

8

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


7

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

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

4

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

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

大多数传呼机


2
您已经忽略了最重要的信息:我如何使用它most来查看手册页。
user1968963

2
@ACK_stoverflow-推荐这个人做可能不是一个好主意,> ~/.bashrc因为它将覆盖那里的内容。>>我认为最好追加()或手动添加石灰。
vatsug '16

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

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


3

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

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


3

对于那些更长,更复杂的手册页,我发现从计算机上阅读它们要容易得多(我知道有些奇怪),因此我将这些功能包含在内 .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 ;}

2

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

在UNIX上,您可以尝试:

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

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

在Linux上,你应该改变-s-S


男人1 chmod男人2 chmod做同样的事情。
椭圆视图

2

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

konqueror man:(command)

对于顶级目录:

konqueror man:

特征:

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

顺便说一下,这也适用于info:(command)。有些程序通过“ info”提供的信息比通过“ man”提供的信息更多,并且konqueror提供了更好的界面来浏览这些信息页面。注意:仅使用info:,也可以获取顶级目录。
nobar 2012年

使用该gman软件包可以在localhost / cgi-bin / man / man2html上建立手册页Web服务器,从而实现类似的效果。
nobar

AskUbuntu上的替代方法:askubuntu.com/questions/253705/…–
nobar

…… yelp是一种轻巧的替代品,konqueror尽管它的缺点是不显示目录或用于多个部分的名称的歧义页面。您必须通过追加来明确区分它们.(section)-例如yelp man:open.2。您也可以使用<kbd> Ctrl-L </ kbd>打开位置栏。
nobar 2015年

2

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

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

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

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

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


2

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

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

let $GROFF_NO_SGR=1
runtime ftplugin/man.vim

现在vimman是一个出色的联机帮助查看器,并且:Man从Vim内(或只是点击K一个关键字)是一个出色的联机帮助浏览器。


1

我们大多数人都设置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

如果您正在寻找关于信息bash内置(如timedisownset,或[[),而不是通过苦读详细bash信息页面或者man bash,你可以进入help {builtin-keyword}并迅速得到基本语法信息。


1

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


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”的所有条目(如-u][--udp|-u]netstat手动),你需要的东西是这样的: /-u($|[^a-z]) 如果vivim用作寻呼机: /-u\($\|[^a-z]\)
健一


0

在此处输入图片说明如果由于所有白色文本而导致难以阅读手册页,则可以将其着色。大多数手册页都以打开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。对于mostfishxtermrxvt看到上面的链接。

进一步阅读:


0

对于喜欢在触摸屏上阅读人和信息页面的人们,您可以将人/信息传递到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链接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.