第四章:开始接触命令行

为什么要使用命令行

现在,大多数的计算机用户只是熟悉图形用户界面(graphical user interface - GUI),并且产品供应商和此领域的学者会灌输给用户这样的思想, 命令行界面(command line interface - CLI)是过去使用的一种很恐怖的东西。这是非常错误的说法,特别是对需要做企业服务器管理工作的人来说,命令行界面是唯一的选择,事实上,那里没有GUI, 有人说“图形用户界面让简单的任务更容易完成, 而命令行界面使完成复杂的任务成为可能”,到现在这句话仍然很正确。

本站不打算花费时间胡扯任何GUI方面的内容,一方面我不懂,一方面也不需要,如果你确实对之感兴趣的话,大可以试装各类酷眩而SB的桌面。而本站将只会带你在命令行世界去领会Linux的牛逼与深邃

Linux的命令行:shell

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

启动终端,一旦它运行起来,我们应该看到一行像这样的文字:

[me@Linux7.com ~] $

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

小提示:如果提示符的最后一个字符是“#”, 而不是“$”, 那么这个终端会话就有超级用户权限。 这意味着,我们或者是以 root 用户的身份登录,或者是我们选择的终端仿真器提供超级用户(管理员)权限。我们会很快讲到用户、权限等内容的,这里,您只要大概知道$符号与#符号的不同含义就好了。

第一次键入命令

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

[me@Linux7.com ~] $ kdkjflajfks

因为这个命令没有任何意义,所以 bash 会提示该命令没有找到的错误信息,并回到提示符状态,等待我们下一个命令:

bash: kdkjflajfks: command not found

[me@Linux7.com ~] $

命令历史

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

移动光标

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

关于鼠标和光标

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

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

试试运行一些简单命令

现在,我们学习了怎样输入命令,那我们执行一些简单的命令吧。

第一个命令是 date。这个命令显示系统当前时间和日期。

[me@Linux7.com ~] $ date

Thu Oct 25 13:51:54 EDT 2007

一个相关联的命令,cal,它默认显示当前月份的日历,并高亮今天的日期:

[me@Linux7.com ~] $ 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:

[me@Linux7.com ~] $ 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。

[me@Linux7.com ~] $ free

total used free shared buffers cached
Mem: 2059676 846456 1213220 0
44028 360568
-/+ buffers/cache: 441860 1617816
Swap: 1042428 0 1042428

结束终端会话

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

[me@Linux7.com ~] $ exit

幕后控制台

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

拓展阅读

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

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

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

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