学会使用 Linux 命令

前面已经介绍了不少 Linux 系统下的命令了,但是命令这个概念还是比较模糊,有时叫命令,有时又叫可执行程序,有时叫软件,那到底有什么区别呢?还有许多命令还有复杂而神秘的命令行参数,加上参数后得到的结果和不加参数是不一样的。今天我们就再进一步学习一下命令,学会真正使用 Linux 命令。

今天要分享的内容如下:

  • type:命令的简单说明
  • which:显示会执行哪个可执行程序
  • man:显示命令手册页
  • apropos:显示一系列适合的命令(等价于:man -k
  • info:显示命令信息
  • whatis:显示一个命令的简洁描述
  • alias:创建命令别名

1. 到底什么是命令

命令有一下四种形式:

  • 是一个可执行程序,/usr/bin 目录下存储的文件就是可执行程序。 这些可执行程序都是不同编程语言开发出来的。
  • 是一个内建于 shell 自身的命令。Ubuntu 18.04 默认的 shell 是 Bash,Bash 有若干个内建的命令,如:cd 命令。
  • 配置在环境变量中的 shell 函数,这里先不要管什么是 shell 函数,后面我们学习 shell 编程的时候就会明白了。
  • 由 alias 创建的命令别名,其实我们之前一直使用的 ls 就是这样的一个命令,在 Ubuntu 18.04 上,我们执行 ls 命令,其实执行的是:ls --color=auto

那我们使用一个命令的时候,到底是上述四种命令中的哪一类呢?我们可以使用 type 来查看,用法是:type command。下图是一些例子:

学会使用 Linux 命令_第1张图片
20190325152139032_940614435.png

2. which

在 Linux 系统中,我们安装的软件有时不止一个版本,可能安装了好几个版本,那我们要运行这个软件的时候到底执行的是哪一个版本呢?这时候我们可以使用 which 命令来查看,用法是:which command,下图是一些例子:

学会使用 Linux 命令_第2张图片
20190325152630432_1403065033.png

不知大家有没有注意到,which cd 没有任何输出结果,在 Ubuntu 18.04 中,如果 which 后面跟的不是一个可执行程序,则不会返回任何信息。其实 which 只对可执行程序有效,不包括内建命令和命令别名,别名是真正的可执行程序的替代物。 当我们试着使用 shell 内建命令时,例如:cd ,就不会有任何返回。

3. 获取命令帮助文档

知道了什么是命令,我们再来看看怎么查看命令的帮助文档,也就相当于说明书啦,我们不知道怎么使用一个命令的时候,看看说明书是很有必要的。

3.1. help

help 是用来得到 shell 内建命令的帮助文档,用法:help command。例如:help cd

chaojun@ubuntu:~/file/code/alavening/ALD_A113X$ help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
    Change the shell working directory.

    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.

上面的内容我删除了一些,留下部分用来说明问题,[] 中的表示可选项,这里我们先不讨论 -L、-P、-e 的含义;| 表示互斥,比如选择了 -L 就不能在选择 -P。虽然 cd 命令的帮助文档很简洁准确,但它决不是教程。正如我们所看到的,它似乎提到了许多 我们还没有谈论到的东西!不要担心,我们会学到的。

3.2. --help

许多可执行程序支持一个 --help 选项,这个选项是显示命令所支持的语法和选项说明。例如:

chaojun@ubuntu:~/file/code/alavening/ALD_A113X$ mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.

Mandatory arguments to long options are mandatory for short options too.
  -m, --mode=MODE   set file mode (as in chmod), not a=rwx - umask
  -p, --parents     no error if existing, make parent directories as needed
  -v, --verbose     print a message for each created directory
  -Z                   set SELinux security context of each created directory
                         to the default type
      --context[=CTX]  like -Z, or if CTX is specified then set the SELinux
                         or SMACK security context to CTX
      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: 
Full documentation at: 
or available locally via: info '(coreutils) mkdir invocation'
chaojun@ubuntu:~/file/code/alavening/ALD_A113X$ 

上面是 mkdir 命令的帮助信息,但并不是所有的命令都有 --help 帮助信息。

3.3. man 手册

许多希望被命令行使用的可执行程序,提供了一个正式的文档,叫做手册或手册(man page)。一个特殊的叫做 man 的分页程序,可用来浏览他们。用法:man program

使用 man 手册查看帮助信息的时候,man 的输出信息会被重定向到 less 这个软件中,所以我们查看 man 手册的时候如何上下翻页使用的是 less 的快捷键,如果你忘记了 less 的快捷键,建议回头看看 一些对使用 Linux 系统有帮助的命令。

man 所显示的参考手册,被分成几个章节,它们不仅仅包括用户命令,也包括系统管理员命令、程序接口、文件格式等等。下面是每个章节的具体含义:

  • 1:用户命令
  • 2:程序接口内核系统调用
  • 3:C 库函数程序接口
  • 4:特殊文件,比如说设备结点和驱动程序
  • 5:文件格式
  • 6:游戏娱乐,如屏幕保护程序
  • 7:其他方面
  • 8:系统管理员命令

有时候,我们需要查看参考手册的特定章节,从而找到我们需要的信息。 比如我们要查找一种文件格式,而同时它也是一个命令名时,这种情况尤其需要指定章节号。没有指定章节号,我们总是得到第一个匹配项,可能在第一章节。指定章节号的用法是:man [1-8] program

4. apropos

当我们需要某种功能的命令或者可执行程序的时候,我们不知道有什么命令或者程序或者函数可以满足,这时候我们就可以使用 apropos 来模糊搜索匹配的命令或可执行程序或者函数,虽然很粗暴,但有时还是很有用的。

比如,我们要知道和 TCP 相关的信息,我们就可以 apropos tcp,如下图是返回结果:

学会使用 Linux 命令_第3张图片
20190325160332602_294594691.png

5. whatis

whatis 程序用来显示匹配特定关键字的手册页的名字和一行命令说明,例如:whatis ls。man 手册其实是很多而且晦涩难懂的,所以有时候我们可以使用 whatis 命令查看一下某个命令的简单描述。

6. info

GNU 项目提供了一个命令程序手册页的替代物,称为 "info"。info 内容可通过 info 阅读器程序读取。info 页是超级链接形式的,和网页很相似。下面是一个例子:

学会使用 Linux 命令_第4张图片
20190325161252469_849812512.png

看上去是不是很复杂,还要学习怎么使用 info 查看工具的快捷键,我看到就头大了,我是不想去了解了,放后面吧,如果其他帮助信息都找不到说明的时候再来看吧,当然如果你感兴趣可以先自己去找资料学习哦。

7. README 和其它程序文档

许多安装在你系统中的软件,都有自己的文档文件,这些文件位于 /usr/share/doc 目录下。 这些文件大多数是以文本文件的形式存储的,可用 less 阅读器来浏览。一些文件是 HTML 格式, 可用网页浏览器来阅读。我们可能遇到许多以 ".gz" 结尾的文件。这表示 gzip 压缩程序 已经压缩了这些文件。gzip 软件包包括一个特殊的 less 版本,叫做 zless,zless 可以显示由 gzip 压缩的文本文件的内容。

8. 用别名(alias)创建你自己的命令

现在是时候,感受第一次编程经历了!我们将用 alias 命令创建我们自己的命令。但在开始之前,我们需要展示一个命令行小技巧。可以把多个命令放在同一行上,命令之间 用”;”分开。例如:

cd /usr; ls; cd -

正如我们看到的,我们在一行上联合了三个命令。首先更改目录到 /usr,然后列出目录 内容,最后回到原始目录(用命令 cd -),结束在开始的地方。现在,通过 alias 命令 把这一串命令转变为一个命令。我们要做的第一件事就是为我们的新命令构想一个名字。 比方说 "test" 。在使用 "test" 之前,查明是否 "test" 命令名已经存在系统中,为了查清此事,可以使用 type 命令:type test,返回结果是:test is a shell builtin,噢哦,不行,那我们换一个吧,type foo,返回:bash: type: foo: not found,可以,foo 没有被占用,然后我们创建命令别名:alias foo='cd /usr; ls; cd -',现在我们就可以使用 foo 代替 cd /usr; ls; cd - 了。

如果不需要某个别名了,我们可以使用 unalias 删除,例如:unalias foo

注意:上面的操作知识临时生效的,终端模拟器关闭后就不生效了,后面的文章会介绍如何让它永久生效。

好了今天就分享到这里吧,内容比较多,希望大家不要为了阅读而阅读,而是要亲自去实践。即使你跟不上我更新的节奏,那也没关系,文章都可以永久免费阅读的,你慢慢挨着学习,相信你以后一定都能学会的。

欢迎关注微信公众号:eglinux,最新文章会在这个公众号首发,免费提供 CSDN 下载服务。

你可能感兴趣的:(学会使用 Linux 命令)