tlcl-cn

什么是 shell

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

终端仿真器

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

第一次按键

好,开始吧。启动终端仿真器!一旦它运行起来,我们应该能够看到一行类似下面文字的输出:

[[email protected] ~]$

这叫做 shell 提示符,当 shell 准备好了去接受输入时,它就会出现。然而, 它可能会以各种各样的面孔显示,这则取决于不同的 Linux 发行版, 它通常包括你的用户名@主机名,紧接着当前工作目录(稍后会有更多介绍)和一个美元符号。

如果提示符的最后一个字符是“#”, 而不是“$”, 那么这个终端会话就有超级用户权限。 这意味着,我们或者是以根用户的身份登录,或者是我们选择的终端仿真器提供超级用户(管理员)权限。

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

[[email protected] ~]$ kaekfjaeifj

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

bash: kaekfjaeifj: command not found
[[email protected] ~]$

命令历史

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

移动光标

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

关于鼠标和光标

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

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

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

试试运行一些简单命令

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

[[email protected] ~]$ date
Thu Oct 25 13:51:54 EDT 2007

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

[[email protected] ~]$ cal
October 2007
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

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

[[email protected] ~]$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2             15115452   5012392   9949716  34% /
/dev/sda5             59631908  26545424  30008432  47% /home
/dev/sda1               147764     17370   122765   13% /boot
tmpfs                   256856         0   256856    0% /dev/shm

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

[[email protected] ~]$ free
total       used       free     shared    buffers     cached
Mem:       2059676     846456    1213220          0
44028      360568
-/+ buffers/cache:     441860    1617816
Swap:      1042428          0    1042428

结束终端会话

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

[[email protected] ~]$ exit

幕后控制台

即使,终端仿真器没有运行,几个终端会话仍然在后台运行着。它们叫做虚拟终端 或者是虚拟控制台。在大多数 Linux 发行版中,这些终端会话都可以访问, 按下 Ctrl-Alt-F1 到 Ctrl-Alt-F6 访问不同的虚拟终端。当一个会话被访问的时候, 它会显示登录提示框,我们需要输入用户名和密码。从一个虚拟控制台转换到另一个, 按下 Alt 和 F1-F6。返回图形桌面,按下 Alt-F7。

拓展阅读