- 6.1 目录与路径(PATH)
- 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号啰!
- 代表去到dmtsai这个使用者的家目录,亦即/home/dmtsai
- 表示回到自己的家目录,亦即是/ root这个目录
- 没有加上任何路径,也还是代表回到自己家目录的意思喔!
- 表示去到目前的上层目录,亦即是/root的上层目录的意思;
- 表示回到刚刚的那个目录,也就是/root啰~
- 这个就是绝对路径的写法!直接指定要去的完整路径名称!
- 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/postfix 就这样写 |
- 看到这里应该知道为啥了吧?因为/var/mail是连结档,连结到/var/spool/mail
- 所以,加上pwd -P 的选项后,会不以连结档的资料显示,而是显示正确的完整路径啊! |
- 话说,系统告诉我们,没可能建立这个目录啊!就是没有目录才要建立的!见鬼嘛?
- 原来是要建test4上层没先建test3之故!加了这个-p的选项,可以自行帮你建立多层目录!
- 仔细看上面的权限部分,如果没有加上-m来强制设定属性,系统会使用预设属性。
- umask才能了解喔!^_^ |">那么你的预设属性为何?这要透过底下介绍的umask才能了解喔!^_^ |
- 瞧!利用-p 这个选项,立刻就可以将test1/test2/test3/test4 一次删除~
- 不过要注意的是,这个rmdir 仅能『删除空的目录』喔! |
- 6.2 文件与目录管理
6.1 目录与路径(PATH)
6.1.1 相对路径与绝对路径
- 绝对路径:路径的写法『一定由根目录/写起』,例如: /usr/share/doc这个目录。
相对路径:路径的写法『不是由/写起』,例如由/usr/share/doc要到/usr/share/man底下时,可以写成: 『cd ../man』这就是相对路径的写法啦!相对路径意指『相对于目前工作目录的路径!』
较特殊的目录
.代表此层目录..代表上一层目录-代表前一个工作目录~代表『目前使用者身份』所在的家目录~account代表account 这个使用者的家目录(account是个帐号名称)
6.1.2目录的相关操作:cd , pwd , mkdir , rmdir
- cd:变换目录
- pwd:显示目前的目录
- mkdir:建立一个新的目录
- rmdir:删除一个空的目录
cd (change directory, 变换目录)
| [dmtsai@study ~]$ su - #先切换身份成为root看看! [root@study ~]# cd [相对路径或绝对路径]
最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号啰!
[root@study ~]# cd ~dmtsai
代表去到dmtsai这个使用者的家目录,亦即/home/dmtsai
[root@study dmtsai]# cd ~
表示回到自己的家目录,亦即是/ root这个目录
[root@study ~]# cd
没有加上任何路径,也还是代表回到自己家目录的意思喔!
[root@study ~]# cd ..
表示去到目前的上层目录,亦即是/root的上层目录的意思;
[root@study /]# cd -
表示回到刚刚的那个目录,也就是/root啰~
[root@study ~]# cd /var/spool/mail
这个就是绝对路径的写法!直接指定要去的完整路径名称!
[root@study mail]# cd ../postfix
这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/postfix 就这样写 |
| —- |
pwd (显示目前所在的目录)
| [root@study ~]# pwd [-P] 选项与参数: -P :显示出确实的路径,而非使用连结(link) 路径。
范例:单纯显示出目前的工作目录: [root@study ~]# pwd /root <==显示出目录啦~
范例:显示出实际的工作目录,而非连结档本身的目录名而已 [root@study ~]# cd /var/mail <==注意,/var/mail是一个连结档 [root@study mail]# pwd /var/mail <==列出目前的工作目录 [root@study mail]# pwd -P /var/spool/mail <==怎么回事?有没有加-P差很多~ [root@study mail]# ls -ld /var/mail lrwxrwxrwx. 1 root root 10 May 4 17:51 /var/mail -> spool/mail
看到这里应该知道为啥了吧?因为/var/mail是连结档,连结到/var/spool/mail
所以,加上pwd -P 的选项后,会不以连结档的资料显示,而是显示正确的完整路径啊! |
| —- |
mkdir (建立新目录)
| [root@study ~]# mkdir [-mp]目录名称 选项与参数: -m :设定档案的权限喔!直接设定,不需要看预设权限(umask) 的脸色~ -p :帮助你直接将所需要的目录(包含上层目录)递回建立起来!
范例:请到/tmp底下尝试建立数个新目录看看: [root@study ~]# cd /tmp [root@study tmp]# mkdir test <==建立一名为test的新目录 [root@study tmp]# mkdir test1/test2/test3/test4 mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory
话说,系统告诉我们,没可能建立这个目录啊!就是没有目录才要建立的!见鬼嘛?
[root@study tmp]# mkdir -p test1/test2/test3/test4
原来是要建test4上层没先建test3之故!加了这个-p的选项,可以自行帮你建立多层目录!
范例:建立权限为rwx—x—x的目录 [root@study tmp]# mkdir -m 711 test2 [root@study tmp]# ls -ld test* drwxr-xr-x. 2 root root 6 Jun 4 19:03 test drwxr-xr-x. 3 root root 18 Jun 4 19:04 test1 drwx—x—x . 2 root root 6 Jun 4 19:05 test2
仔细看上面的权限部分,如果没有加上-m来强制设定属性,系统会使用预设属性。
那么你的预设属性为何?这要透过底下介绍的umask才能了解喔!^_^ |
| —- |
rmdir (删除『空』的目录)
| [root@study ~]# rmdir [-p]目录名称 选项与参数: -p :连同『上层』『空的』目录也一起删除
范例:将于mkdir范例中建立的目录(/tmp底下)删除掉! [root@study tmp]# ls -ld test <==看看有多少目录存在? drwxr-xr-x. 2 root root 6 Jun 4 19:03 test drwxr-xr-x. 3 root root 18 Jun 4 19:04 test1 drwx—x—x. 2 root root 6 Jun 4 19:05 test2 [root@study tmp]# rmdir test <==可直接删除掉,没问题 [root@study tmp]# rmdir test1 <==因为尚有内容,所以无法删除! rmdir: failed to remove ‘test1’: Directory not empty [root@study tmp]# rmdir -p test1/test2/test3/test4 [root@study tmp]# ls -ld test <==您看看,底下的输出中test与test1不见了! drwx—x—x. 2 root root 6 Jun 4 19:05 test2
瞧!利用-p 这个选项,立刻就可以将test1/test2/test3/test4 一次删除~
不过要注意的是,这个rmdir 仅能『删除空的目录』喔! |
| —- |
目录需要一层一层的删除才行!而且被删除的目录里面必定不能存在其他的目录或档案! 这也是所谓的空的目录(empty directory)的意思啊!
那如果要将所有目录下的东西都杀掉呢?!这个时候就必须使用『 rm -r test 』啰!不过,还是使用rmdir比较不危险!你也可以尝试以-p的选项加入,来删除上层的目录喔!
6.1.3 关于执行档路径的变数: $PATH
$PATH:记录可执行文件路径的环境变量。(变数 = 环境变量)
注意:
- 执行指令时,系统将依照PATH的设置前往每个PATH定义的目录下搜索同名的可执行文件;若有多个同名文件,将执行先搜索到的哪一个。
- 由一堆目录所组成,每个目录中间用“冒号
:”隔开,目录之间有顺序之分。 - 不同身份使用者默认的PATH不同,默认能够随意执行的指令也不同。
- 出于安全性,“本目录
.”不要放置PATH
6.2 文件与目录管理
6.2.1 文件与目录的检索:ls

| [root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目录名称.. [root@study ~]# ls [—color={never,auto,always}] 文件名或目录名称.. [root@ study ~]# ls [—full-time] 文件名或目录名称.. (不加“文件名或目录名称”代表当前目录) 选项与参数: -a :全部的文件,连同隐藏档(开头为.的文件)一起列出来(常用) -A :全部的文件,连同隐藏档,但不包括. 与.. 这两个目录 -d :仅列出目录本身,而不是列出目录内的文件资料(常用) -f :直接列出结果,而不进行排序(ls 预设会以文件名排序!) -F :根据文件、目录等资讯,给予附加资料结构,例如: :代表可执行档; /:代表目录; =:代表socket 文件; |:代表FIFO 文件; -h :将文件容量以人类较易读的方式(例如GB, KB 等等)列出来; -i :列出inode 号码,inode 的意义下一章将会介绍; *-l :长资料串列出,包含文件的属性与权限等等资料;(常用) -n :列出UID 与GID 而非使用者与群组的名称(UID与GID会在帐号管理提到!) -r :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小; -R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来; -S :以文件容量大小排序,而不是用文件名排序; -t :依时间排序,而不是用文件名。 —color=never :不要依据文件特性给予颜色显示; —color=always :显示颜色 —color=auto :让系统自行依据设定来判断是否给予颜色 —full-time :以完整时间模式(包含年、月、日、时、分) 输出 —time={atime,ctime} :输出access 时间或改变权限属性时间(ctime) 而非内容变更时间(modification time) |
|---|
6.2.2 复制、删除与移动: cp, rm, mv
cp (复制档案或目录)

| [root@study ~]# cp [-adfilprsu]来源档(source)目标档(destination) [root@study ~]# cp [options] source1 source2 source3 …. directory 选项与参数: -a :相当于-dr —preserve=all的意思,至于dr请参考下列说明;(常用) -d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身; -f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次; -i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用) -l :进行硬式连结(hard link)的连结档建立,而非复制文件本身; -p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用预设属性(备份常用); -r :递回持续复制,用于目录的复制行为;(常用) -s :复制成为符号连结档(symbolic link),亦即『捷径』文件; -u :destination 比source 旧才更新destination,或destination 不存在的情况下才复制。 —preserve=all :除了-p 的权限相关参数外,还加入SELinux 的属性, links, xattr 等也复制了。 最后需要注意的,如果来源档有两个以上,则最后一个目的档一定要是『目录』才行! |
|---|
复制(cp)这个指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是那个-a, -p的选项, 对于不同身份来说,差异则非常的大。
