2.10Linux下目录操作命令大全
在linux下,如果想对目录进行切换等操作,必须了解目录下所谓的路径。而路径又常常分为相对路径和绝对路径。这两种路径的写法各有好处,在不同场景下择优选择。
目录操作最常见的几种操作是:切换目录,创建目录,删除目录等。不过,linux下有一些目录比较特殊,常见的特殊目录如下:
. 代表此层目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表『目前使用者身份』所在的家目录 ~ppp 代表ppp这个使用者的家目录(ppp是个帐号名称)
需要特别注意的是:在所有目录底下都会存在的两个目录,分别是『.』与『..』分别代表此层与上一级目录的意思。
对于根目录(/)来说同样存在.与..两个目录,你可以用 ls -al / 命令验证下。不过根目录的上一层目录(..)与根目录自己(.)是同一个目录。
目录操作命令常见有:
cd:变换目录 pwd:显示目前的目录 mkdir:创建一个新的目录 rmdir:删除一个空的目录
cd (切换目录)
cd是Change Directory的缩写,这是用来变换工作目录的命令。注意,目录名称与cd命令之间存在一个空格。
[root@ppp ~]# cd [相对路径或绝对路径] # 最重要的就是目录的绝对路径与相对路径 [root@ppp ~]# cd /home/peter # 代表去到 peter 这个用户的家目录,即 /home/peter [root@ppp peter]# cd ~ # 表示回到自己的家目录,即是/roo 这个目录 [root@ppp peter]# cd # 当没有加上任何路径,也还是代表回到自己家目录的意思喔! [root@ppp ~]# cd .. # 表示去到当前目录的上一级目录 [root@ppp /]# cd - # 表示回到自己的工作目录,也就是/root [root@ppp ~]# cd /usr/bin # 这个就是绝对路径的写法!直接指定要去的完整路径名称! [root@ppp bin]# cd ../sbin # 这个是相对路径的写法,我们由/usr/bin去到/usr/sbin
pwd (显示目前所在的目录)
pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令,如果你想要知道目前所在的目录,可以输入pwd即可。pwd是以绝对路径的方法显示你当前的工作目录。
[root@ppp ~]# pwd [-P] 选项与参数: -P :显示出确实的路径,而非使用连结 (link) 路径。 范例:显示出目前的工作目录: [root@ppp ~]# pwd /root <== 显示出目录 范例:显示出实际的工作目录,而非连结档本身的目录名 [root@ ~]# cd /var/mail <==注意,/var/mail是一个连结档 [root@ mail]# ls -l /var/mail lrwxrwxrwx. 1 root root 10 Dec 17 2012 /var/mail -> spool/mail [root@ppp mail]# pwd /var/mail <==列出目前的工作目录 [root@ppp mail]# pwd -P /var/spool/mail <==怎么回事?有没有加 -P 差很多 # 因为 /var/mail 是连结档,连结到 /var/spool/mail # 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
mkdir (创建新目录)
mkdir是make directory的缩写,即创建目录。
[root@ppp ~]# mkdir [-mp] 目录名称 选项与参数: -m :配置文件的权限喔!直接配置,而不是按默认权限(umask)配置。 -p :直接将所需要的目录(包含上一级目录)递回创建起来! 范例:到/tmp底下尝试创建数个新目录: [root@ppp ~]# cd /tmp [root@ppp tmp]# mkdir test <==创建名为test的新目录 [root@ppp tmp]# mkdir test1/test2/ mkdir: cannot create directory `test1/test2/': No such file or directory <== 没办法直接创建此目录啊! 如果不用参数只能先创建test1目录然后切换目录到test1下再创建test2目录。 [root@www tmp]# mkdir -p test1/test2/ # 加了这个 -p 的选项,可以自行创建多层目录! 范例:创建权限为rwx--x--x的目录 [root@www tmp]# mkdir -m 711 test2 [root@www 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
创建多层目录时要使用-p这个参数来递归创建。否则只能一层一层创建,只有第一层存在,然后再创建下一层。
rmdir (删除空的目录)
如果想要删除旧有的目录时,就使用rmdir,即remove directory的缩写。不过被删除的目录里面不能存在其他的目录或文件。
[root@ppp ~]# rmdir [-p] 目录名称 选项与参数: -p :连同上一级空的目录也一起删除 范例:将於mkdir范例中创建的目录(/tmp底下)删除掉! [root@ppp 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@ppp tmp]# rmdir test <==可直接删除掉,没问题 [root@ppp tmp]# rmdir test1 <==因为尚有内容,所以无法删除! rmdir: `test1': Directory not empty [root@ppp tmp]# rmdir -p test1 <=仍无法删除,必须将所有目录包含进来 rmdir: `test1': Directory not empty [root@www tmp]# rmdir -p test1/test2/ [root@www tmp]# ls -l <==底下test与test1被删除 drwx--x--x 2 root root 4096 Jul 18 12:54 test2 # 利用 -p 这个选项,立刻就可以将 test1/test2/ 一次删除 # 不过要注意的是,这个 rmdir 仅能删除空的目录!
用rmdir删除目录时,如果该目录里面含有文件,则该目录不能被删除。当要删除多层空目录时,要一层一层删除,或者使用-p参数将所有目录包含进来递归删除。
1 Comment
这种命令要经常用才能熟悉,要不然单靠背感觉很难记住