一说到命令行,我们真正指的是 shell。shell 就是一个程序,它接受从键盘输入的命令, 然后把命令传递给操作系统去执行。几乎所有的 Linux 发行版都提供一个名为 bash 的 来自 GNU 项目的 shell 程序。“bash” 是 “Bourne Again SHell” 的首字母缩写, 所指的是这样一个事实,bash 是最初 Unix 上由 Steve Bourne 写成 shell 程序 sh 的增强版。

当使用图形用户界面时,我们需要另一个和 shell 交互的叫做终端仿真器的程序。 如果我们浏览一下桌面菜单,可能会找到一个。虽然在菜单里它可能都 被简单地称为 “terminal”,但是 KDE 用的是 konsole , 而 GNOME 则使用 gnome-terminal。 还有其他一些终端仿真器可供 Linux 使用,但基本上,它们都完成同样的事情, 让我们能访问 shell。也许,你可能会因为附加的一系列花俏功能而喜欢上某个终端。

终端仿真器

好,开始吧。启动终端仿真器!一旦它运行起来,我们应该看到一行像这样的文字:

  1. root@google-linux-vps:~#

这叫做 shell 提示符,无论何时当 shell 准备好了去接受输入时,它就会出现。然而, 它可能会以各种各样的面孔显示,这则取决于不同的 Linux 发行版, 它通常包括你的用户名@主机名,紧接着当前工作目录(稍后会有更多介绍)和一个美元符号。如果提示符的最后一个字符是“#”, 而不是“$”, 那么这个终端会话就有超级用户权限。 这意味着,我们或者是以 root 用户的身份登录,或者是我们选择的终端仿真器提供超级用户(管理员)权限。

假定到目前为止,所有事情都进行顺利,那我们试着键入字符吧。在提示符下敲入 一些像下面一样的乱七八糟的字符:

  1. [me@linuxbox ~]$ kaekfjaeifj

因为这个命令没有任何意义,所以 shell 会提示错误信息,并让我们再试一下:

  1. bash: kaekfjaeifj: command not found
  2. [me@linuxbox ~]$

命令历史

如果按下上箭头按键,我们会看到刚才输入的命令“kaekfjaeifj”重新出现在提示符之后。 这就叫做命令历史。许多 Linux 发行版默认保存最后输入的500个命令。 按下下箭头按键,先前输入的命令就消失了。

移动光标

可借助上箭头按键,来获得上次输入的命令。现在试着使用左右箭头按键。 看一下怎样把光标定位到命令行的任意位置?通过使用箭头按键,使编辑命令变得轻松些。

关于鼠标和光标

虽然,shell 是和键盘打交道的,但你也可以在终端仿真器里使用鼠标。X 窗口系统 (使 GUI 工作的底层引擎)内建了一种机制,支持快速拷贝和粘贴技巧。 如果你按下鼠标左键,沿着文本拖动鼠标(或者双击一个单词)高亮了一些文本, 那么这些高亮的文本就被拷贝到了一个由 X 管理的缓冲区里面。然后按下鼠标中键, 这些文本就被粘贴到光标所在的位置。试试看。

注意: 不要在一个终端窗口里使用 Ctrl-c 和 Ctrl-v 快捷键来执行拷贝和粘贴操作。 它们不起作用。对于 shell 来说,这两个控制代码有着不同的含义,它们在早于 Microsoft Windows (定义复制粘贴的含义)许多年之前就赋予了不同的意义。

你的图形桌面环境(像 KDE 或 GNOME),努力想和 Windows 一样,可能会把它的聚焦策略 设置成“单击聚焦”。这意味着,为了让窗口聚焦(变成活动窗口)你需要单击它。 这与“聚焦跟随着鼠标”的传统 X 行为不同,传统 X 行为是指只要把鼠标移动到一个窗口的上方。 它能接受输入, 但是直到你单击窗口之前它都不会成为前端窗口。 设置聚焦策略为“聚焦跟随着鼠标”,可以使拷贝和粘贴更方便易用。尝试一下。 我想如果你试了一下你会喜欢上它的。你能在窗口管理器的配置程序中找到这个设置。

试试运行一些简单命令

现在,我们学习了怎样输入命令,那我们执行一些简单的命令吧。第一个命令是 date。 这个命令显示系统当前时间和日期。

  1. root@google-linux-vps:~# date
  2. Fri Apr 27 16:13:48 UTC 2018
  3. root@google-linux-vps:~#

一个相关联的命令,cal,它默认显示当前月份的日历:

  1. root@google-linux-vps:~# cal
  2. April 2018
  3. Su Mo Tu We Th Fr Sa
  4. 1 2 3 4 5 6 7
  5. 8 9 10 11 12 13 14
  6. 15 16 17 18 19 20 21
  7. 22 23 24 25 26 27 28
  8. 29 30
  9. root@google-linux-vps:~#

查看磁盘剩余空间的数量,输入 df:

  1. root@google-linux-vps:~# df
  2. Filesystem 1K-blocks Used Available Use% Mounted on
  3. udev 859716 0 859716 0% /dev
  4. tmpfs 173472 17992 155480 11% /run
  5. /dev/sda1 30428648 5122888 25289376 17% /
  6. tmpfs 867352 0 867352 0% /dev/shm
  7. tmpfs 5120 0 5120 0% /run/lock
  8. tmpfs 867352 0 867352 0% /sys/fs/cgroup
  9. tmpfs 173472 0 173472 0% /run/user/1001
  10. root@google-linux-vps:~#

同样地,显示空闲内存的数量,输入命令 free:

  1. root@google-linux-vps:~# free
  2. total used free shared buff/cache available
  3. Mem: 1734708 135828 335220 18016 1263660 1345896
  4. Swap: 0 0 0
  5. root@google-linux-vps:~#

我们可以通过关闭终端仿真器窗口,或者是在 shell 提示符下输入 exit 命令来终止一个终端会话:

  1. fengzhao@google-linux-vps:~$ exit
  2. logout
  3. Connection closing...Socket close.
  4. Connection closed by foreign host.
  5. Disconnected from remote host(gcp) at 00:18:08.
  6. Type `help' to learn how to use Xshell prompt.
  7. [c:\~]$

拓展阅读

想了解更多关于 Steve Bourne 的故事,Bourne Shell 之父,读一下这篇文章:

https://en.wikipedia.org/wiki/Steve_Bourne

这是一篇关于在计算机领域里,shells 概念的文章:

https://en.wikipedia.org/wiki/Shell_(computing))