第五章 命令的使用
第五章 命令的使用
前言
- 本章中介绍的命令如下:
 
- type: 说明如何解释命令名
 - which: 显示会执行哪些可执行程序
 - man: 显示命令的手册页
 - apropos: 显示一系列合适的命令
 - info: 显示命令的info条目
 - whatis: 显示一条命令的简述
 - alias: 创建一条命令的别名
 
命令类型
- 可执行程序
 
- 可执行程序就像在 /usr/bin 目录里看到的所有文件一样。
 - 在该程序类别中,程序可以编译为二进制文件,比如 C、C++ 语言编写的程序,也可以是 Shell、Perl、Python、Ruby 等脚本语言编写的程序。
 
- shell 内置命令
 
- bash 支持许多在内部称之为 shell builtin 的内置命令。
 
- shell 函数
 
- shell 函数是合并到环境变量中的小型 shell 脚本。
 
- alias 命令
 
- 我们可以在其他命令的基础上定义自己的命令。
 
识别命令
基本介绍
- 能够准确地识别我们使用的命令是上述 4 种命令类型中的哪一种是很有用的。
 
type - 显示命令的类型
type 命令是一个 shell 内置命令,可根据指定的命令名显示 shell 将要执行的命令类型。格式如下:
1
type command
这里的 command 是想要查看的命令名。一些实例如下所示:
1
2
3
4
5
6[me@linux ~]$ type type
type is s shell builtin
[me@linux ~]$ type ls
ls is aliased to 'ls --color=tty'
[me@linux ~]$ type cp
cp is /bin/cp
which - 显示可执行程序的位置
- 有时候,系统可能会安装了一个可执行程序的多个版本。这种现象虽然在桌面系统中不常见,但是在大型服务器中却是很常见。
 - 使用 which 命令可以确定一个给定可执行文件的准确位置
1
2[me@linuxbox ~]$ which ls
/bin/ls - which 命令只适用于可执行程序,而不适用于内置命令和命令别名 (真正可执行程序的替代物) 。
 - 试图在 shell 内置命令中使用 which 命令时,要么没有响应,要么得到一条错误信息。
 
获得命令文档
help - 获得 shell 内置命令的帮助文档
- bash 为每一个 shell 内置命令提供了一个内置的帮助工具。输入 help ,然后输入 shell 内置命令的名称即可使用该帮助工具
1
[me@linuxbox ~]$ help cd
 
man - 显示程序的手册页
- man 基本介绍
 
- 大多数供命令行使用的可执行文件,提供了一个称之为 manual 或者是 man page 的正式文档。
 - 该文档可以用一种称为 man 的特殊的分页程序来查看,用法如下:
1
man program
 - 手册文档在格式上会有所不同,但通常都包括标题、命令句法的摘要、命令用途的描述、命令选项列表以及每个命令选项的描述。
 - 例如,尝试查看 ls 命令的手册文档
1
[me@linuxbox ~]$ man ls
 - 在大多数 Linux 系统中,man 命令调用 less 命令来显示手册文档。所以,当显示手册文档时,你熟悉的所有 less 命令都能奏效
 - man 命令显示的手册文档被分成多个部分,它不仅包括用户命令,也包括系统管理命令、程序接口、文件格式等
 
- man 手册文档的组织结构
 
| 部分 | 内容 | 
|---|---|
| 1 | 用户命令 | 
| 2 | 内核系统调用的程序接口 | 
| 3 | C 库函数程序接口 | 
| 4 | 特殊文件,如设备节点和驱动程序 | 
| 5 | 文件格式 | 
| 6 | 游戏和娱乐,例如屏幕保护程序 | 
| 7 | 其他杂项 | 
| 8 | 系统管理命令 | 
apropos - 显示合适的命令
- 我们有可能会搜索参考手册列表,才进行基于某个搜索条目的匹配。尽管有些粗糙,但是这种方法又是还是很有用的。
1
[me@linuxbox ~]$ apropos floppy
 
whatis - 显示命令的简要描述
- whatis 程序显示匹配具体关键字的手册页的名字和一行描述。
1
[me@linuxbox ~]$ whatis ls
 
info - 显示程序的 info 条目
- info 基本介绍
 
- GNU 项目提供了 info 页面来替代手册文档。
 - info 页面可通过 info 阅读器来显示。
 - info 页面使用超链接,这与网页结构很相似。
 - info 程序读取 info 文件,该文件是树形结构,分为各个单独的节点,每一个节点包含一个主题。
 - info 文件包含的超链接可以实现节点间的跳转。
 - 通过前置星号可以识别超链接,将光标放在超链接上并按 Enter 键,可以激活它。
 - 可以通过输入 info 以及程序名来调用 info 。
 - 到目前为止,我们讨论的大部分命令行程序都是 GNU 项目 coreutils 包的一部分,输入以下内容可以看到更多信息。
1
[me@linuxbox ~]$ info coreutils
 
- info 页面控制指令
 
| 命令 | 功能 | 
|---|---|
| ? | 显示命令帮助 | 
| PAGE UP or BACKSPACE | 返回上一页 | 
| PAGE DOWN or Space | 翻到下一页 | 
| n | Next - 显示下一个节点 | 
| p | Previous - 显示上一个节点 | 
| u | Up - 显示目前显示节点的父节点 | 
| ENTER | 进入光标所指的超链接 | 
| q | 退出 | 
README 和其他程序文档文件
- 系统中安装的很多软件包都有自己的文档文件,它们存放在 /usr/share/doc 目录中。
 - 其中大部分文档文件是以纯文本格式存储的,因此可以用 less 命令来查看。有些文件是 HTML 格式,并且可以用 Web 浏览器来查看。
 - 我们可能会遇到一些以 .gz 扩展名结尾的文件。这表明它们是使用 gzip 压缩程序压缩过。
 - gzip 包包含一个特殊的 less 版本,称之为 zless 。
 - zless 可以显示由 gzip 压缩的文本文件的内容。
 
使用别名创建自己的命令
- alias 基本介绍
 
我们可以通过使用分号来分隔多条命令,就可以将多条命令输入在一行中。其工作方式如下:
1
command1;command2;command3...
我们将要使用的例子如下:
1
2
3
4
5[me@linuxbox ~]$ cd /usr;ls;cd -
bin games kerberos lib64 local share tmp
etc include lib libexec sbin src
/home/me
[me@linuxbox ~]$可以看到,我们将 3 条命令放置在同一行中。首先我们将当前目录改变成 /usr ,然后列出这个目录内容,最后返回到原始目录 (使用 cd- ) 。那么程序结束的位置恰恰是开始的位置
我们通过使用 alias 命令将以上命令整合成一条新的命令。首先要为新命令虚构出一个名称,试试名称 test 。不过输入前,我们最好检查一下名称 test 是否已经被使用过了。
1
2[me@linuxbox ~]$ type test
test is a shell builtin这个名字已经用过了,试试 foo 。
1
2[me@linuxbox ~]$ type foo
bash:type:foo:not found下面创建新命令的别名
1
[me@linuxbox ~]$ alias foo = 'cd /usr;ls;cd -'
上面的命令结构如下:
1
alias name='string'
在 alias 命令之后输入 name ,紧接着是一个等号 (没有空格) ,等号之后是一个用单引号括起来的字符串,该字符串中的内容赋值给 name
尝试别名命令
1
2
3
4
5[me@linuxbox ~]$ foo
bin games kerberos lib64 local share tmp
etc include lib libexec sbin src
/home/me
[me@linuxbox ~]$再次使用 type 命令来查看别名。
1
2[me@linuxbox ~]$ type foo
foo is aliased to 'cd /usr;ls;cd -'要删除别名,可以使用 unalias 命令,如下所示。
1
2
3[me@linuxbox ~]$ unalias foo
[me@linuxbox ~]$ type foo
bash:type:foo:nou found尽管我们有意避免使用已经存在的命名名称来给我们的别名命名,但有时也会期待这么做。这样做的目的是,为每一个经常调用的命令添加一个普遍会用到的选项
1
2[me@linuxbox ~]$ type ls
ls is aliased to 'ls --color=tty'查看环境中定义的所有别名,可使用不带参数的 alias 命令。以下是 Fedora 系统默认定义的一些别名
1
2
3
4[me@linuxbox ~]$ alias
alias l.='ls -d .* --color=tty'
alias ll = 'ls -l --color=tty'
alias ls = 'ls --color=tty'
参考文章
- 转载:Linux 命令行大全
 
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
 Comment
TwikooGitalk

