第07章-Linux 档案与目录管理.docx
《第07章-Linux 档案与目录管理.docx》由会员分享,可在线阅读,更多相关《第07章-Linux 档案与目录管理.docx(40页珍藏版)》请在三一办公上搜索。
1、第七章、Linux 档案与目录管理最近更新日期:2009/08/26 在第六章我们认识了Linux系统下的档案权限概念以及目录的配置说明。 在这个章节当中,我们就直接来进一步的操作与管理档案与目录吧!包括在不同的目录间变换、 建立与删除目录、建立与删除档案,还有寻找档案、查阅档案内容等等, 都会在这个章节作个简单的介绍啊! 1. 目录与路径1.1 相对路径与绝对路径1.2 目录的相关操作: cd, pwd, mkdir, rmdir1.3 关于执行文件路径的变量: $PATH2. 档案与目录管理2.1 档案与目录的检视: ls2.2 复制、删除与移动: cp, rm, mv2.3 取得路径的文
2、件名与目录名称3. 档案内容查阅:3.1 直接检视档案内容: cat, tac, nl3.2 可翻页检视: more, less3.3 资料撷取: head, tail3.4 非纯文本档: od3.5 修改档案时间与建置新档: touch4. 档案与目录的默认权限与隐藏权限4.1 档案预设权限:umask4.2 档案隐藏属性: chattr, lsattr4.4 档案特殊权限:SUID, SGID, SBIT, 权限设定4.3 观察文件类型:file5. 指令与档案的搜寻:5.1 脚本文件名的搜寻:which5.2 档案档名的搜寻:whereis, locate, find6. 极重要!权限与
3、指令间的关系:7. 重点回顾8. 本章习题9. 参考数据与延伸阅读10. 针对本文的建议:http:/phorum.vbird.org/viewtopic.php?t=23879 目录与路径:由第六章Linux的档案权限与目录配置中透过FHS了解了Linux的树状目录概念之后, 接下来就得要实际的来搞定一些基本的路径问题了!这些目录的问题当中,最重要的莫过于第六章也谈过的绝对路径与相对路径的意义啦! 绝对/相对路径的写法并不相同,要特别注意。此外,当妳下达指令时,该指令是透过什么功能来取得的? 这与PATH这个变数有关呢!底下就让我们来谈谈啰!相对路径与绝对路径: 在开始目录的切换之前,你必须
4、要先了解一下所谓的路径(PATH), 有趣的是:什么是相对路径与绝对路径? 虽然前一章已经稍微针对这个议题提过一次,不过,这里不厌其烦的再次的强调一下! 绝对路径:路径的写法一定由根目录 / 写起,例如: /usr/share/doc 这个目录。 相对路径:路径的写法不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ./man这就是相对路径的写法啦!相对路径意指相对于目前工作目录的路径! 相对路径的用途那么相对路径与绝对路径有什么了不起呀?喝!那可真的是了不起了!假设你写了一个软件, 这个软件共需要三个目录,分别是 etc,
5、bin, man 这三个目录,然而由于不同的人喜欢安装在不同的目录之下, 假设甲安装的目录是 /usr/local/packages/etc, /usr/local/packages/bin 及 /usr/local/packages/man ,不过乙却喜欢安装在 /home/packages/etc, /home/packages/bin, /home/packages/man 这三个目录中,请问如果需要用到绝对路径的话,那么是否很麻烦呢?是的! 如此一来每个目录下的东西就很难对应的起来!这个时候相对路径的写法就显的特别的重要了!此外,如果你跟鸟哥一样,喜欢将路径的名字写的很长,好让自己知道
6、那个目录是在干什么的,例如: /cluster/raid/output/taiwan2006/smoke 这个目录,而另一个目录在 /cluster/raid/output/taiwan2006/cctm ,那么我从第一个要到第二个目录去的话,怎么写比较方便? 当然是 cd ./cctm 比较方便啰!对吧! 绝对路径的用途但是对于档名的正确性来说,绝对路径的正确度要比较好。 一般来说,鸟哥会建议你,如果是在写程序 (shell scripts) 来管理系统的条件下,务必使用绝对路径的写法。 怎么说呢?因为绝对路径的写法虽然比较麻烦,但是可以肯定这个写法绝对不会有问题。 如果使用相对路径在程序当
7、中,则可能由于你执行的工作环境不同,导致一些问题的发生。 这个问题在工作排程(at, cron, 第十六章)当中尤其重要!这个现象我们在十三章、shell script时,会再次的提醒你喔! _目录的相关操作: 我们之前稍微提到变换目录的指令是cd,还有哪些可以进行目录操作的指令呢? 例如建立目录啊、删除目录之类的还有,得要先知道的,就是有哪些比较特殊的目录呢? 举例来说,底下这些就是比较特殊的目录,得要用力的记下来才行:. 代表此层目录. 代表上一层目录- 代表前一个工作目录 代表目前用户身份所在的家目录account 代表 account 这个用户的家目录(account是个账号名称)需要
8、特别注意的是:在所有目录底下都会存在的两个目录,分别是.与. 分别代表此层与上层目录的意思。那么来思考一下底下这个例题:例题: 请问在Linux底下,根目录下有没有上层目录(.)存在? 答: 若使用 ls -al / 去查询,可以看到根目录下确实存在 . 与 . 两个目录,再仔细的查阅,可发现这两个目录的属性与权限完全一致,这代表根目录的上一层(.)与根目录自己(.)是同一个目录。 底下我们就来谈一谈几个常见的处理目录的指令吧: cd:变换目录 pwd:显示当前目录 mkdir:建立一个新的目录 rmdir:删除一个空的目录 cd (变换目录)我们知道vbird这个用户的家目录是/home/v
9、bird/,而root家目录则是/root/,假设我以root身份在 Linux系统中,那么简单的说明一下这几个特殊的目录的意义是:rootwww # cd 相对路径或绝对路径# 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号啰!rootwww # cd vbird# 代表去到 vbird 这个用户的家目录,亦即 /home/vbirdrootwww vbird# cd # 表示回到自己的家目录,亦即是 /root 这个目录rootwww # cd# 没有加上任何路径,也还是代表回到自己家目录的意思喔!rootwww # cd .# 表示去到目前的上层目录,亦即是 /root 的
10、上层目录的意思;rootwww /# cd -# 表示回到刚刚的那个目录,也就是 /root 啰rootwww # cd /var/spool/mail# 这个就是绝对路径的写法!直接指定要去的完整路径名称!rootwww mail# cd ./mqueue# 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/mqueue 就这样写!cd是Change Directory的缩写,这是用来变换工作目录的指令。注意,目录名称与cd指令之间存在一个空格。 一登入Linux系统后,root会在root的家目录!那回到上一层目录可以用 cd . 。 利用相对路径的写法
11、必须要确认你目前的路径才能正确的去到想要去的目录。例如上表当中最后一个例子, 你必须要确认你是在/var/spool/mail当中,并且知道在/var/spool当中有个mqueue的目录才行啊 这样才能使用cd ./mqueue去到正确的目录说,否则就要直接输入cd /var/spool/mqueue啰其实,我们的提示字符,亦即那个 rootwww # 当中,就已经有指出当前目录了, 刚登入时会到自己的家目录,而家目录还有一个代码,那就是 符号! 例如上面的例子可以发现,使用 cd 可以回到个人的家目录里头去呢! 另外,针对 cd 的使用方法,如果仅输入 cd 时,代表的就是 cd 的意思喔
12、 亦即是会回到自己的家目录啦!而那个 cd - 比较难以理解,请自行多做几次练习, 就会比较明白了。Tips:还是要一再地提醒,我们的 Linux 的默认指令列模式 (bash shell) 具有档案补齐功能, 你要常常利用 tab 按键来达成你的目录完整性啊!这可是个好习惯啊 可以避免你按错键盘输入错字说 _ pwd (显示目前所在的目录)rootwww # pwd -P选项与参数:-P :显示出确实的路径,而非使用链接 (link) 路径。范例:单纯显示出目前的工作目录:rootwww # pwd/root = 显示出目录啦范例:显示出实际的工作目录,而非链接文件本身的目录名而已rootw
13、ww # cd /var/mail =注意,/var/mail是一个连结档rootwww mail# pwd/var/mail =列出目前的工作目录rootwww mail# pwd -P/var/spool/mail spool/mail# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail # 所以,加上 pwd -P 的选项后,会不以连结文件的数据显示,而是显示正确的完整路径啊!pwd是Print Working Directory的缩写,也就是显示目前所在目录的指令, 例如在上个表格最后的目录是/var/mail这个目录,但是提示字符仅
14、显示mail, 如果你想要知道目前所在的目录,可以输入pwd即可。此外,由于很多的套件所使用的目录名称都相同,例如 /usr/local/etc还有/etc,但是通常Linux仅列出最后面那一个目录而已,这个时候你就可以使用pwd 来知道你的所在目录啰!免得搞错目录,结果.其实有趣的是那个 -P 的选项啦!他可以让我们取得正确的目录名称,而不是以链接文件的路径来显示的。 如果你使用的是CentOS 5.x的话,刚刚好/var/mail是/var/spool/mail的连结档, 所以,透过到/var/mail下达pwd -P就能够知道这个选项的意义啰 _ mkdir (建立新目录)rootwww
15、 # mkdir -mp 目录名称选项与参数:-m :配置文件案的权限喔!直接设定,不需要看预设权限 (umask) 的脸色-p :帮助你直接将所需要的目录(包含上层目录)递归建立起来!范例:请到/tmp底下尝试建立数个新目录看看:rootwww # cd /tmprootwww tmp# mkdir test =建立一名为 test 的新目录rootwww tmp# mkdir test1/test2/test3/test4mkdir: cannot create directory test1/test2/test3/test4: No such file or directory = 没
16、办法直接建立此目录啊!rootwww tmp# mkdir -p test1/test2/test3/test4# 加了这个 -p 的选项,可以自行帮你建立多层目录!范例:建立权限为rwx-x-x的目录rootwww tmp# mkdir -m 711 test2rootwww tmp# ls -ldrwxr-xr-x 3 root root 4096 Jul 18 12:50 testdrwxr-xr-x 3 root root 4096 Jul 18 12:53 test1drwx-x-x 2 root root 4096 Jul 18 12:54 test2# 仔细看上面的权限部分,如果
17、没有加上 -m 来强制设定属性,系统会使用默认属性。# 那么你的默认属性为何?这要透过底下介绍的 umask 才能了解喔! _如果想要建立新的目录的话,那么就使用mkdir (make directory)吧! 不过,在预设的情况下, 你所需要的目录得一层一层的建立才行!例如:假如你要建立一个目录为 /home/bird/testing/test1,那么首先必须要有 /home 然后 /home/bird ,再来 /home/bird/testing 都必须要存在,才可以建立 /home/bird/testing/test1 这个目录!假如没有 /home/bird/testing 时,就没有
18、办法建立 test1 的目录啰!不过,现在有个更简单有效的方法啦!那就是加上 -p 这个选项喔!你可以直接下达: mkdir -p /home/bird/testing/test1 则系统会自动的帮你将 /home, /home/bird, /home/bird/testing 依序的建立起目录!并且, 如果该目录本来就已经存在时,系统也不会显示错误讯息喔!挺快乐的吧! _。 不过鸟哥不建议常用-p这个选项,因为担心如果妳打错字,那么目录名称就会变的乱七八糟的!另外,有个地方你必须要先有概念,那就是预设权限的地方。我们可以利用 -m 来强制给予一个新的目录相关的权限, 例如上表当中,我们给予
19、-m 711 来给予新的目录 drwx-x-x 的权限。不过,如果没有给予 -m 选项时, 那么默认的新建目录权限又是什么呢?这个跟 umask 有关,我们在本章后头会加以介绍的。 rmdir (删除空的目录)rootwww # rmdir -p 目录名称选项与参数:-p :连同上层空的目录也一起删除范例:将于mkdir范例中建立的目录(/tmp底下)删除掉!rootwww tmp# ls -l =看看有多少目录存在?drwxr-xr-x 3 root root 4096 Jul 18 12:50 testdrwxr-xr-x 3 root root 4096 Jul 18 12:53 tes
20、t1drwx-x-x 2 root root 4096 Jul 18 12:54 test2rootwww tmp# rmdir test =可直接删除掉,没问题rootwww tmp# rmdir test1 =因为尚有内容,所以无法删除!rmdir: test1: Directory not emptyrootwww tmp# rmdir -p test1/test2/test3/test4rootwww tmp# ls -l =您看看,底下的输出中test与test1不见了!drwx-x-x 2 root root 4096 Jul 18 12:54 test2# 瞧!利用 -p 这个选
21、项,立刻就可以将 test1/test2/test3/test4 一次删除# 不过要注意的是,这个 rmdir 仅能删除空的目录喔!如果想要删除旧有的目录时,就使用rmdir吧!例如将刚刚建立的test杀掉,使用 rmdir test 即可!请注意呦!目录需要一层一层的删除才行!而且被删除的目录里面必定不能存在其他的目录或档案! 这也是所谓的空的目录(empty directory)的意思啊!那如果要将所有目录下的东西都杀掉呢?! 这个时候就必须使用 rm -r test 啰!不过,还是使用 rmdir 比较不危险!你也可以尝试以 -p 的选项加入,来删除上层的目录喔!关于执行文件路径的变量:
22、 $PATH 经过第六章FHS的说明后,我们知道查阅文件属性的指令ls完整文件名为:/bin/ls(这是绝对路径), 那你会不会觉得很奇怪:为什么我可以在任何地方执行/bin/ls这个指令呢? 为什么我在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢? 这是因为环境变量 PATH 的帮助所致呀!当我们在执行一个指令的时候,举例来说ls好了,系统会依照PATH的设定去每个PATH定义的目录下搜寻文件名为ls的可执行文件, 如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先搜寻到的同名指令先被执行!现在,请下达echo $PATH来看看到底有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第07章-Linux 档案与目录管理 07 Linux 档案 目录 管理
链接地址:https://www.31ppt.com/p-1887939.html