相对路径和绝对路径

什么是路径,当我们需要查看某个文件的时候,这个文件就会有它自己的一个路径,打个比方我们之前编辑的网卡配置文件,那么它所在的层层目录下就是它的路径了

Last login: Mon Dec 18 19:12:39 2017 [root@ask-01 ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33

绝对路径;任何一个文件都有从根(/)开始的路径,凡是从根开始的路径就叫做绝对路径,而从绝对路径开始的可以到到达任何目录下。比方说

Last login: Mon Dec 18 19:12:39 2017 [root@ask-01 ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33 [root@ask-01 ~]# ls /etc/hostname /etc/hostname [root@ask-01 ~]# ls /root/anaconda-ks.cfg /root/anaconda-ks.cfg [root@ask-01 ~]# cat /etc/hostname ask-01

相对路径;相对路径就是从当前目录开始往下查找的路径就是相对路径,相对路径是不能直接越过当前目前下之前的目录,比方说我们可以在etc的目录下用相对路径的查看到hosrtname,而不能在etc的目录下找到root目录,不能查看boot目录,简单点说就是不能越级,只有当我们输入绝对路径的时候,才可以看到。

[root@ask-01 ~]# ls / bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr [root@ask-01 ~]# cd /etc [root@ask-01 etc]# ls hostname hostname [root@ask-01 etc]# ls root ls: 无法访问root: 没有那个文件或目录 [root@ask-01 etc]# ls /root/ anaconda-ks.cfg

那么我们该如何知道我们目前在那个目录下面呢,我们可以通过pwd这个命令来查看

[root@ask-01 etc]# pwd /etc

CD命令

cd命令用来切换或进入到指定的目录下面,比方说我们进入到普通用户Ask的目录下,我们就可以使用cd命令来操作

[root@ask-01 ~]# cd /home/Ask [root@ask-01 Ask]#

cd - cd命令用的比较多的参数有一个加杠的用法(cd -),它是用来切换到上一次访问的目录路径,以下示范

[root@ask-01 ~]# cd /home/Ask [root@ask-01 Ask]# cd - /root [root@ask-01 ~]# cd - /home/Ask [root@ask-01 Ask]#

这里当我进入到普通用户Ask的目录下时,输入cd -快速切换到在我进入到Ask目录前的路径,当我再次敲cd -命令的时候它切换回到了Ask目录下,我可以用pwd查看下当前所在的路径。 还有一个当我什么参数都不加的情况下,cd 会默认进入到当前用户的家目录下

[root@ask-01 Ask]# cd [root@ask-01 ~]# pwd /root

cd .. cd后面跟点点就是返到上一级目录

[root@ask-01 Ask]# cd .. [root@ask-01 home]# pwd /home

关于cd还有更多参数的命令,我们可以通过man命令来查看

创建目录和删除目录mkdir/rmdir

当我们需要创建一个目录的时候,我们就可以通过mkdir来创建一个目录

[root@ask-01 Ask]# mkdir asklinux1 [root@ask-01 Ask]# ls asklinux1 [root@ask-01 Ask]# ls -ld asklinux1/ drwxr-xr-x. 2 root root 6 12月 18 21:21 asklinux1/

这里我们通过命令mkdir创建了asklinux1这个目录,我们可以通过ls -ld来查看目录的详细信息,可以看到我们是在21:21分创建的目录 我们不能在没有一个目录路径下创建一个目录,比如asklinux1目前没有1目录,我们就不能用mkdir创建一个在1目录下的另外一个目录,比如

[root@ask-01 Ask]# mkdir asklinux1/1/2 mkdir: 无法创建目录"asklinux1/1/2": 没有那个文件或目录

这样就会提示报错没有那个文件或目录,那我实在想一次性创建多个目录呢,给mkdir加个-p的参数就可以办到了

[root@ask-01 Ask]# mkdir -p asklinux1/1/2 [root@ask-01 Ask]# ls asklinux1/1/ 2 [root@ask-01 Ask]# tree -L 2 asklinux1/ asklinux1/ └── 1 └── 2

当我们需要删除一个目录时,我们可以通过rmdir去删除一个目录

[root@ask-01 Ask]# rmdir asklinux1/1/2 [root@ask-01 Ask]# tree -L 2 asklinux1/ asklinux1/ └── 1 这样2目录就被删除了,rmdir命令只能删除目录(文件也不能删除)且必须是非空目录

[root@ask-01 Ask]# rmdir asklinux/1/2 rmdir: 删除 "asklinux/1/2" 失败: 目录非空 [root@ask-01 Ask]# tree -L 3 asklinux/ asklinux/ └── 1 ├── 1.txt └── 2 └── 3

想这样我们就不能删除目录2,因为目录2下面有目录3,已经包括我们也不能删除文件1.txt

[root@ask-01 Ask]# rmdir asklinux/1/1.txt rmdir: 删除 "asklinux/1/1.txt" 失败: 不是目录

那么rmdir加上参数-p能不能一次删除多个目录呢,答案是可以的,但依然不能删除非空的目录,比如

[root@ask-01 Ask]# tree asklinux/ asklinux/ ├── 1 │ ├── 1.txt │ └── 2 │ ├── 2 │ │ └── 3 │ └── 3 └── 2 └── 3 7 directories, 1 file [root@ask-01 Ask]# rmdir -p asklinux/2/3 rmdir: 删除目录 "asklinux" 失败: 目录非空 [root@ask-01 Ask]# tree asklinux/ asklinux/ └── 1 ├── 1.txt └── 2 ├── 2 │ └── 3 └── 3

rm命令

上面我们说rmdir删除有局限性,接下来学习的这个rm则可以删除文件也可以删除目录,我们先来试下删除文件

[root@ask-01 Ask]# !tree tree asklinux/ asklinux/ └── 1 ├── 2 │ └── 1.txt └── 2.txt 2 directories, 2 files [root@ask-01 Ask]# rm asklinux/1/2.txt rm:是否删除普通空文件 "asklinux/1/2.txt"?y [root@ask-01 Ask]# !tree tree asklinux/ asklinux/ └── 1 └── 2 └── 1.txt

这里当我们输入命令来删除asklinux/1目录下的2文件时,系统提示我们是否要删除普通空文件,这里我们输入y回车,y既是yes的意思,这样我们就删除了2文件,可是这样以来如果要一次删除多个文件的话,显然步骤有点繁琐,例如会出现这样的情况

[root@ask-01 Ask]# touch asklinux/1/2.txt [root@ask-01 Ask]# touch asklinux/1/3.txt [root@ask-01 Ask]# rm asklinux/1/*.txt =(号为通配符的意思,即凡是号后缀名的文件,这里的后缀名为.txt) rm:是否删除普通空文件 "asklinux/1/2.txt"?n rm:是否删除普通空文件 "asklinux/1/3.txt"?n

它每问一次你就要选择一次,这样操作起来有时就会感觉很麻烦,那么这个时候我们就可以给rm加个参数,这样它就不会再问了,那就是-f-f是强制的意思

[root@ask-01 Ask]# rm -f asklinux/1/*.txt [root@ask-01 Ask]# !tree tree asklinux/ asklinux/ └── 1 └── 2 └── 1.txt

以上我们说了rm命令删除文件的方法,还没说删除目录的,现在我们看下

[root@ask-01 Ask]# rm asklinux/1/2 rm: 无法删除"asklinux/1/2": 是一个目录

结果显示rm是不能直接删除目录的,这里rm删除不了目录,rmdir又有局限,还有什么办法呢,其实给rm加上一个-r的参数就可以了

[root@ask-01 Ask]# !tree tree asklinux/ asklinux/ └── 1 ├── 2 │ └── 1.txt └── 3 3 directories, 1 file [root@ask-01 Ask]# rm -r asklinux/1/3 rm:是否删除目录 "asklinux/1/3"?y [root@ask-01 Ask]# !tree tree asklinux/ asklinux/ └── 1 └── 2 └── 1.txt

这样我们就能删除目录,而rm -r 这个命令在操作删除有子目录或者文件的时候,它是会先进入最后一个目录先把文件删除,在一级一级删除后面的目录,这是这个命令程序

2 directories, 1 file [root@ask-01 Ask]# rm -r asklinux/1/2 rm:是否进入目录"asklinux/1/2"? y rm:是否删除普通空文件 "asklinux/1/2/1.txt"?n rm:是否删除目录 "asklinux/1/2"?n

如果我们不想要它提问,同样我们再加上f的参数即可,这个时候我们还可以再加一个v看到它怎么删除的流程

[root@ask-01 Ask]# !tree tree asklinux/ asklinux/ └── 1 └── 2 └── 1.txt 2 directories, 1 file [root@ask-01 Ask]# rm -rfv asklinux/1 已删除"asklinux/1/2/1.txt" 已删除目录:"asklinux/1/2" 已删除目录:"asklinux/1" [root@ask-01 Ask]# !tree tree asklinux/ asklinux/