Linux之目录与路径

swency 2011-05-07

相对路径与绝对路径定义

绝对路径:路径是由根目录 / 开始的相对路径:相对于目前工作目录的路径

相对路径与绝对路径的优缺点

相对路径简单,但只能针对当前的工作目录绝对路径准确,但是写的内容较多

目录的相关操作

Linux系统上常见的一些符号

在开始操作目录前,先给大家介绍一些大家在Linux系统上常见的一些符号

.代表此层目录

..代表上一层目录

-代表前一个工作目录

~代表目前用户所在的家目录

注:

1、根目录/下的.与..是代表同一个目录。也就是说..所代表的也就是.

2、这里的-与我们前面su -(相当于su -l)是不同的意思,大家要理解。

常见的处理目录的命令

cd:改变目录(Change Directory)

pwd:显示当前目录(PrintWorkingDirectory)

mkdir:建立一个新的目录(makedirectory)

rmdir:删除一个空的目录

cd 改变目录

cd ~japie

进入yufei的家目录

cd~

进入当前用户的家目录

cd

和cd~是一样的,都是进入当前用户的家目录

cd..

进入上层目录

cd-

回到刚才的目录

pwd 显示目前所在的目录

这个命令的使用时机是当你不知道你所在的目录是哪个的情况下,可以直接用pwd显示出当前的工作目录。这里有个重要的参数就是-P,这个参数可以显示出真实的工作目录。这是针对连接而言的。

[root@japiejapie]#cd/var/mail/

[root@japiemail]#pwd

/var/mail

[root@japiemail]#pwd-P

/var/spool/mail

[root@japiemail]#ls-ld/var/mail

lrwxrwxrwx.1rootroot10Dec1522:35/var/mail->spool/mail

通过上面我们可以看出来,/var/mail这个目录是个连接文件,真正的目录是/var/spool/mail,这就是-P参数的意义。

mkdir 建立新目录

两个重要的参数

-m:设置mask的值,而不依据系统默认的umask值来创建目录(mask与umask是不同的含义哦!特别注意)

-p:递归创建目录(默认的情况下,目录是需要一层层来建立的)

[root@yufei~]#umask

0022

[root@japie~]#mkdirtest

[root@japie~]#mkdir-m700test1

[root@japie~]#ls-ldtest*

drwxr-xr-x2rootroot4096Feb921:35test

drwx------2rootroot4096Feb921:36test1

通过上面的对比,我想各位已经明白了-m参数的意义了。

下面我们再来看看这个-p参数的意思

[root@japie~]#mkdirtest/test/test

mkdir:cannotcreatedirectory`test/test/test':Nosuchfileordirectory

[root@japie~]#mkdir-ptest/test/test

发现已经在test目录下创建了test/test这两个目录,如果不用-p参数,就要一层层来建立。

rmdir 删除空目录

也有个-p参数,意义也是一样的,连同上层的空目录一起删除

我们还是以/root里面的test/test/test为例

[root@japie~]#touchtest/test/test/file

[root@japie~]#rmdirtest/test/test/

rmdir:failedtoremove`test/test/test/':Directorynotempty

如果目录里面有内家的话,那么rmdir是删除不了的,他会有提示“Directorynotempty”

[root@japie~]#rm-ftest/test/test/file

[root@japie~]#rmdirtest/test/test/

这时候只删除了最底层的test目录,还有test/test这两个目录没有删除,想要连同上层的空目录一起删除的话,可以加上-p参数。

[root@japie~]#mkdirtest/test/test

[root@japie~]#rmdir-ptest/test/test/

这时候把最底层的test目录的上层所有的空目录全部删除了。当前目录没有了test目录了。

rm -fr 删除目录及文件

这个命令用起来比较方便快捷,没有任何的提示,直接清空所有的内容,-f的意思就是直接删除,没有提示,而-r就是递归处理的意思。如果你确认你的目录及里面的数据都不要的话,可以用此命令来个痛快的删除。

大家可能会发现很多地方提到“rm-fr/”这个命令,其实这个命令在RHEL6上我实验过(其他的系统上没有测试),并不能直接执行,运行此命令,会有相应的提示:

[root@japie~]#rm-fr/

rm:itisdangeroustooperaterecursivelyon`/'

rm:use--no-preserve-roottooverridethisfailsafe

是不是多了一层保险啊!但是删除其他的目录,没有提示的哦,所以在使用前,一定要确保你执行的操作是正确的。

命令文件的路径(PATH)

正如我们开头所说的一样,我们在运行命令的时候并没有用命令的绝对路径就能直接运行,这就是路径的变量$PATH所起的作用。

[root@japie~]#echo$PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

我们看到,这个PATH里面包括了这些目录,所以,当我们在执行命令的时候,系统会在这些目录里面查找所要执行的命令,找到后就执行了。目录之间用“:”号分隔的。如果说,一个命令可能在多个目录里面,那么执行哪个呢?其实,就是先找到者先执行。如果在这些目录里面都找不到的话,那么就会发现一个“commandnotfound”的提示,告诉你,找不到命令哈!

相关推荐