05-命令的使用

作者: 見贤思齊_ | 来源:发表于2020-07-16 22:38 被阅读0次

    本章将介绍的命令如下:

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

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

    相关文章

      网友评论

        本文标题:05-命令的使用

        本文链接:https://www.haomeiwen.com/subject/ocrjhktx.html