本文是面向linux的新手,内容很杂,很乱,讲的也很拖沓。如果内容有错误,欢迎各路高手予以指正。
使用的操作系统是Ubuntu Linux 10.04 LTS,使用的Terminal是gnome-terminal。
文章的开始肯定是枯燥无聊的基础知识。但是这些知识,我觉得有必要知道。
一、什么是目录?
这个……其实我也不知道怎么解释。目录就是Windows下的文件夹呗。
二、目录结构
Windows下管C:\,D:\,E:\,F:\……叫做根目录。(我很好奇,如果在Windows下分区超过26个会是什么结果?好吧,我承认,我完全不会用Windows。)也就是说,Windows的目录结构有多个根目录。从C:\想要访问D:\中的内容要首先切换到D:\才可以进行访问。
Linux的目录只有一个根目录,它的名字叫“/”。没错,只有一个斜杠“/”。Linux的文件系统通过“挂载”的方式来处理多个分区。(详细请查询“文件系统”和“挂载”相关资料。)
三、绝对路径、相对路径
绝对路径是指从根目录开始的路径,它在系统中是唯一的。
相对路径是指当前位置开始的路径。它与当前的位置有关。
在Linux中,区分绝对路径和相对路径的方法很简单,以“/”开头的(也就是以根目录开始的)路径就是绝对路径,其它的是相对路径。
例如,当前位置是/usr。
1、如果进入bin目录,那么此时的当前目录是/usr/bin目录。
2、如果我进入/bin目录,那么此时的当前目录是/bin目录。
如何进入一个目录?一会再说,别着急。
好了,该介绍的都介绍完了,应该没啥要说的了吧?那么下面进入正题。
首先介绍一个命令:pwd。
您可以先试一下,在Terminal里面输入pwd,回车。输出了什么?
是的,就是当前工作目录。
我们“男人”一下,在Terminal里面输入man pwd看看。man里面对pwd的简介是:
pwd - print name of current/working directory |
看起来pwd很简单,就是输出当前/工作目录的名字。
pwd有两个和软链接有关的选项,在这不作介绍。感兴趣的同学可以自己研究。(请查询“软链接”相关资料)
我们在此不区分“当前目录”与“工作目录”,暂时认为这两个是同一个概念。
那么,第一个问题:pwd命令是如何知道当前目录是哪个呢?
答案在man里面说的很清楚:环境变量。
我们在Terminal里面输入env,回车。输出了什么?
很多东西是吧?有点乱。请仔细找一下,里面有以“PWD=”开头的一行。等号后面的是什么?
我们发现,这和pwd命令输出的内容是一样的。
实际上,pwd的原理就是输出环境变量中的PWD变量的值。
哎?环境变量是什么?其实我也不知道。环境变量有一大堆(就是env命令输出的那一堆),它们会在Terminal启动的时候被初始化,在Terminal关闭的时候消失。它们在某种程度上表示了Terminal当前的状态及系统中相关的设置。
并且,Linux中有很多命令会用到环境变量中某些变量的内容。
那么我们今天暂时不去管其它的环境变量,只看一下和“工作目录”有关的环境变量。我们用grep命令把env输出中的PWD字串筛选出来。(请自行学习shell中有关“管道”和“grep命令”的相关知识)。
env | grep 'PWD'
现在,我们改变一下工作目录。改变工作目录的命令是cd。cd就是change directory的缩写,用来改变当前工作目录。
cd /usr
我们把当前工作目录改成了“/usr”。首先,我们发现命令提示符前面的冒号':'后面的字符串也发生了改变。(请查询“linux shell 命令提示符”的相关资料)原来是:
:~$
现在变成了:
:/usr$
现在,我们查看一下环境变量中的PWD的值。
env | grep 'PWD'
我们发现,PWD变量的值已经变成了/usr。但是,我们同时发现,环境变量中多出来一个叫OLDPWD的变量,它的值是我们“cd /usr”之前PWD变量的值。并且从它的名字中我们也能看出,OLDPWD就是原来的PWD的值。
那么实践一下刚才我们在讲到绝对目录和相对目录时提到的事情:
相对目录:
cd /usr
cd bin
pwd
此时输出的是/usr/bin。
cd /usr
cd /bin
pwd
此时输出的是/bin。
这里有一个疑问。当“cd bin”时,cd命令是进入“当前目录”下的“bin”目录。那么,cd命令是如何知道“当前目录”是什么的?
答案是:环境变量。
cd命令是通过环境变量中PWD变量的值来获取“当前目录”的。
这里,介绍两个cd命令的特殊用法。“cd -”(这个是减号)和“cd ~”(这个是波浪线,键盘上“1”左边的那个键上面的那个字符)。
“cd -”是后退命令。还记得环境变量中有个叫“OLDPWD”的变量不?cd -就是进入OLDPWD变量保存的路径。
两次cd -是后退的后退吗?不是。你可以自己试一下,两次cd -它又回来了,而不是上上次的路径。
“cd ~”是进入“家目录”。每个用户都有一个“家目录”。一般情况下,用户的家目录是/home下有一个以用户名为名称的目录。“家目录”中保存的是用户的一些相关设置。
除了cd以外,很多需要查找文件或目录的命令都会首先在当前目录下寻找。关于当前目录的概念就先介绍这么多。
如果有什么错误或者希望与本人交流,可以与本人联系。