在Linux中任何东西都可以表示为文件。目录是特殊类型的文件,它是保存其他文件的容器。为了找到重要的文件,需要介绍一些基本的命令和概念,它们告诉你当前所在的位置以及如何从一个目录切换到另一个目录。
最重要的命令是pwd命令、波浪形字符(~)和路径。使用波浪形字符(~)可以切换到用户的主目录;而路径是描述Linux目录树中位置的一个概念。
与它们紧密相关的是在执行命令时搜索的目录,它与一个名为PATH的环境变量有关。掌握了这些概念后,就可以用cd命令在目录之间切换。
1. pwd命令
在命令行接口,当前目录可能是顶层目录(即为根目录,用/表示),也可能是一个子目录。pwd命令可以确定当前目录。试试这个命令,它显示一个相对于顶层根目录(/)的目录名。有了这个信息,必要时我们就可以切换到其他目录。顺便指出,pwd是打印工作目录这三个单词的首字符(print working directory)(它与现代的打印机没有任何关系,而是对把输出打印到电传打字机的时代的致敬)。例如,当用户michael在自己的主目录中执行pwd命令时,会看到下面的输出信息:
2.波浪符(~)
使用标准的登录方式时,每个Linux用户都处于一个主目录中。波浪符(~)可以用来表示当前用户的主目录。例如,当用户john登录时,它处在/home/john主目录中。与此对应,root管理员用户的主目录是/root。
因此,cd ~命令的效果取决用户名。例如,如果以用户mj登录到系统,则cd ~命令导航到/home/mj目录,如果以root用户登录到系统,则此命令导航到/root目录。在目录树中任何位置都可以用ls ~命令列出自己主目录中的内容。稍后将介绍cd和ls命令的使用。当以root管理员用户登录到系统并执行ls命令,就会看到如下内容:
顺便指出,这些文件说明在安装过程中发生的事情,即安装了哪些程序包,在本地系统添加了哪些用户和组等。anaconda-ks.cfg命令是Kickstart自动安装的重要工具。
3.目录路径
使用Linux目录时需要掌握路径的两个基本概念:绝对路径和相对路径。绝对路径是从顶层目录(即root目录/)的角度来描述完整的目录结构。相对路径是以当前目录为基础。相对路径的最前面没有斜杠。
掌握绝对目录与相对目录的区别很重要。特别当运行一个命令时,绝对目录是必需的。否则引用错误目录的命令会导致意想不到的结果。例如,假如当前在顶层root目录,我们想用相对路径备份/home目录。如果恢复该备份时我们正好在/home目录中,则michael用户的文件就会恢复到/home/home/michael目录中。相反,如果用绝对路径备份/home目录,则在恢复这些备份文件时当前目录不起作用。备份数据会恢复到正确的目录中。
4.环境路径
严格来说,在执行一个命令时必须引用这个命令的完整路径。例如,既然ls命令是在/bin目录中,因此用户应该执行/bin/ls命令以列出当前目录中的文件。有了PATH环境变量,命令前不需要加上它的完整路径。当我们在命令行输入一个命令时,bash shell自动会在PATH环境变量的路径中搜索这个命令。从一个控制台切换到另一个控制台,环境变量始终保持不变。
为确定当前用户的PATH环境变量的内容,只需要执行echo $PATH命令。这会看到在屏幕上输出一系列目录。在RHEL 7中,普通用户的PATH变量与root用户的PATH变量的差别不大。
现在,普通用户与root用户的PATH变量包含的目录几乎完全相同,但是差别还是有的,那就是搜索目录的顺序。例如,,/usr/bin和/usr/sbin这两个目录都可以使用system-config-keyboard命令。从普通用户和root管理员用户PATH变量的默认内容可以看出,由于PATH变量存在的差别,两者的执行方法不一样。
PATH是由/etc/profile文件的当前设置参数或者/etc/profile.d目录中的脚本全局决定的。你可能注意到,系统为UserID(UID)0用户与其他所有用户配置的PATH内容不大一样。UID 0对应于root管理员用户。某个用户的PATH变量可以由该用户主目录中的一个适当的记录来加以定制,此隐藏文件名为~/.bash_profile或~/.profile。
5. cd命令
在Linux中切换目录非常容易。只要用cd并列出目标目录的绝对路径即可。如果使用相对路径,务必记住目标目录取决于当前目录。
默认情况下,单独使用cd命令可以导航到用户的主目录,该命令不需要波浪形符。另一个常用的快捷命令是两个连续的点字符(..),用于代表目录层次中的上一层目录。因此,cd..将移动到当前目录的父目录。