有没有一种方法可以跟踪手册页中提到的链接?例如,这是ps的手册页;如何访问标记为红色的链接?



评论

另外,我看到man是在线参考手册的接口,(如果我没有记错的话)这意味着它应该从互联网上的某些网页中提取所有信息,对吗?那么,有人知道http://链接是什么吗?

这里的“在线”是指“在计算机上”(而不是“在纸上”),而不是“在互联网上”。

“在线”:您可能还记得那些名为Sierra On-Line的公司(当时)推出的PC版“冒险” Quest游戏。手册页:浏览手册页的最佳方法是使用编辑器。这样,导航,搜索(等)文本将变得如此流畅,因为每条捷径都已经存在很长时间了。另外,假设您在编程项目上工作-您可以将手册页中的内容复制到代码中。无缝互动无所不包。看看这个,以及我对@Gilles答案的评论。

#1 楼

手册页可追溯到Unix第一版。尽管超文本已经发明,但仍处于起步阶段。网络距今已有二十年的路程,而手册是一本实际的印刷书籍,如果适合的话,通常每页只有一个命令(这就是为什么它们被称为页面)。从那以后,有些东西,但是大多数页面并不是真正为超文本设计的,并且默认的man程序不支持它(它只是一个纯文本查看器,带有支持某些基本格式的技巧)。但是,有些手册页查看程序会重构一些超链接,主要是指向其他手册页的链接,这些程序通常以man(1)的形式编写,其中man是手册页的名称,而1是节号:



tkman,具有超链接的GUI手册页查看器

WoMan(以前是wiki,man comparsion),是Emacs的手册页浏览器,支持超链接

man2html,一个可实现HTML转换的人(加上Web浏览器以读取结果)

您可以在man2html或类似工具上浏览几种操作系统的手册页,这些手册页已通过q4312079q或类似工具转换为HTML在线站点的数量,例如:


CentOS
Debian

FreeBSD(和其他一些集合)
macOS:存档从10.9 Mavericks开始,在unix.com上是最新版本,在ss64.com上是部分副本

MINIX 3
NetBSD
OpenBSD

Solaris 10,Solaris 11 ,其他Solaris版本

Ubuntu

Unix 1st ed等级,Unix第六版,Unix第八版


在man页面成为UNIX上已建立的文档格式之后的某个时间,以及在发明Web之前的某个时间,GNU项目引入了信息文档格式,该信息文档格式比man更高级,同时坚持了为文本终端设计的简单标记。与人相比,信息的主要创新是拥有多页文档,以及指向其他页面的超链接。信息仍然是GNU项目的首选文档格式,尽管大多数信息页面都是从Texinfo源生成的(或者有时是其他格式)也可以生成HTML。当存在程序的信息文档时,它通常是主要的手册,而手册页仅包含有关命令行参数的基本信息。

评论


好答案!还值得一提的是,Emacs中还有另一种手册页模式,该模式(至少是I)仅由Mx man获得(Ch v模式名称为Man):至少在某一方面,它优于WoMan,因为它显示表格(屏幕截图)。当然,它也是超链接的。

–伊曼纽尔·伯格(Emanuel Berg)
13年3月6日在22:38



信息程序用户界面感觉很错误并且违反直觉。我还没有看到任何人使用它。

– PavelŠimerda
18年1月16日在1:53

@PavelŠimerda>信息程序用户界面感觉很错误并且违反直觉。 <嗯,相比之下呢?对于less(1)(这是GNU中man(1)的默认分页器)—那件事,您必须回想起如何回滚,因为没有绑定(并且可能根本不起作用) ?这样,主键是b。对于哪种界面范例的用户而言,这可能是直观的?

–德米特里·亚历山德罗夫(Dmitry Alexandrov)
18-2-10在22:40



@PavelŠimerda>我还没有看到任何人使用它。 <出于确切原因,总是在被锁定在文本终端中时始终使用info(1)来阅读联机帮助页,这与less(1)不同,它确实将哑页(N)链接转换为超链接。很惊讶,吉尔斯的回答没有提到这种品质。

–德米特里·亚历山德罗夫(Dmitry Alexandrov)
18-2-10在22:41



提醒您,在信息中,可以通过将光标移动到链接(或Tab)上并按Enter来跟随链接(格式为* link text::)。同样在我看来,信息可以接受各种emacs命令,但这对我来说太棘手了(我使用vim)。

–等离子Binturong
20 Dec 16'在18:08

#2 楼

首先,它不是链接。这只是一个下划线。手册页只是文本文档,终端可以处理一些简单的格式。下划线只是一个突出显示,没有涉及“链接”。

普通的man命令只是一个文本格式化程序。实际上,man命令甚至不显示文本,man只是格式化存储在手册页文件[1]中的信息,并将格式化后的输出发送到另一个程序(通常是less),该程序将格式化后的输出显示在屏幕上。这些显示程序没有链接的概念。

有一些特殊的文档阅读器,他们也许能够看到这样的格式,并且有根据地猜测,这样的突出显示可能表明有相关的人。可以拉出并创建链接的页面,但我不知道哪个页面可以。也许pinfo吗?

如果您想通过超链接进行类似Web的格式设置,则可以在线找到几乎所有带有链接的UNIX手册页。尝试在Google中键入man [anything],您几乎肯定会在第一批中获得成功。

在您的示例中,视觉突出显示是一个提示,即另一个程序名称具有其自己的手册页,您可以轻松地将其拉起。尝试man 1 top。 1表示要查看的手册页部分。请参见此问题以获取有关各节的说明:手册页中的数字是什么意思?


[1]如果在文本编辑器中打开man页面文件,您将看到未经格式化的man原始页面,以便于阅读。原始man页面以称为troff的标记语言编写。有关troff以及如何编写man页面的更多信息,请参见:https://liw.fi/manpages/。

评论


知道为什么男人1顶吗?我的意思是应该像ps 1 top一样,因为我在ps的手册页上找到了链接。 “男人1顶”对我来说没有意义。请说清楚。

–its_me
2011年8月5日在20:20

也有一些资源可以使手册页在Internet上可用,并用可替换的href代替了引用。

– Gabe。
2011年8月5日在20:22

如果要遵循top(1)“链接”,则需要从第一部分打开顶部手册页。有关各节的更多信息,请参见man(1)。 ps 1 top没有任何意义,因为您只需使用一些奇怪的参数运行ps命令即可。

–rvs
2011年8月5日在20:23



@Aahan是man 1顶部,因为您想在在线手册页的第一部分中看到top命令的手册页。参考top(1)就是指手册页第一部分的顶部。要看到这一点,请在提示符下键入“ man 1 top”。见“男人男人”

– Gabe。
2011年8月5日在20:24

@Aaran:“手册的各节涵盖了不同的主题。第1节是用户命令(在提示符下键入的内容),第2节是系统调用,依此类推。某些字符串出现在一个以上的部分。现在,readlink出现在第1节和第2节中,而printf出现在第1节和第3节中。如果您只键入man命令,man将按数字顺序尝试各部分并显示找到的第一个命令,或者您可以使用man#命令来指定它必须获取有关readlink系统调用的文档。

– dmckee ---前主持人小猫
2011年8月6日14:26



#3 楼

这是很晚的回复,但请使用w3mman。 w3mman是w3m的系统手册寻呼机。

https://linux.die.net/man/1/w3mman

您可以通过安装w3m软件包来尝试。我相信此软件包已在大多数主要Linux / UNIX发行版和Cygwin的软件存储库中注册。

评论


较晚的答复为尚未提及的问题添加了一些答案,这从来没有问题!欢迎来到Unix&Linux StackExchange!

–伯恩哈德
2012年12月14日上午9:48

Macports w3m的默认安装也提供了w3mman。太好了:)谢谢!

–user6860
2014年9月8日下午0:58

#4 楼

在尝试遵循您的工作流程的意义上,让我尝试多解释一下您的问题。您可能想要的是man页面中的按键组合,可直接将您引向您正在阅读的带下划线的命令。因此,不必安装其他东西,也不必打开其他控制台并忘记例如确切的语法。

此最简单的解决方案是感叹号(如果使用less显示手册页),您要转到带下划线的top

!man top




!man 1 top


您必须将其关闭全部按q多次。还要注意,如果将LESSSECURE=1设置为环境变量,这将无法使less在安全模式下运行,并且不允许使用!,则此方法将无效。它会告诉您“命令不可用”之类的信息。

#5 楼

尽管w3mman是跟踪链接的一种解决方案,但是并不能使用所有屏幕(至少在ubuntu 12.10上)。我更喜欢使用:

$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'


将最后一个命令添加到〜/ .bash_aliases或类似的启动脚本中,以便在每个会话中获取它。

-P w3m是因为到hman的第一个浏览器是lynx或明智的浏览器,但我更喜欢w3m

hman是html2man上捆绑的工具。请参阅此

如果确认退出对您来说很烦,对我来说就是使用此

评论


我的错误,该程序包必须为html2man

– albfan
13年3月7日在17:32

#6 楼

专门针对Ubuntu,有Yelp。它是默认安装的,并且默认情况下能够显示手册页,尽管调用的方法与man命令的方法不同;别名或shell函数可以解决后一点(取决于您的shell)。

yelp 'man:exit'


它将以我不知道的方式默认为节。提醒:要获取手册主题的章节列表,请使用whatis,如whatis exit所示。

要请求Yelp显示特定章节的手册页,例如2,请执行以下操作:
<问题:yelp有错误,从命令行调用时,准备输出多个错误。此外,别名或自定义外壳函数还可以帮助将所有错误重定向到/dev/null

#7 楼

就像他们说的那样,它不是为它设计的。

您可以使用info man,然后在进入商品的“另请参阅”部分后按Enter。


信息-阅读信息文档


#8 楼

我有一个(或多个)hack。


将其放入您的〜/ .bashrc或您的〜/ .zshrc

/>
function man(){
    for arg in "$@"; do
        vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
    done
}


屏幕截图..



Asciinema ..

https://asciinema.org/例如,当您键入man vim时,a / 130131

现在...



将在vim中打开此手册页


例如,如果键入man man vim,它将首先打开man的手册,退出vim后,它将打开vim的手册



当您在底部的另一手册页(另请参阅部分)上按K键(大写为k)时,您将跳至本手册​​(不幸的是在一个较小的寻呼机内)–这是因为let no_man_maps = 1;如果不这样做,那么vim会强制q:q,您将无法轻松地记录宏,并且vim可能会以其他方式表现得很差。)。


退出您输入的第二本手册将使您返回到您正在查看的上一手册


,因为您已加载ftplugin / man.vim,并且ft(自动)设置为man,所以语法突出显示非常漂亮。可以复制和粘贴,在vim中自由导航,甚至可以修改缓冲区和:w ~/usefulfile。您可以做在vim中通常会做的所有事情,包括记录宏,使用"+y(如果有+clipboard)将其拖到剪贴板等,等等。

我发现它要好得多。 >
我发现的唯一小挫折(如果您使用较少的传呼机,该挫折仍然存在)是您想在一个vim会话中打开多个手册。我真的看不到这样做的方法。

一些注意事项:



如果您尝试保存缓冲区,您将获取E382: Cannot write, 'buftype' option is set


我喜欢您无法保存,因为它可以防止意外保存它



您仍然可以像:w /tmp/man.man />

如果您使用扩展名.man保存文件,那么打开它会将文件类型设置为man
如果您不使用扩展名.man保存文件,则可以通过运行man将ft设置为:set ft=man



如果打开手册页时需要执行某些操作,例如,可以使用autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'
我在vimrc中添加了以下内容,以便可以按K尝试打开手册,然后按G返回上一手册:


augroup man
    autocmd!
    autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
    autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END



hack 2

将其放在您的〜/ .bashrc或〜/ .zshrc中

function man(){
    declare -a args
    for arg in "$@"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}


屏幕快照..



Asciinema ..

https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv

这解决了破解1张和更少面孔的问题(现在您可以一本查看多本手册

注意:


重要如果要hack2起作用,则必须将:let no_man_maps = 1放入~/.vimrc中。这是因为vim将把.../vim80/man.vim的源代码和q的源地址强制映射到:q。如上所述,在一个会话中查看多个手册页

如果按K键,仍然会打开一个新的vim会话,但是如果您要


可以绑定一个autocmd(使用上面的autocmd)来执行类似autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"或类似的疯狂操作(未经测试)




评论


对于颜色不好的子午线表示歉意。在我的终端中,颜色看起来好多了。

–迪伦
17年7月22日在23:19

#9 楼

我能够使用--htmlman参数,以便在$ BROWSER环境变量定义的浏览器中打开它,因此:

BROWSER=google-chrome man ps --help


我正在使用Fedora。不确定这是否适合您的发行版,请测试并在评论中报告。

评论


该选项似乎在Ubuntu 12.04上可以识别,但是失败。

– Hibou57
2014年8月12日上午8:08

OK,需要安装软件包groff。当没有相同名称的软件包时,可能存在groff命令(该命令随groff-base一起提供,而不是完整的groff软件包附带)。我做人--html =“ surf file%c //%s” ,很好。但是,超文本非常有限:-/。

– Hibou57
2014年8月12日在8:45



#10 楼

只是以为我要加2便士。

我正在使用以下内容查看手册页,我已将man别名为以下命令(如果使用zsh,它将仍然提供自动完成功能)。

man --html='lynx --cfg=~/.lynx.cfg' <manpage>


~/.lynx.cfg中的以下内容设置了便于导航的键,并设置了q退出,就像在man中一样。我必须从主HELPFILE复制/etc/lynx/lynx.cfg条目,否则帮助无法正确显示。

KEYMAP:k:UP_TWO                # Move display up two lines
KEYMAP:j:DOWN_TWO              # Move display down two lines
KEYMAP:K:UP_HALF                # Move display up half a page
KEYMAP:J:DOWN_HALF              # Move display down half a page
KEYMAP:h:PREV_LINK        # Move to the previous link or page
KEYMAP:l:NEXT_LINK        # Move to the next link or page
KEYMAP:q:ABORT
HELPFILE:file://localhost/usr/share/doc/lynx-common/lynx_help/lynx_help_main.html.gz


注意:您需要安装groff软件包才能正常工作。

sudo apt install groff


结果非常好,因为人正在进行到html的转换,我希望它是使链接正常工作的最佳选择。