第五章 命令的使用
第五章 命令的使用
前言
- 本章中介绍的命令如下:
- 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