
1.3 命令行及常用命令的使用
Linux系统经过多年发展,桌面环境变得更加绚丽,并且增加了不少优秀的GUI工具,但要想深入Linux核心领域,还是需要熟练掌握命令行。
进入命令行界面主要有以下两种方式。
(1)字符界面登录方式:默认开机后直接进入CLI界面。
(2)虚拟控制台方式:在GNOME环境中选择“Terminal”选项,调出虚拟终端,如图1-3所示。
学习Linux操作其实就是学习各种命令的使用,通过各种命令来完成不同的任务。在学习命令操作之前,有必要了解命令行的构成。虚拟终端由Shell程序提供。Shell有很多种类,Linux中默认使用的是Bash Shell。
不同的用户在登录系统时,Shell的提示符也不同。如果是普通用户登录,则提示符为“$”。


图1-3 虚拟终端
如果是root用户(系统管理员)登录,则提示符为“#”。

如何在CLI界面中输入命令呢?这就需要学习命令的语法格式。Bash Shell语法格式通常由命令、选项、参数这三部分组成。
“命令”非常好理解,就是后面各个章节要介绍的不同命令。“选项”和“参数”可有可无。“选项”是为了扩充“命令”的功能而存在的。
当“选项”为一个字母时,前面要加一个连字符“-”;当“选项”为一个单词时,前面要加两个连字符“--”。如果有多个字母同时作为“选项”,则可以在所有字母前面只加一个连字符,如“-abc”,也可以写成“-a-b-c”。
注意,“命令”“选项”“参数”之间至少要有一个空格。这是很多初学者容易忽略的地方。下面通过例子来说明命令的语法格式。
当运行ls命令时,会列出当前目录下的内容。其中,anaconda-ks.cfg和initial-setup-ks.cfg是两个文件的名称。

但ls命令只是简单地把当前目录下文件的名称显示出来,如果想查看两个文件的属性信息,就必须为ls命令追加一个“-l”选项(通过man查询ls命令的帮助信息)。

可以看到,还是刚才那两个文件,但这时把这两个文件的名称及属性信息同时显示出来了。因此,“-l”选项的作用是扩展ls命令的功能。
那么,“参数”如何理解呢?例如,只想查看anaconda-ks.cfg这一个文件的属性信息时,可以使用下面的命令。

在输出中,anaconda-ks.cfg这个文件名就是整条命令中的“参数”。
任何用户都必须使用正确的登录密码才可以访问系统。登录成功后,可以使用passwd命令修改账户密码。使用passwd命令时需要注意两点:第一,系统管理员(root用户)可以为每个用户(包括自己)修改密码,而且不需要满足密码的复杂性;第二,普通用户只能为自己修改密码,而且必须满足密码的复杂性。

上面的代码表示,通过root用户为普通用户修改密码,虽然没有满足密码的复杂性,但依然可以修改成功。
在命令行中,可以通过按Tab键补齐命令和文件名。
当按一次Tab键就可以补齐时,说明此命令或文件名是唯一的;如果按两次才可以补齐,说明此命令或文件名不是唯一的。例如,输入sys后,按两次Tab键,就有下面的输出。

有时需要对文件中的内容进行统计,如统计单词数量、行号等。这时需要使用wc命令。它有几个常用的选项:“-l”表示统计行号;“-w”表示统计单词数量;“-c”表示统计字节。

对于Linux系统有句非常著名的话——一切皆为文件。这说明当人们在操作各种对象时,实际上是操作各种文件。因此,对文件类型的确定显得非常重要,Linux系统的文件类型会在后面的章节中介绍,这里只介绍一个能够分辨文件类型的命令—file。
在file命令后面直接加上文件名就可以分辨出文件的类型。

对于每个曾经登录过系统的用户,系统都会为之保存一份命令记录,使用history命令可以查看这些历史命令。

上面的输出显示了用户edward曾经输入的命令。系统默认记录1000条历史命令。如果要清空一个用户的历史记录,可以使用“history-c”命令。注意,历史记录是基于每个用户的,上述命令只能清空当前用户的历史记录。
如果想执行某条历史记录,可以用!加上数字,而!!表示执行最近的一条历史记录。历史记录支持搜索模式,可以在若干条记录中查询到曾经输入的命令。按Ctrl+R组合键可进入搜索模式。

进入搜索模式后,输入某个字母,如上述代码中的f,则从最近的以f开头的命令进行查询。