软件测试技术

当前位置:首页 > 软件测试技术

鸟哥的Linux私房菜 基础学习篇(第三版) (第七章)

第七章、Linux 档案与目录管理

在第六章我们认识了Linux系统下的档案权限概念以及目录的配置说明。在这个章节当中,我们就直接来进一步的操作与管理档案与目录吧!包括在不同的目录问变换、建立与删除目录建立与删除档案,还有寻找档案、查阅档案内容等等,都会在这个章节作个简单的介绍啊!

目录与路径:

由第六章Linux的档案权限与目录配置中透过FHS了解了Linux的[树状目录」概念之后,接下来就

得要实际的来搞定一些基本的路径问题了 !这些目录的问题当中,最重要的莫过于第六章也谈过的「绝

对路径」与[相对路径」的意义啦!绝对/相对路径的写法并不相同,要特别注意。此外,当你下达指

令时,该指令是透过什么功能来取得的?这与PATH这个变数有关呢!底下就让我们来谈谈哕!

相对路径与绝对路径:

在开始目录的切换之前,你必须要先了解一下所谓的「路径(PATH)」 ,有趣的是:什么是[相对路径」与「绝对路径」?虽然前一章已经稍微针对这个议题提过一次,不过,这里不厌其烦的再次的强调一下!

.绝对路径:路径的写法「一定由根目录/写起」,例如: /usr/share/doc这个目录。

●相对路径:路径的写法[不是由/写起」,例如由/usr/share/doc要到/usr/share/man底下时,可以写成: rcd ./manJ这就是相对路径的写法啦!相对路径意指[相对于目前工作目录的路径!」

相对路径的用途

那么相对路径与绝对路径有什么了不起呀?喝!那可真的是了不起了!假设你写了一一个软件,这个软件共需要三个目录,分别是etc, bin, man这三个目录,然而由于不同的人喜欢安装在不同的目录之下,假设甲安装的目录是/s/local/packages/etc, /usr/ocal/packages/bin及/usr/ocal/packages/man, 不过乙却喜欢安装在/home/packages/etc /home/packages/bin,/home/packages/man这三个目录中,请问如果需要用到绝对路径的话,那么是否很麻烦呢?是的!如此一来每个目录下的东西就很难对应的起来!这个时候相对路径的写法就显的特别的重要了!

此外,如果你跟鸟哥一-样 ,喜欢将路径的名字写的很长,好让自己知道那个目录是在干什么的,例如:/cluster/raid/output/taiwan2006/smoke这个目录,而另一一个目录在/cluster/raid/output/taiwan2006/cctm, 那么我从第一一个要到第二个目录去的话,怎么写比较方便?当然是「cd ./cctJ/比较方便哕!对吧!

●绝对路径的用途

但是对于档名的正确性来说,「绝对路径的正确度要比较好~」●-般来说,鸟哥会建议你,如果是在写程序(shell scripts)来管理系统的条件下,务必使用绝对路径的写法。怎么说呢 ?因为绝对路径的写法虽然比较麻烦,但是可以肯定这个写法绝对不会有问题。如果使用相对路径在程序当中,则可能由于你执行的工作环境不同,导致一些问题的发生。 这个问题在 工作排程(at, cron,第十六章)当中尤其重要!这个现象我们在十三章、shell script时,会再次的提醒你喔! A. A

目录的相关操作:

我们之前稍微提到变换目录的指令是cd,还有哪些可以进行目录操作的指令呢?例如建立目录啊、删除目录之类的~还有,得要先知道的,就是有哪些比较特殊的目录呢?举例来说,底下这些就是比较特殊的目录,得要用力的记下来才行:

新梦想IT职业教育

需要特别注意的是:在所有目录底下都会存在的两个目录,分别是I.J与「.J分别代表此层与上层目

录的意思。那么来思考一下底 下这个例题:

例题:

请问在Linux底下,根目录下有没有上层目录(.)存在?

答:

若使用「Is-al/J去查询,可以看到根目录下确实存在.与.两个目录,再仔细的查阅,

可发现这两个目录的属性与权限完全一致,这代表根目录的上一层(.)与根目录自己()是同

一个目录。

底下我们就来谈一谈几个常见的处理目录的指令吧:

cd :变换目录

pwd :显示当前目录

mkdir :建立一个新的目录

rmdir :删除一个空的目录

cd (变换目录)

我们知道vbird这个用户的家目录是/home/Nbird/,而root家目录则是/root/,假设我以root身份在Linux系统中,那么简单的说明一下这几个特殊的目录的意义是 :

新梦想IT职业教育

cd是Change Directory的缩写,这是用来变换工作目录的指令。注意,目录名称与cd指令之间存在-一个空格。一登入 Linux系统后,root会在root的家目录!那回到上一-层目录可以用「d..J●利用相对路径的写法必须要确认你目前的路径才能正确的去到想要去的目录。例如上表当中最后一一个例子,你必须要确认你是在/var/spool/mail当中,并且知道在/var/spool当中有个mqueue的目录才行啊~这样才能使用cd ./mqueue去到正确的目录说,否则就要直接输入cd /var/spool/mqueue椤~

其实,我们的提示字符,亦即那个[root@www ~]#当中,就已经有指出当前目录了,刚登入时会到自己的家目录,而家目录还有一个代码,那就是r~」符号!例如上面的例子可以发现,使用rcd~」可以回到个人的家目录里头去呢!另外,针对cd的使用方法,如果仅输入cd时,代表的就是Tcd~」的意思喔~亦即是会回到自己的家目录啦!而那个rcd-」比较难以理解,请自行多做几次练习,就会比较明白了。

Tips:

还是要一再地提醒,我们的Linux的默认指令列模式(bash shel)具有档案补齐功

能,你要常常利用[tab]按键来达成你的目录完整性啊!这可是个好习惯啊~可以

避免你按错键盘输入错字说~ A A

pwd (显示目前所在的目录)

新梦想IT职业教育

新梦想IT职业教育

pwd是Print Working Directory的缩写,也就是显示目前所在目录的指令,例如在上个表格最后的目录是/var/mail这个目录,但是提示字符仅显示mail,如果你想要知道目前所在的目录,可以输入pwd即可。此外,由于很多的套件所使用的目录名称都相同,例如/us/loca/etc还有/etc,但是通常Linux仅列出最后面那一个目录而已,这个时候你就可以使用pwd来知道你的所在目录哕!免得搞错目录,结果..

其实有趣的是那个-P的选项啦!他可以让我们取得正确的目录名称,而不是以链接文件的路径来显示的。如果你使用的是 CentOS 5x的话,刚刚好/var/mail是Nar/spool/mail的连结档,所以,透过到/var/mail下达pwd -P就能够知道这个选项的意义哕~ ^ ^

mkdir (建立新目录)


新梦想IT职业教育

新梦想IT职业教育

如果想要建立新的目录的话,那么就使用mkdir (make directory)吧!不过,在预设的情况下,你所需要的目录得一层一层的建立才行!例如:假如你要建立一一个目录为 home/bird/testing/test1,那么首先必须要有/home然后/home/bird, 再来/home/bird/testing都必须要存在,才可以建立/home/bird/testing/testl这个目录!假如没有/home/bird/testing时,就没有办法建立testl的目录哕!

不过,现在有个更简单有效的方法啦!那就是加上-p这个选项喔!你可以直接下达: r mkdir -p/home/bird/testing/testl」则系统会自动的帮你将/home, /home/bird, /home/bird/testing依序的建立起目录!并且,如果该目录本来就已经存在时,系统也不会显示错误讯息喔!挺快乐的吧!^ ^。不过鸟哥不建议常用-p这个选项,因为担心如果你打错字,那么目录名称就会变的乱七八糟的!

另外,有个地方你必须要先有概念,那就是[预设权限」的地方。我们可以利用-m来强制给予一个新的目录相关的权限,例如上表当中,我们给予-m 711来给予新的目录drwx--X的权限。不过,如果没有给予-m选项时那么默认的新建目录权限 又是什么呢?这个跟 umask有关,我们在本章后头会加以介绍的。

●rmdir (删除[空J的目录)

新梦想IT职业教育

如果想要删除旧有的目录时,就使用rmdir吧!例如将刚刚建立的test杀掉,使用「rmdir testJ即可!请注意呦!目录需要一一层一 一层的删除才行!而且被删除的目录里面必定不能存在其他的目录或档案!这也是所谓的空的目录(empty directory)的意思啊!那如果要将所有目录下的东西都杀掉呢? !这个时候就必须使用r rm -rtest」哕!不过,还是使用rmdir比较不危险!你也可以尝试以-p的选项加入,来删除上层的目录喔!


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~