您所在的位置:读书频道 > 操作系统 > Linux > 7.1.2 目录操作

7.1.2 目录操作

2007-09-27 09:58 鸟哥 人民邮电出版社 字号:T | T
一键收藏,随时查看,分享好友!

《鸟哥的Linux私房菜》一书全面而详细地介绍了Linux操作系统,第六章介绍的是Linux的文件属性与目录配置,本节是目录操作。

AD:

7.1.2  目录操作

前面提到切换目录的命令是cd,还有哪些可以进行目录操作的命令呢?如建立目录、删除目录之类的。还有,有哪些比较特殊的目录呢?下面这些就是比较特殊的目录,要记下来:

.         表示此层目录
..        表示上一层目录
-         表示前一个工作目录
~         表示“当前用户身份”所在的家目录
~account  表示account用户的家目录

在目录下面有两个目录是一定会存在的,就是 . 与 .. 。分别表示此层与上层目录。我们知道,根目录(/)是所有目录的最顶层,那么 / 有 .. 吗?可以使用ls -al / 看看,答案是“有的”。不过,也可以查到,根目录的 . 与 .. 属性完全一模一样。原来根目录的顶层(..)与它自己(.)是同一个目录。

下面我们就来谈一谈几个常见的处理目录的命令。

cd(切换目录)
dmtsai用户的家目录是 /home/dmtsai,root家目录是 /root,假设以root身份在Linux系统中,这几个特殊的目录的意义是:

[root@linux ~]# cd [相对路径或绝对路径]
# 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号。
[root@linux ~]# cd ~dmtsai
# 表示去dmtsai用户的家目录,即 /home/dmtsai
[root@linux dmtsai]# cd ~
# 表示回到自己的家目录,即 /root目录
[root@linux ~]# cd
# 没有加上任何路径,也表示回到自己家目录。
[root@linux ~]# cd ..
# 表示去当前目录的上层目录,即 /root的上层目录。
[root@linux /]# cd -
# 表示回到刚才的目录,也就是 /root。
[root@linux ~]# cd /var/spool/mail
# 这就是绝对路径的写法。直接指定要去的完整路径名称。
[root@linux mail]# cd ../mqueue
# 这个是相对路径的写法,我们由 /var/spool/mail去 /var/spool/mqueue就这样写。
cd是Change Directory(改变目录)的缩写,这是用来切换工作目录的命令。注意,目录名与cd命令之间有一个空格。登入Linux系统后,root会在root的家目录,即 /root下。回到上一层目录可以用“cd ..”。利用相对路径的写法必须要确认当前路径,才能正确到想要去的目录。例如上面的最后一个例子,必须要确认是在 /var/spool/mail中,并且知道在 /var/spool中有个mqueue的目录。这样才能使用cd ../mqueue到正确的目录,否则就要直接输入cd /var/spool/mqueue。
其实,我们的提示符,即 [root@linux ~]# 中,就已经指出当前目录了,刚登入时会到自己的家目录,而家目录还有一个代码,就是“~”符号。例如,通过上面的例子可以发现,使用“cd ~”可以回到个人的家目录。另外,针对cd的使用方法,如果仅输入cd,表示“cd ~”。即回到自己的家目录。而“cd -”比较难以理解,多做几次练习就会明白了。

还是要一再提醒,Linux的默认命令行模式(bash shell)具有文件补齐功能,要常常利用 [tab] 按键快速完整地输入目录。这是个好习惯。可以避免你按错键盘输入错字。

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

[root@linux ~]# pwd [-P]
参数:
-P : 显示出实际路径,而非使用连接(link)路径。
范例:
[root@linux ~]# pwd
/root   <== 显示出目录。
[root@linux ~]# cd /var/mail
[root@linux mail]# pwd
/var/mail
[root@linux mail]# pwd -P
/var/spool/mail   <== 怎么回事?有没有加 -P差很多。
[root@linux mail]# ls -l /var/mail
lrwxrwxrwx  1 root root 10 Jun 25 08:25 /var/mail -> spool/mail
# 看到这里应该知道原因了吧?因为 /var/mail是连接文件,连接到 /var/spool/mail
# 所以,加上pwd -P的参数后,会不以连接文件的数据显示,而是显示正确的完整路径。
pwd是Print Working Directory(显示工作目录)的缩写,也就是显示当前所在目录,例如,上面的列表中,最后的目录是 /var/mail,但提示符仅显示mail,如果想要知道当前所在的目录,可以输入pwd。此外,由于很多套件所用的目录名都相同,例如 /usr/local/etc,还有 /etc,但通常Linux仅列出最后一个目录而已,这个时候就可以使用pwd来知道所在目录,以免搞错目录。
通过-P参数,可以获取正确的目录名,而不是以连接文件的路径来显示。如果是使用Fedora Core 4,/var/mail就是 /var/spool/mail的连接文件,所以,通过到 /var/mail使用pwd -P就能够知道这个参数的意义。

mkdir(建立新目录)

[root@linux ~]# mkdir [-mp] 目录名
参数:
-m : 设置文件的权限。直接设置,不要管默认权限。
-p : 帮助你直接建立所需要的目录递归。
范例:
[root@linux ~]# cd /tmp
[root@linux tmp]# mkdir test    <== 建立一名为test的新目录
[root@linux tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory  <== 直接建立此目录。
[root@linux tmp]# mkdir -p test1/test2/test3/test4
# 加了这个 -p的参数,可以自行建立多层目录。
[root@linux tmp]# mkdir -m 711 test2
[root@linux tmp]# ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
# 仔细看上面的权限部分,如果没有加上 -m来强制设置属性,系统会使用默认属性。
# 那么,你的默认属性是什么?这要通过下面介绍的umask才能了解。

如果想要建立新目录,就使用mkdir(make directory,生成目录)。请注意,在默认情况下,目录需要一层一层的建立。例如,假如要建立一个目录为 /home/bird/testing/test1,那么,首先必须要有 /home,然后是 /home/bird,还有 /home/bird/testing,这些都必须存在,才可以建立 /home/bird/ testing/test1目录。假如没有 /home/bird/testing,就没有办法建立test1目录。不过,现在有个更简单有效的方法,就是加上 -p参数。直接使用命令:“mkdir -p /home/bird/testing/test1”,系统会自动帮你将 /home、/home/bird、/home/bird/testing按顺序建立起目录。并且,如果该目录本来就已经存在时,系统也不会显示错误信息。
另外,还要知道“默认权限”的概念。我们可以利用 -m强制给一个新目录相关的属性,例如上面的列表中,通过 -m 711给新目录赋予drwx--x--x属性。不过,如果没有给予 -m属性,默认的新建目录属性是什么呢?这与umask有关,稍后介绍。
rmdir(删除“空”目录)
[root@linux ~]# rmdir [-p] 目录名
参数:
-p : 连同上层“空的”目录也一起删除
范例:
[root@linux tmp]# ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
[root@linux tmp]# rmdir test
[root@linux tmp]# rmdir test1
rmdir: `test1': Directory not empty
[root@linux tmp]# rmdir test1/test2/test3/test4
[root@linux tmp]# ls -l
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
# 利用 -p这个参数,立刻就可以将test1/test2/test3/test4一次删除。
# 不过要注意的是,这个rmdir仅能“删除空的目录”。

如果想要删除现有目录,就使用rmdir。例如,要删除test,使用rmdir test即可。请注意,目录需要一层一层删除才行。而且被删除的目录里,必定不能有其他目录或文件。这也是空目录(empty directory)的含义。如果要将所有目录下的东西都删除,就必须使用rm -rf test。不过,还是使用rmdir危险性小些。也可以尝试通过 -p参数来删除上层目录。

【责任编辑:雪花 TEL:(010)68476606-8007】

回书目   上一节   下一节

分享到:

关于cd  pwd  mkdir  rmdir  目录  操作  Linux  操作系统  shell  鸟哥  鸟哥的Linux私房菜的更多文章
即将引爆2016年的网络新趋势

时光总是在不经意间流逝,还没来得及去回顾2015年的种种,2016就[详细]

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

JavaScript核心技术
它从最简单的地方入手,不仅讲述了JavaScript的基础知识,还讲述了JavsScript如何操作CSS、DOM等Ajax基础技术。而关于跨浏览器兼

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院