【Linux】--help,man page , info page

我们知道Linux有很多的命令,那LInux要不要背命令?

答案是背最常用的那些就行了

那有的时候我们想查询一些命令的详细用法该怎么办呢?

这里我给出3种方法

1.--help

--help的使用方法很简单啊

cpp 复制代码
要查询的命令 --help

我们看个例子

这里我只截取了一小部分

这里大概的讲解了一些date命令的使用方法

基本上如果是命令,那么通过这个简单的【--help】就可以很快速地取得你所需要的选项、参数的说明,这很重要。我们说过,在Linux下面你需要学习完成任务的方式,不用硬背命令参数。不过常用的命令你还是得要记忆一下,而选项就通过【--help】来快速查询即可。

同样的,通过【cal --help】你也可以取得相同的解释,相当好用。不过,如果你使用【bc-help】的话,虽然也有简单的解释,但是就没有类似scale的用法说明,同时也不会有+、-、
*、/、%等运算符的说明了。

因此,虽然【--help】已经相当好用,不过,通常【--help】用在协助你查询"你曾经使用的命令所具备的选项与参数"而已,如果你要使用的是从来没有用过得命令,或是你要查询的根本就不是命令,而是文件的格式时,那就得要通过【man page】命令了。

2.man page

咦,【date -help】没有告诉你STRING是什么?

嘿嘿,不要担心,除了【--help】之外,我们Linux上面的其他在线求助系统已经都帮你想好要怎么办了,所以你只要使用简单的方法去寻找一下说明的内容,马上就清清楚楚地知道该命令的用法了。**这个man 是manual(操作说明)的简写。**只要执行:【man date】马上就会有清楚的说明出现在你面前,如下所示:

我们可以按空格往下翻,按q退出

我们现在处于的这个界面就是man page

我们仔细来看这个man page就会发现一些有趣的东西

首先,在上个表格的第一行,你可以看到的是:【DATE(1)】,DATE我们知道是命令的名称,那么(1)代表什么?

它代表的是"一般用户可使用的命令"的意思。咦,还有这个用意,呵呵,没销在查询数据的后面的数字是有意义的,它可以帮助我们了解或是直接查询相关的数据。常见的几个数字的意义是这样的:

|----|-----------------------------------|
| 代号 | 代表内容 |
| 1 | 用户在shell环境中可以操作的命令或可执行文件 |
| 2 | 系统内核可调用的函数和工具 |
| 3 | 一些常用函数和函数库,大部分为c的函数库 |
| 4 | 设备文件的说明,通常在/dev下的文件 |
| 5 | 配置文件或者是某些文件的格式 |
| 6 | 游戏 |
| 7 | 惯例和协议,比如LInux文件系统,网络协议,ASCII代码等说明 |
| 8 | 系统管理员可用的管理命令 |
| 9 | 跟内核有关的文件 |

上述的表格内容可以使用【man man】来更详细地取得说明。

**通过这张表格的说明,未来你如果使用man page 在查看某些数据时,就会知道该命令/文件所代表的基本意义是什么了。**举例来说,如果你执行了 【 man nul】时,会出现的第一行是:【NULL(4)】,对照一下上面的数字意义,嘿嘿,原来 null 这个玩意儿竟然是一个设备文件,很容易了解了吧!

上表中的1、5、8这三个号码特别重要,也请读者要将这三个数字所代表的意义背下来。

再来,manpage的内容也分成好几个部分来加以介绍该命令。就是上面【man date】那个表格内,以NAME作为开始介绍,最后还有个SEEALSO来作为结束。

基本上man page大致分成下面这几个部分:

|-------------|----------------------------------|
| 代号 | 内容说明 |
| NAME | 简短的命令、数据名称说明 |
| SYNOPSIS | 简短的命令语法(syntax)简介 |
| DESCRIPTION | 较为完整的说明,这部分最好仔细看看 |
| OPTIONS | 针对SYNOPSIS 部分中,有列举的所有可用的选项说明 |
| COMMANDS | 当这个程序(软件)在执行的时候,可以在此程序(软件)中执行的命令 |
| FILES | 这个程序或数据所使用或参考或链接到的某些文件 |
| SEE ALSO | 可以参考跟这个命令或数据有相关的其他说明 |
| EXAMPLE | 一些可以参考的范例 |

大概是这些,可能还有别的,我就不说了

2.1.man page常用按键

大致上了解了man page的内容后,那么在man page当中我还可以利用哪些按键来帮忙查看呢?首先,如果要向下翻页的话,可以按下键盘的空格键,也可以使用[Page Up]与[Page Down]来翻页。

同时,如果你知道某些关键词的话,那么可以在任何时候输入【/word】,来主动查找关键词。例如在上面的查找当中,我输入了【/date】会变成怎样?

看到了吗,当你按下【/】之后,光标就会移动到屏幕的最下面一行,并等待你输入查找的字符串了。此时,输入date 后,man page 就会开始查找跟date 有关的字符串,并且移动到该区域。

很方便吧!最后,如果要离开 man page 时,直接按下 【q】就能够离开。我们将一些在man page 常用的按键给它整理整理:

|-------------|----------------------------------------------------------------------------------------------------------------------------------------------|
| 按键 | 进行工作 |
| 空格 | 向下翻一页 |
| 【Page Down】 | 向下翻一页 |
| 【Page Up】 | 向上翻一页 |
| 【Home】 | 去到第一页 |
| 【End】 | 去到最后一页 |
| /string | 向【下】查找string 这个字符串,如果要查找vbird 的话,就输入/vbird |
| ?string | 向【上】查找string 这个字符串 |
| n,N | 利用 /或?来查找字符串时,可以用n来继续下一个查找(不论是/或?),可以利用N来进行【反向】查找。 举例来说,我以/vbird 查找 vbird字符串,那么可以按下n继续往下查询,用N往上查询。若以?vbird向上查询vbird字符串,那我可以用n继续【向上】查询,用N反向查询 |
| q | 结束这次的man page |

要注意,上面的按键是在man page的界面当中才能使用的。

比较有趣的是那个查找,我们可以往下或是往上查找某个字符串,例如要在 man page 内查找vbird 这个字符串,可以输入/vbird或是?vbird,只不过一个是往下,而一个是往上来查找的。而要重复查找某个字符串时,可以使用n或是N来操作即可,很方便吧!

既然有man page,自然就是因为有一些文件数据,所以才能够让man page读出来。那么这学man page的数据存放在哪里呢?

不同的发行版通常可能有点差异性,不过,通常是放存/usr/share/man这个目录里,然而,我们可以通过修改它的man page查找路径来改善这个目录的问题,修改/etc/man_db.conf(有的版本为man.conf 或 manpath.conf 或 man.config 等)即可。

2.2.查找特定命令/文件的man page说明文件

在某些情况下,你可能知道要使用某些特定的命令或是修改某些特定的配置文件,**但是偏偏忘记了该命令的完整名称,有些时候则是你只记得该命令的部分关键词。**这个时候你要如何查出来你所想要知道的man page?

我们以下面的几个例子来说明man这个命令的作用。

你可否查出来,系统中还有哪些跟【man】这个命令有关的说明文件?

答:你可以使用下面的命令来查询一下:

使用一f这个选项就可以取得更多与man相关的信息,而上面这个结果当中也有提示(数字)的内容,举例来说,第三行的【man(7)】表示有个man(7)的说明文件存在,但是也有个man(1)存在。

那当我们执行【man man】的时候,到底是指向哪一个说明文件?

其实,你可以指定不同的文件,举例来说,上表当中的两个man你可以这样将它的文件显示出来:

cpp 复制代码
[dmtsai@study ~]$ man 1 man      //这里是用man(1)的文件说明。
[dmtsai@study~]$ man 7 man      //这里是用man(7)的文件说明

你可以自行将上面两个命令输入一次看看就知道,两个命令输出的结果是不同的。那个1、7就是分别取出在manpage里面关于1与7相关数据的文件。

好了,那么万一我真的忘记了执行数字,只有输入【man man】时,那么取出的数据到底是1还是7?这个就跟查找的顺序有关了。

查找的顺序是记录在/etc/man_db.conf这个配置文件当中,先查找到的哪个说明文件,就会先被显示出来。一般来说通常会先找到数字较小的那个,因为排序的关系,所以,man man会跟man 1 man结果相同。

除此之外,我们还可以利用关键词找到更多的说明文件数据。什么是关键词?从上面的【man -f man】输出的结果中,我们知道其实输出的数据是:

  • 左边部分:命令(或文件)以及该命令所代表的意义(就是那个数字);
  • 右边部分:这个命令的简易说明,例如上述的【一macros to format man pages 】;

**当使用【man -f 命令】时,man只会找数据中的左边那个命令(或文件)的完整名称,有一点不同都不行。**但如果我想要找的是关键词呢?

也就是说,我想要同时找上面说的两个地方的内容,只要该内容有关键词存在,不需要完全相同的命令(或文件)就能够找到时,该怎么办?请看下个范例。

例题
找出系统的说明文件中,只要有man这个关键词就将该说明列出来。

非常多啊!

因为这个是利用关键词将说明文件里面只要含有man那个字眼的(不见得是完整字符串) 就将它取出来,很方便吧!(上面的结果有特殊字体的显示是为了方便读者查看,实际的输出结果并不会有特别的颜色显示。)

事实上,还有两个命令与man page有关,而这两个命令是man的简略写法,就是这两个:

cpp 复制代码
[dmtsai@study ~]$ whatis  [命令或是文件] //<==相当于man -f[命令或是文件]
[dmtsai@study ~]$ apropos [命令或是文件]  //<==相当于man -k[命令或是文件]

而要注意的是,这两个特殊命令要能使用,必须要有建立whatis数据库才行,这个数据库的建立
需要以root的身份执行如下的命令.

cpp 复制代码
[root@study -]4 mandb
#旧版的Linux这个命令是使用makewhatis,这一版开使用mandb了

3. info page

在所有的UNIX-like系统当中,都可以利用man 来查询命令或是相关文件。但是,在Linux里

面则又额外提供了一种在线求助的方法,那就是利用info这个好用的工具。

基本上,info与man的用途其实差不多,都是用来查询命令的用法或是文件的格式。****但是与man page ---口气输出一堆信息不同的是,info page 则是将文件数据拆成一个一个的段落,每个段落用自己的页面来编写,并且在各个页面中还有类似网页的超链接来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。所以,你可以将info page想成是命令行模式的网页显示数据。

不过你要查询的目标数据的说明文件必须要以 info的格式来写成才能够使用info的特殊功能(例如超链接),而这个支持 info 命令的文件默认是放置在/usr/share/info/这个目录当中。

举例来说,info这个命令的说明文件有写成info格式,所以,你使用【info info】可以得到如下的画面:

我们看到Menu了吧,它下面那些全是超链接,指向那些超链接我们就可以跳转到对应页面,我们来试试看

我们可以直接按Tab键来到第一个超链接(自己移动光标来到这里也可以)

这个时候按下Enter

怎么样?是不是很方便

更重要的是我们可以通过按N,P,U去到下一个,上一个,上一层的结点,非常方便

链接之间还可以具有类似超链接的快速按钮,可以通过【Tab】键在各个超链接间移动,也可以使用U、P、N来在各个层级与相关链接中显示,非常不错。至于在info page当中可以使用的按键,可以看下面的表格,事实上,你也可以在info page中按下h。

|---------------|--------------------------|
| 按键 | |
| 空格键 | 向下翻一页 |
| [Page Down] | 向下翻一页 |
| [Page Up] | 向上翻一页 |
| [Tab] | 在节点之间移动,有节点的地方,通常会以*显示 |
| [Enter] | 当光标在节点上面时,按下Enter可以进入该节点 |
| b | 移动光标到该info界面当中的第一处 |
| e | 移动光标到该 info界面当中的最后一个节点处 |
| n | 前往下一个节点处 |
| p | 前往上一个节点处 |
| u | 向上移动一层 |
| s(/) | 在info page当中进行查找 |
| h,? | 显示帮助选项 |
| q | 结束这次的info page |

info page 是只有Linux上面才有的产物,而且易读性增强很多,不过查询的命令说明要具有info page功能的话,得用info page 的格式来写成在线求助文件才行。

CentOS7将 info page的文件放置到/usr/share/info/目录中,至于以非info page 格式写成的说明文件(就是man page),虽然也能够使用info 来显示,不过其结果就会跟man相同。

举例来说,你可以执行【info man】就知道结果了。

相关推荐
码农君莫笑12 分钟前
Blazor项目中使用EF读写 SQLite 数据库
linux·数据库·sqlite·c#·.netcore·人机交互·visual studio
mubeibeinv22 分钟前
项目搭建+图片(添加+图片)
java·服务器·前端
dessler27 分钟前
Docker-如何启动docker
运维·docker·云原生·容器·eureka
zhy2956327 分钟前
【DOCKER】基于DOCKER的服务之DUFS
运维·docker·容器·dufs
无为之士32 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
秋名山小桃子41 分钟前
Kunlun 2280服务器(ARM)Raid卡磁盘盘符漂移问题解决
运维·服务器
与君共勉1213842 分钟前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
岑梓铭1 小时前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
努力学习的小廉1 小时前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei1 小时前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper