为什么要从man和help开始学习?因为这两个命令可以大大提升学者的自学能力。学会了这两个命令,可以搞定很多的问题。
man是英文单词manual的缩写,在这里是手册的意思,man最大的作用就是列出目标命令的安装手册,可供用户查看目标命令的使用方法。
man [OPTION] [COMMAND]
我们同样可以通过man命令查看man的手册进行参考:
输出man man
命令后会出现man的手册:
名称
man - 系统参考手册的接口
概述
man [man 选项] [[章节] 页 ...] ...
man -k [apropos 选项] 正则表达式 ...
man -K [man 选项] [章节] 关键词 ...
man -f [whatis 选项] 页 ...
man -l [man 选项] 文件 ...
man -w|-W [man 选项] page ...
从上面我们可以看出:
man -k其实与apropos等价,因为二者的[OPTIONG]可以通用。
同理man -f与whatis等价。
是不是还有些困惑,没关系man还为我们提供了示例:
示例:
man ls
显示 项目 (程序) ls 对应的手册页。
man man.7
显示章节 7 中宏包 man 对应的手册页。(这是“man 7 man”的另一种拼方
法。)
man 'man(7)'
显示章节 7 中宏包 man 对应的手册页。(这是“man 7 man”的另一种拼写方法。该方法在复制和粘贴手册页的交叉引用时可能更方便。请注意,括号在通常情况下必须被引号括起以避免 shell 转义。)
man -a intro
正确执行时显示手册中包含的所有可用的 intro 手册页。可以在连续显示过
程中退出或跳过任一页。
man -k printf
将关键词 printf 作为正则表达式来搜索对应的手册页概述和手册页名
称,并打印所有匹配结果。等效于 apropos printf.
man -f smail
查找 smail 引用的手册页并输出找到的所有概述。等效于 whatis smail.
这里其实我们就已经初步了解了man的用法,剩下的就是应用了。
help函数的主要作用是用于获取“帮助”信息,命令的基本结构是 help [-dms] [模式 ...]
输出help help获取help的帮助。
help: help [-dms] [模式 ...]
//这里解释一下[-dms]的意思也就是[OPTION]的选项有三个 -d -m 和 -s 我们可以从下面的
显示内建命令的相关信息。
显示内建命令的简略信息。如果指定了 <模式>,给出所有匹配 <模式>
的命令的详细帮助,否则打印帮助主题列表。
选项:
-d 输出每个主题的简短描述
-m 以伪 man 手册的格式显示用法
-s 仅对每一个匹配 <模式> 的主题输出简短的用法提要
参数:
模式 用来确定帮助主题的模式
退出状态:
返回成功,除非没有找到 <模式>,或者使用了无效的选项。
其实我们看上面的解释就能很好地使用help了。
在学习help用法的时候,我们可不可以输入man help
指令查看help的手册呢?答案是不可以。
为什么呢?
为了理解以上一段话,我们首先得知道内建命令和外部命令。
定义:内建命令是直接嵌入到Shell解释器中的命令。它们不是独立的可执行文件,而是Shell的一部分。
执行位置:在Shell解释器中执行,而不需要启动新的进程。
性能:通常比外部命令执行得更快,因为它们不需要启动额外的进程。
例子:cd、echo、pwd 是Bash中的内建命令。
定义:外部命令是独立的可执行文件,存储在文件系统中的某个位置。它们不是Shell解释器的一部分。
执行位置:需要启动新的进程,通过调用外部命令的可执行文件来执行。
性能:相对较慢,因为需要创建新的进程。
例子:ls、grep、cp 是外部命令,它们通常存储在系统的可执行文件路径中。
我们使用type命令来查找一个命令是内建命令还是外部命令。type命令非常简单,就不赘述了,在这里我们可以先使用type type
查看type的命令类型,然后决定使用man还是help自学type。
--help
可以在一定程度上解决man和help在内建命令和外部命令的尴尬问题,无论是以上的哪一种命令,都可以使用[command] --help
获取帮助。