关于linux的工作目录

    本文是面向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以外,很多需要查找文件或目录的命令都会首先在当前目录下寻找。关于当前目录的概念就先介绍这么多。

    如果有什么错误或者希望与本人交流,可以与本人联系。

你可能感兴趣的:(关于linux的工作目录)