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会话结束时,这些别名也随之消失

在随后的章节中,将学习如何向文件中添加别名。每一次登录系统时,这些文件都会建立系统环境。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351