根据我的知识/理解,帮助和人是同时出现的,或者它们之间的时间差异很小。然后 GNU Info 进来了,从我所看到的内容来看,它比人类更冗长、更详细,而且可以说要好得多。即使在今天,人类中的许多条目都是神秘的。
我经常想知道为什么在很多方面都优于人的信息根本没有成功。我仍然看到人们制作手册页而不是信息页。是因为没有有用的信息工具吗?两者的许可证中有什么吗?或者其他一些没有得到它应得的成功信息的因素?
我确实在 unix stackexchange 上看到了一些问题,特别是 GNU 信息是什么?和help、info 和 man 命令之间的区别等等。
有时我需要在所有手册页中查找某些单词。我知道apropos,但如果我理解它的手册正确,它会将搜索限制为仅描述。
每个手册页中都有一个简短的说明。apropos 搜索关键字实例的描述。
例如,如果我查找诸如“viminfo”之类的词,则根本找不到任何结果...
$ apropos viminfo
viminfo: nothing appropriate.
Run Code Online (Sandbox Code Playgroud)
...虽然这个词存在于 Vim 手册的后面部分(安装在我的系统上)。
Run Code Online (Sandbox Code Playgroud)-i {viminfo} When using the viminfo file is enabled, this option sets the filename to use, instead of the default "~/.vim? info". This can also be used to skip the use of the .viminfo file, by giving the name "NONE".
那么我怎样才能在每本手册的每个部分中查找一个词呢?
默认情况下,man用于less输出文本。我怎么能告诉它只输出到标准输出?我的终端模拟器有一个滚动条和搜索功能,我想用它们代替箭头键。
我正在寻找 man 命令的最新源代码,我的 Linux 版本很旧(v1.6f),但我在谷歌搜索了一段时间后失败了。
我的意思是最新的源代码man,而不是可以编译和安装man-pages的二进制文件/usr/bin/man本身。
尝试man在 Linux 系统上运行时出现此错误:
$ LC_ALL=C man man
man: Too many arguments
Try 'man --help' or 'man --usage' for more information.
Run Code Online (Sandbox Code Playgroud)
我的man命令似乎不是别名:
command -v man: /usr/bin/man
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
我打字man sudoers但得到
man: can't set the locale; make sure $LC_* and $LANG are correct
No manual entry for sudoers
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
如果我打开一个程序的手册页,比如cat或ls,它会打印(可能不是合适的词)手册页的内容,当我按下 时q,它会像调用man命令之前一样显示屏幕。恢复是如何发生的?什么会擦除所有内容,然后打印 shell 的先前内容?
例子:
[VAR121@Tesla Testing]$ man ls
Run Code Online (Sandbox Code Playgroud)
输出:
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
............
Run Code Online (Sandbox Code Playgroud)
当我按下 时q,屏幕回到 shell 的默认外观,如下所示的提示。
[VAR121@Tesla Testing]$ man ls
[VAR121@Tesla Testing]$
Run Code Online (Sandbox Code Playgroud)
屏幕如何恢复?
在我的系统(Darwin 15.5.0)上,man(1)打开如下:
NAME
man - format and display the on-line manual pages
Run Code Online (Sandbox Code Playgroud)
但是,页面格式化的文件显然在磁盘上:
% man -w man
/usr/share/man/man1/man.1
% file `man -w man`
/usr/share/man/man1/man.1: troff or preprocessor input text
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,“在线”并不意味着“在线”,如“可通过 Internet 访问的其他地方”。
“在线”是否仅表示我的系统已开机?如果是这样,为什么要首先指定它,即,我正在阅读格式化程序处理的页面不是很明显吗?或者,在编写描述时,将手册放在磁盘上是不是很重要,因为那时大多数“手册”都是纸卷?这种“在线”、连字符等的用法在计算中仍然很常见吗?
我在 macOS 上尝试 grep 手册页时遇到了奇怪的行为。例如,Bash 手册页显然出现了字符串NAME:
$ man bash | head -5 | tail -1
NAME
Run Code Online (Sandbox Code Playgroud)
如果我 grep forname我确实得到了结果,但如果我 grep forNAME我没有:
$ man bash | grep 'NAME'
$ man bash | grep NAME
Run Code Online (Sandbox Code Playgroud)
我试过其他我知道的大写单词,SHELL搜索BASH结果没有任何结果。
这里发生了什么?
更新:感谢所有的答案!我认为值得添加我遇到这个问题的上下文。我想编写一个 bash 函数来包装man,如果我试图查找内置 shell 的手册页,请跳转到 Bash 手册页的相关部分。可能有更好的方法,但这是我目前所拥有的:
man () {
case "$(type -t "$1")" in
builtin)
local pattern="^ *$1"
if bashdoc_match "$pattern \+[-[]"; then
command man bash | less --pattern="$pattern +[-[]"
elif …Run Code Online (Sandbox Code Playgroud) 示例:我正在使用 tar -zxvf命令,但我不知道“x”代表什么。
如何在不必一直滚动的情况下检查此单个参数man tar?