1.相对路径与绝对路径
在开始目录的切换之前,你必须要先了解一下所谓的路径(PATH),有趣的是:什么是相对路
与绝对路径?
- 绝对路径:路径的写法“一定由根目录/写起”,例如:/usr/share/doc 这个目录。
- 相对路径:路径的写法“不是由/写起”,例如由/usr/share/doc 要到/usr/share/man下面时,可以写成:“cd./man”这就是相对路径的写法,相对路径意指相对于目前工作目录的路径。
2.目录的相关操作
Linux下有哪些比较特殊的目录?
举例来说,下面这些就是比较特殊的目录,得要用力地记下来才行:
- .:代表此层目录。
- ..:代表上一层目录。
- -:代表前一个工作目录。
- ~:代表目前使用者身份所在的家目录.
- ~account: 代表account 这个使用者的家目录(account是个账号名称)。
需要特别注意的是:在所有目录下面都会存在的两个目录,分别是“.”与“..”分别代表此层与
上层目录的意思。
那么来思考一下下面这个例题:
请问在Linux下面,根目录下有没有上层目录(.)存在?
答:若使用“Is一al /”去查询,可以看到根目录下确实存在,与.两个目录,再仔细查看,可发现这两个目录的属性与权限完全一致,这代表根目录的上一层(.)与根目录自己(.)是同一个目录。
下面我们就来谈一谈几个常见的处理目录的命令;
- cd:切换目录
- pwd:显示当前目录
- mkdir:建立一个新目录
- rmdir:删除一个空目录
- cd :(change directory,切换目录)
2.1.cd (change directory,切换目录)
它的一般用法是:cd [相对路径或绝对路径]
我们知道zs_108 这个用户的家目录是/home/zs_108/,而root 家目录则是/root/,假设我以root
身份在Linux 系统中,那么简单说明一下这几个特殊目录的意义是:先切换身份成为root看看。
代表进入zs_108 这个使用者的家目录,亦即/home/zs_108。
表示回到自己的家目录,亦即是/root这个目录。
#没有加上任何路径,也还是代表回到自己家目录的意思。
#表示去到目前的上层目录,亦即是/root的上层目录的意思。
表示回到刚刚的那个目录,也就是/root。
这个就是绝对路径的写法。直接指定要去的完整路径名称。这个是相对路径的写法,我们由/var/spoo1/mai1到/var/spool/postfix就这样写。
cd 是Change Directory的缩写,这是用来切换工作目录的命令,注意目录名称与cd命令之间存在一个空格。
当登录Linux系统后,每个账号都会在自己账号的家目录中,那回到上一层目录可以用“cd ..”。利用相对路径的写法必须要确认你目前的路径才能正确地去到想要去的目录。
例如上面当中最后一个例子,你必须要确认你是在/var/spool/mail 当中,并且知道在/var/spool 当中有个mqueue的目录才行,这样才能使用cd烈/postfix进入正确的目录,否则就要直接输入cd/var/spool/postfix。
其实,我们的提示字符,亦即那个【root@hcss-ecs-b4c3 ~]#当中,就已经有指出当前目录了,刚登录时会到自己的家目录,而家目录还有一个符号,那就是“~”。
例如上面的例子可以发现,使用“cd~”可以回到自己的家目录里面。另外,针对cd的使用方法,如果仅输入cd时,代表的就是“cd~”的意思,亦即回到自己的家目录。而那个“cd-”比较难以理解,请自行多做几次练习,就会明白了。
还是要一再地提醒,我们的Linux的默认命令行模式(bash shell)具有文件补齐功能,你要常常利用[Tab]按键来自动补全目录路径。这可是个好习惯,可以避免你按错键盘输入错字。
2.2.pwd(显示目前所在的目录)
选项与参数:
- -P:显示出真正的路径,而非使用链接(link)路径。
范例1:单纯显示出目前的工作目录。
范例2:显示出实际的工作目录,而非链接文件本身的目录名而已,
注意,/var/mail是一个链接文件.
怎么回事?有没有加-P差很多.
看到这里应该知道为啥了吧?
因为/var/mail是链接文件,链接到/var/spool/mail。#所以,加上pwd -P的选项后,不会显示链接文件的路径,而是显示正确的完整路径。
pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令,例如在上面最后的目录是/var/mail,但是提示字符仅显示mail,如果你想要知道目前所在的目录,可以输入pwd即可。
此外,由于很多的软件所使用的目录名称都相同,例如/usr/local/etc和/etc,但是通常Linux仅列出最后面那一个目录而已,这个时候你就可以使用pwd 来知道你的所在目录,免得搞错目录,造成损失。
其实有趣的是那个 -P的选项。它可以让我们取得正确的目录名称,而不是以链接文件的路径来显示的。如果你使用的是CentOS 7.x的话,刚好/var/mail 是/var/spool/mail的链接文件,通过到/var/mail 执行pwd-P就能够知道这个选项的意义。
2.3.mkdir(建立新目录)
mkdir[-mp]目录名称
选项与参数:
- -m:设置文件的权限。直接设置,不使用默认权限(umask).
- -p:帮助你直接将所需要的目录(包含上层目录)递归创建。
范例:请到/tmp 下面尝试建立数个新目录看看:
#话说,系统告诉我们,不可能建立这个目录,就是没有目录才要建立的,见鬼嘛?
原来是要建test4上层没先建test3的原因,加了这个-p的选项,可以自行帮你建立多层目录,范例:建立权限为rwx--x--x的目录。
仔细看上面的权限部分,如果没有加上-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 依序地建立起目录。并且,如果该目录本来就已经存在时,系统也不会显示错误信息。挺快乐吧!
不过不建议常用-p这个选项,因为担心如果你打错字,那么目录名称就会变得乱七八糟。
另外,有个地方你必须要先有概念,那就是默认权限。我们可以利用-m来强制设置一个新目录相关的权限,例如上表当中,我们给予-m711来给予新的目录drwx--x--x的权限。不过,如果没有使用-m选项时,那么默认的新建目录权限又是什么?这个跟umask有关、
2.4.rmdir(删除“空”的目录)
rmdir [-p]目录名称
选项与参数:
- -p:连同上层“空的”目录也一起删除.
范例:将于mkdir 范例中建立的目录(/tmp下面)删除掉。
可直接删除掉,没问题因为尚有内容,所以无法删除.
您看看,下面的输出中test与test1不见了。使用-p选项,立刻可将 test1/test2/test3/test4一次删除,不过要注意,这个rmdir 仅能“删除空目录”.这个-p选项是从test4开始,因为test4是空的,就被删除了,回到test3,因为test4被删除了,test3就变空了,然后test3被删除,依次类推
如果想要删除旧有的目录时,就使用rmdir。
例如将刚刚建立的test 删掉,使用【rmdir test】即可。
请注意,目录需要一层一层的删除才行,而且被删除的目录里面必定不能存在其他的目录或文件,这也是所谓的空目录(empty directory)的意思。
那如果要将所有目录下的东西都删除?
这个时候就必须使用【rm -r test 】。不过,还是使用rmdir 比较安全,你也可以尝试以-p选项来删除上层空的目录。