05-命令的使用

时间:2022-07-22
本文章向大家介绍05-命令的使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

本章将介绍的命令如下:

  • type:说明如何解释命令名。
  • which:显示会执行哪些可执行程序。
  • man:显示命令的手册页。
  • apropos:显示一系列合适的命令。
  • info:显示命令的 info 条目。
  • whatis:显示一条命令的简述。
  • alias:创建一条命令的别名。

一、究竟什么是命令

一条命令不外乎以下 4 种情况:

1.可执行程序

可执行程序就像在 /usr/bin 目录里看到的所有文件一样。 在该程序类别中,程序可以编译为二进制文件,比如C、C++语言编写的程序,也可以是 shell、Python等脚本语言编写的程序。

2.shell 内置命令

bash 支持许多在内部称之为 shell builtin 的内置命令。 例如:cd 命令就是 shell 内置指令。

3.shell 函数

shell 函数是合并到环境变量中的小型 shell 脚本

4.alias 命令

我们可以在其他命令的基础上定义自己的命令创建一条命令的别名

二、识别命令

能够准确地识别我们使用的命令是上述 4 种命令类型中的哪一种是很有用的。 为此,Linux 提供了 2 个方法来识别命令类型。

1.type - 显示命令的类型

type 命令是一个 shell 内置命令,可根据指定的命令名显示 shell 将要执行的命令类型

(1)格式

type command
​
#这里的 command 是想要查看的文件名。

(2)示例

type type
​
type ls
​
type cp

type命令示例.png

这里将看到 3 种不同命令的查看结果: ① type 是 shell 的内置命令。 ② ls 是 ls --color=tty 的别名。 ③ cp 是可执行程序。 需要注意的是,ls命令实际上是带有 --color=tty 选项的 ls 命令的别名。现在知道 ls 命令的输出为何会有颜色了。

2.which - 显示可执行程序的位置

有时,系统中可能会安装了一个可执行程序的多个版本。 这种现象虽然在桌面系统中不常见,但是在大型服务器中却是很常见的。

(1)which只适用于可执行程序

使用 which 命令可以确定一个给定可执行文件的准确位置

which ls
​
# 会给出 ls 的准确位置

which命令看可执行文件位置.png

(2)which不适用于内置命令和命令别名

which 命令只适用于可执行程序,而不适用于内置命令和命令别名(真正可执行程序的替代物)。 试图在 shell 内置命令(例如:cd)中使用 which 命令时,要么没有响应,要么得到一条错误信息。

which cd
​
# cd 是 shell 内置命令,所以要么没有响应,要么得到一条错误信息。

which命令看shell内置命令位置.png

三、获得命令文档

了解了什么是命令后,我们可以查看每一类命令的可用文档。

1.help - 获得 shell 内置命令的帮助文档

bash 为每一个 shell 内置命令提供了一个内置的帮助工具。 输入 help ,然后输入 shell 内置命令的名称即可使用该帮助工具。 例如:

help cd

help获shell内置命令帮助文档.png

注意表示法: 出现在命令语法描述中的方括号表示一个可选的选项。竖线符号代表的是两个互斥的选项。比如上图的 cd 命令:cd [-L|-P] [dir]。这种表示法说明,cd 命令后可能有一个 -L 参数,也可能是 -P 参数,甚至可以跟参数 dir 。 尽管 cd 命令的帮助文档简明而又准确,但这绝不是一个辅导教程,我们所可以看到,帮助文档中也提到了很多还没有学到的内容。

2.help - 显示命令的使用信息

很多程序都支持 --help 选项,--help 选项描述了命令支持的语法和选项

mkdir --help

--help选项.png

一些程序不支持 --help 选项,但是还是要试试。这通常会产生一条错误消息,该错误消息也能揭示相同的命令使用信息。

3.man - 显示程序的手册页

大多数供命令行使用的可执行文件,提供一个称之为 manual 或 man page 的正式文档。 该文档可用一种称为 man 的特殊分页程序来查看。

(1)格式用法

man program
​
# 这里的 program 是需要查看的命令名称。

手册文档在格式上会有所不同,但是通常都包含标题、命令句法的摘要、命令用途的描述、命令选项列表以及每个命令选项的描述。 但是,手册文档通常不包括实例,更多的是作为一个参考使用,而不是教程。例如:查看 ls 命令的手册文档。

① 实例
man ls

在大多数 Linux 系统中,man 命令调用 less 命令来显示手册文档。所以,当显示手册文档时,你熟悉的所有 less 命令都能奏效。

man查看ls手册文档.png

(2)手册文档的组织结构

man 命令现实的 手册文档 被分成多个部分,它不仅包括用户命令,也包括系统管理命令、程序接口、文件格式等。

部分

内容

1

用户命令

2

内核系统调用的程序接口

3

C 库函数程序接口

4

特殊文件,如设备节点和驱动程序

5

文件格式

6

游戏和娱乐,例如屏幕保护程序

7

其他杂项

8

系统管理命令

有时需要查看手册文档的具体部分,以查找我们需要的信息。 当我们所查找的一个文件格式,同时也是一个命令名的时候,这一点就尤为重要了。 如果没有指明部分编号,通常我们会获得第一次匹配的实例(它可能会出现在第一部分)。 为了指明具体在哪个部分,我们可以这样使用man命令。

① 格式

man section search_term

② 示例

man 5 passwd

该命令将显示文件 /etc/passwd 的文件格式描述手册。

man查看具体某一部分示例.png

4.apropos - 显示合适的命令

我们有可能会搜索参考手册列表,才进行基于某个搜索条目的匹配。尽管有些粗糙,但是这种方法有时还是很有用的,下面是一个使用 floppy 为搜索条目,来搜索参考手册的例子。

apropos floppy

apropos示例.png

在输出中,每一行的第一个字段是手册页的名称,第二个字段显示部分(section)。 注意带有 -k 选项的 man 命令与 apropos 命令在功能上基本是一致的。

5.whatis - 显示命令的简要描述

whatis 程序显示匹配具体关键字的手册页的名字和一行描述。

whatis ls

whatis示例.png

6.info - 显示程序的 info 条目

项目提高了info页面来代替手册,文档info页面可通过info阅读器来显示info页面行超链接,这与网页结构相很相似。

info

Info 程序读取 Info 文件,该文件是树形结构,分为各个单独的节点,每一个节点包含一个主题。Info 文件包含的超链接可以实现节点间的跳转。通过前置星号可以识别超链接,将光标放在超链接上并按 enter 键,可以激活它。

(1)info界面控制阅读器的命令

可以通过输入 info 以及程序名(可选的)来调用 info 。 下列是当显示 info 页面时,用于控制阅读器的命令。

命令

功能

?

显示命令帮助

PAGE UP or BACKSPACE

返回上一页

PAGE DOWN or Spacebar

翻到下一页

n

Next —— 显示下一个节点

p

Previous —— 显示上一个节点

u

Up——显示 当前显示节点的父节点(通常是一个菜单)

ENTER

进入光标所指的超链接

q

退出

到目前为止,所讨论的大部分命令行程序都是 GUN 项目 coreutils 包的一部分,输入以下内容可以看到更多信息。

info coreutils

info_coreutils.png

将会看到一个菜单页面,该菜单页面包含了 coreutils 包提供的每个程序的文档的超链接。

7.README和其他程序文档文件

系统种安装的很多软件包都有自己的文档文件,它们存放在 /usr/share/doc 目录中。 其中大部分文档文件是以纯文本格式存储的,因此可以用 less 命令来查看。 有些文件是 HTML 格式,并且可以用 Web 浏览器来查看。 我们可能会遇到一些以 .gz 为扩展名结尾的文件。这表明它们是使用 gzip 压缩程序压缩过的。gzip 包包含一个特殊的 less 版本,称为 zless。zless可以显示由 gzip 压缩的文本文件的内容。

四、使用别名创建自己的命令

可以使用 alias 命令来创建自己的命令。

1.小技巧

通过使用分号来分隔多条命令,就可以将多条命令输入在一行中。

(1)格式用法

command1;command2;command3...

① 示例

cd /usr;ls;cd-

我们将 3 条命令人放置在同一行中。 首先,我们将当前目录改变成 /usr,然后列出这个目录内容,最后返回到原始目录(cd-)。那么程序结束的位置恰恰是开始的位置。 现在,我们通过使用 alias 命令将以上命令整合成一条新的命令。首先要为新命令虚构出一个名称,试试名称test。不过输入前,我们最好检查一下名称 test 是否已经被使用过了。对此,我们可以使用 type 命令。

type test
# 被使用了
​
​
type foo
# 没有被使用过
​
alias foo='cd /usr;ls;cd-'
# 创建新命令

2.alias创建命令

(1)格式用法

alias name='string'

在 alias 命令之后输入 name ,紧跟着是一个等号(没有空格),等号之后是一个用单引号括起来的字符串,该字符串中的内容将赋值给 name。定义好的别名可以用在 shell 期待的任何地方

① 示例
​
foo
​
type foo
# 使用 type 命令来查看别名

3.unalias删除别名

unalias foo
# 将别名删除
​
type foo
# 使用 type 命令来查看别名 foo 是否还存在

尽管我们有意避免使用已经存在的命名名称来给我们的别名命名,但有时也会期待这么做。 这样做的目的是,为每一个经常调用的命名添加一个普遍会用到的选项。例如,前面讲到的为 ls 命令添加别名,已添加颜色支持。

type ls
​
# 可以看出 ls 其实是 ls --color=tty 的别名,ls添加颜色支持

4.查看所有别名

要查看在环境中定义的所有别名,可以使用不带参数的 alias 命令。

alias

5.命名别名存在的小问题

在命令行定义别名时还有一个小问题,当shell会话结束时,这些别名也随之消失。 在随后的章节中,将学习如何向文件中添加别名。每一次登录系统时,这些文件都会建立系统环境。