在上篇博文中,我们搭建好了Linux的实验环境,并熟悉了在图形界面下的一些基本操作。但是Linux系统的强大之处并不在于图形界面,它的核心和精华是字符界面,也就是命令。尤其在服务器应用领域,很多Linux服务器甚至不需要提供显示器,对服务器的绝大部分管理、维护操作都是通过远程登录的方式进行的。图形界面虽然操作简单,但是需要占用更多的系统资源,不利于远程传输数据,而字符界面的效率则要高得多。所以要学好Linux,必得精通各种命令。
(1)Shell与命令提示符
在前面曾提到过,Linux系统的图形界面称为X Window,负责提供X Window功能的软件有GNOME和KDE,RHEL6中默认使用的是GNOME。与此类似,Linux系统的字符界面称为Shell,负责提供Shell功能的软件也有很多,如Bsh、Csh、Zsh……等,在RHEL6系统中默认使用的Shell称为Bash。Shell其实就是一个命令解释器,负责将我们输入的命令解释成内核能够理解的语言,再将需要执行的操作传递给Kernel去执行。
要进入Shell字符界面有很多种方式,对于初学者推荐两种方法:一种是利用上篇博文中介绍的远程登录工具putty,另一种是利用图形界面中的虚拟字符终端。为了使截图的效果更好一些,我之后的大部分操作都是在虚拟字符终端中进行的。
在虚拟字符终端中首先可以看到类似于“[root@localhost 桌面]#”形式的命令提示符。
命令提示符是Linux字符界面的标志,其中的“root”表示当前登录的用户账户名;“localhost”表示本机的主机名;“桌面“代表我们当前所在的位置,也就是工作目录;最后的“#”字符表示当前登录的是管理员用户,如果登录的是普通用户,则最后的“#”字符将变为“$”。
由于在Linux系统中,用户使用某个账号进行系统登录后,还可以使用相应的命令将用户身份转换为其他角色的用户,以实现不同权限的操作,因此命令提示符是用户判断当前身份状态的重要依据。
(2)命令的基本格式
Shell命令可由命令名、选项和参数三部分组成,其中方括号部分表示可选部分,其基本格式如下所示:
命令名 [选项] [参数]
命令名是描述命令功能的英文单词或缩写,在shell命令中,命令名必不可少,并且总是放在整个命令行的起始位置。
选项的作用是调节命令的具体功能,同一命令采用不同的选项,其功能各不相同。选项可以有一个,也可以有多个,当然也可能没有。选项通常以“-”开头,当有多个选项时,可以只使用一个“-”符号,如“ls –l –a”命令与“ls –al”命令功能完全相同。
参数是命令的处理对象,通常情况下参数可以是文件名、目录名或用户名等内容。
在Shell中,一行中可以键入多条命令,命令之间用“;”字符分隔。另外如果在一行命令后加上“\”符号,就表示另起一行继续输入。
在使用命令时需要注意,在Linux中命令区分大小写,即同一个命令,大写和小写代表不同的含义。另外可以使用Tab键对命令补全,以简化输入。通过上下方向键可以找出曾执行过的历史命令。
(3)根目录和主目录
下面我们来学习一个基本命令练练手。
pwd命令——查看当前的工作目录
pwd命令用于显示用户当前所在的工作目录位置,使用pwd命令可以不加任何选项或参数。
比如我们在命令提示符后面直接执行pwd命令,可以看到当前所在的工作目录为“/root/桌面”。
这里需要把“/root”这个目录解释一下。
“/”,是Linux系统的根目录,也是其它所有目录的起点。
“/root”,是根目录下面的一个子目录,它的用途是作为管理员root用户的主目录(也可以称为家目录)。
如果对根目录和主目录这两个概念不很理解的话,我们可以对比一下Windows系统。
比如Windows系统中的C盘会有一个根目录“C:\”,在这个根目录下面默认已经创建好了很多个子目录分别用来存放不同的数据。比如“C:\Windows”用来存放系统数据,“C:\Program Files”用过存放各种程序数据,“C:\Users\Administrator”则用来存放管理员用户administrator的各种个人数据,比如你桌面上的文件其实都是存放在这个目录里,所以“C:\Users\Administrator”就是administrator用户的主目录(在Windows系统里称为用户配置文件夹)。
Linux跟Windows的区别是:
在Windows中每个磁盘分区都会有一个对应的根目录,如“C:\”、“D:\”……等,而在Linux系统中永远只有一个根目录“/”,也就是说Linux系统中的目录结构是固定的,跟磁盘分区没有任何关系。
Windows中所有用户的用户配置文件夹都统一存放在“C:\Users”以用户名命名的子文件夹中,如用户“jerry”的用户配置文件夹是“C:\Users\jerry”,用户“natasha”的用户配置文件夹是“C:\Users\natasha”。Linux系统中所有用户的主目录都是集中存放在“/home”目录中,同样也是以用户名命名,如用户“jerry”的主目录是“/home/jerry”、用户“natasha”的主目录是“/home/natasha”。例外的是root用户,这个在Linux中具有至高无上权限的用户,他的主目录也是单独的“/root”,以示与其他普通用户的区别。
不知道这样解释大家明白了没有,我讲课的时候有个别同学直到期末考试了还是分不清根目录和主目录,我让在根目录下创建一个名为test的目录,应该是/test,他非要/root/test,真是让俺眼泪哗哗的啊。
(4)绝对路径和相对路径
接下来再学习一个基本命令cd。
cd命令——切换工作目录
cd命令用于切换工作目录。比如要将工作目录更改为/boot/grub,并使用pwd命令查看当前所处位置。
如果只是单纯执行cd命令,默认将返回到用户的主目录。
可以看到,当执行了cd命令后,命令提示符变成了“root@localhost ~”,其中的符号“~”就代指用户的主目录。
再如要切换到系统根目录,可以执行命令“cd /”。
在Linux系统中表示某个目录(或文件)的位置时,根据其参照的起始目录不同,可以使用两种不同的形式:相对路径和绝对路径。
绝对路径:这种方式以根目录“/”作为起点,如“/boot/grub”。因为Linux系统中的根目录只有一个,所以不管当前处于哪个目录中,使用绝对路径都可以准确地表示一个目录(或文件)所在的位置。但是如果路径较长,输入的时候会比较繁琐。
相对路径:这种方式一般以当前的工作目录作为起点,在开头不使用“/”符号,因此输入的时候更加简单。如“grub.conf”就表示当前目录下的grub.conf文件,而“/grub.conf”则表示根目录下的grub.conf文件。
所以,如果当前目录是“/root”,我要进入当前目录下的一个名为test的子目录中,可以使用相对路径“cd test”,也可以使用绝对路径“cd /root/test”。
对于初学者,建议在初始时尽量使用绝对路径,以便于理解和区分。
另外,在表示路径时还有两个特殊的符号:“.”和“..”。
“.”表示当前目录,例如“./grub.conf”也可以表示当前目录下的gurb.conf文件。
“..”表示以当前目录的上一级目录(父目录),例如若当前处于“/boot/grub”目录中,则“../vmlinuz”等同于“/boot/vmlinuz”。
大家可以考虑一下“cd ..”这个命令是什么意思?
对啦,就是进入到当前目录的上一级目录。