在这之前,我们已经知道了一系列神秘的命令,每个命令都有自己奇妙的 选项和参数。在这一章中,我们将试图去掉一些神秘性,甚至创建我们自己 的命令。这一章将介绍以下命令:
type – 说明一个命令名是如何被解释的(这里的“解释”是一个计算机术语,例如,解释型语言)
which – 显示会执行哪个可执行程序
man – 显示命令手册页
apropos – 显示一系列适合的命令
info – 显示命令 info
whatis – 显示一个命令的简洁描述
alias – 创建命令别名
到底什么是命令?
命令可以是下面四种形式之一:
一个可执行程序,就像我们所看到的位于目录/usr/bin 中的文件一样。 这一类程序可以是用诸如 C 和 C++ 语言写成的程序然后编译得到的二进制文件, 也可以是由诸如 shell,perl,python,ruby 等等脚本语言写成的程序。
一个内建于 shell 自身的命令。bash 支持若干命令,内部叫做 shell 内部命令 (builtins)。例如,cd 命令,就是一个 shell 内部命令。
一个 shell 函数。这些是小规模的 shell 脚本,它们混合到环境变量中。 在后续的章节里,我们将讨论配置环境变量以及书写 shell 函数。但是现在, 仅仅意识到它们的存在就可以了。
一个命令别名。我们可以定义自己的命令,建立在其它命令之上。
type - 显示命令的类型
type 命令是 shell 内部命令,它会显示命令的类型,给出一个特定的命令名(做为参数)。 它像这样工作:
type command
command 是你要检测的命令名。这里有些例子:
[me@linuxbox ~]$ type type
type is a shell builtins
[me@linuxbox ~]$ type ls
ls is aliased to `ls --color=tty`
[me@linuxbox ~]$ type cp
cp is /bin/cp
我们看到这三个不同命令的检测结果。注意,ls 命令(在 Fedora 系统中)的检查结果,ls 命令实际上 是 ls 命令加上选项”--color=tty”的别名。现在我们知道为什么 ls 的输出结果是有颜色的!
which - 显示一个可执行程序的位置
有时候在一个操作系统中,不只安装了可执行程序的一个版本。虽然在桌面系统中这并不普遍, 但在大型服务器中却很平常。为了确定所给定的执行程序的准确位置,使用 which 命令:
[me@linuxbox ~]$ which ls
/bin/ls
which 命令只对可执行程序有效,不包括内建命令和命令别名。 当我们试着使用 shell 内建命令时linux是什么系统,例如,cd 命令,我们或者得不到回应,或者是个错误信息:
[me@linuxbox ~]$ which cd
/usr/bin/which: no cd in
(/opt/jre1.6.0_03/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/opt/jre1
.6.0_03/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/home/me/bin)
这些信息真正的意思就是“命令没有找到”。
得到命令文档
知道了什么是命令,现在我们来查找每一类命令的文档。
help - 得到 shell 内建命令的帮助文档
bash 有一个内建的 help 命令,可查找每一个 shell 内建命令的文档。输入“help”,接着是 shell 内部命令名。例如:
[me@linuxbox ~]$ help cd
cd: cd [-L|-P] [dir]
Change ...
注意:出现在命令语法说明中的方括号证的内容是可选的项目。一个竖杠字符 表示互斥选项。在上面 cd 命令的例子中:
cd [-L|-P] [dir]
这种表示法说明,cd 命令可以跟一个“-L”选项“-P”选项其中之一或者什么都不跟,“dir”也是可选参数。
虽然 cd 命令的帮助文档很简洁准确,但它决不是教程。正如我们所看到的,它似乎提到了许多 我们还没有谈论到的东西!不要担心,我们会学到的。
--help - 显示用法信息
许多可执行程序支持一个 --help 选项,这个选项是显示命令所支持的语法和选项说明。例如:
[me@linuxbox ~]$ mkdir --help
Usage: mkdir [OPTION] DIRECTORY...
Create ...
一些程序不支持 --help 选项,但不管怎样试一下。通常输出的错误提示也同样能 揭示命令的用法信息。
man - 显示用户手册
许多希望被命令行使用的可执行程序,提供了一个正式的文档,叫做手册或手册页(man page)。一个特殊的叫做 man 的分页程序,可用来浏览他们。它是这样使用的:
man program
“program”是要浏览的命令名。
手册文档的格式有点不同,一般地包含一个标题、命令语法的纲要、命令用途的说明、 以及每个命令选项的列表和说明。然而,手册文档通常并不包含实例,它打算 作为一本参考手册,而不是教程。作为一个例子red hat linux,浏览一下 ls 命令的手册文档:
[me@linuxbox ~]$ man ls
在大多数 Linux 系统中,man 使用 less 工具来显示参考手册,所以当浏览文档时,你所熟悉的 less 命令都能有效。
man 所显示的参考手册,被分成几个章节,它们不仅仅包括用户命令,也包括系统管理员 命令、程序接口、文件格式等等。下表描绘了手册的布局:
有时候,我们需要查看参考手册的特定章节,从而找到我们需要的信息。 如果我们要查找一种文件格式,而同时它也是一个命令名时,这种情况尤其正确。 没有指定章节号,我们总是得到第一个匹配项,可能在第一章节。我们这样使用 man 命令, 来指定章节号:
man section search_term
apropos - 显示适合的命令
我们也可以搜索全部参考手册来找到自己需要的命令,这个方法虽然很粗糙但有时很有用。 下面是一个以”floppy”为关键词来搜索参考手册的例子:
[me@linuxbox ~]$ apropos floppy
create_floppy_devices (8) - udev callout to create all possible
...
输出结果每行的第一个字段是手册页的名字,第二个字段展示章节。注意,man 命令加上”-k”选项, 和 apropos 完成一样的功能。、
whatis - 显示非常简洁的命令说明
whatis 程序显示匹配特定关键字的手册页的名字和一行命令说明:
最晦涩难懂的手册页
正如我们所看到的,Linux 和类 Unix 的系统提供的手册页,只是打算作为参考手册使用, 而不是教程。许多手册页都很难阅读,但是我认为由于阅读难度而能拿到特等奖的手册页应该是 bash 手册页。因为我正在为这本书做我的研究,所以我很仔细地浏览了整个 bash 手册,为的是确保我讲述了 大部分的 bash 主题。当把 bash 参考手册整个打印出来,其篇幅有八十多页且内容极其紧密, 但对于初学者来说,其结构安排毫无意义。
另一方面,bash 参考手册的内容非常简明精确,同时也非常完善。所以,如果你有胆量就查看一下, 并且期望有一天你能读懂它。
info - 显示程序 Info 条目
info 程序读取 info 文件,info 文件是树型结构,分化为各个结点,每一个包含一个题目。 info 文件包含超级链接,它可以让你从一个结点跳到另一个结点。一个超级链接可通过 它开头的星号来辨别出来linux命令使用视频教程,把光标放在它上面并按下 enter 键linux命令使用视频教程,就可以激活它。
输入”info”,接着输入程序名称,启动 info。当显示一个 info 页面时,下表中的命令 用来控制阅读器。
到目前为止,我们所讨论的大多数命令行程序,属于 GNU 项目”coreutils”包,所以输入:
[me@linuxbox ~]$ info coreutils
将会显示一个包含超级链接的手册页,这些超级链接指向包含在 coreutils 包中的各个程序。