相对和绝对路径及命令cd、mkdir、rmdir、rm
1、相对和绝对路径
在Linux中什么是一个文件的路径呢,说白了就是这个文件存在的地方,例如 /root/.ssh/authorized_keys 这就是一个文件的路径。如果你告诉系统这个文件的路径,那么系统就可以找到这个文件。在Linux的世界中,存在着绝对路径和相对路径。
绝对路径:路径的写法一定由根目录 ‘/’写起,例如 /usr/local/mysql 这就是绝对路径。
相对路径:路径的写法不是由根目录 ‘/’写起,例如,首先用户进入到/, 然后再进入到home ,命令为 cd /home 然后 cd test 此时用户所在的路径为 /home/test 第一个cd命令后跟 ‘/home’ 第二个cd命令后跟 ‘test’, 并没有斜杠,这个 ‘test’ 是相对于 ‘/home’ 目录来讲的,所以叫做相对路径。
如果我们想找一个文件,就需要有一个路径,例如之前编辑的网卡配置文件,见下图,红色框框中显示的就是这个配置文件的路径,
任何一个文件,都得有一个从根开始的一个路径,见下图例子,
绝对路径和相对路径
从根开始的路径,全部都是绝对路径。
相对路径是相对于我们所在的位置的一个路径,例如我们要查看当前所在位置,用命令 pwd 查看,见下图,
上图中红色框框的内容就是一个相对路径,相对于 root 存在。然后用 cd 命令切换一下当前目录,从 root 目录中切换到 etc 目录下面。再去找一下 network-scripts/ifcfg-ens33 这个路径,它也是相对路径,是相对于 /etc/sysconfig/ 这个目录所在的路径。
相对路径就是不是以根开头的路径,相对于当前目录来讲的路径。
绝对路径,就是不管在哪一个路径下,都能从根开始通过绝对路径来找到文件。举个例子,见下图,
上图中可以看出,不管在 tmp 目录下面,还是在 root 目录下面,都可以通过 /etc/sysconfig/network-scripts/ifcfg-ens33 这个路径来找到网卡配置文件,它就是一个绝对路径。
上述内容中,我们用到两个命令:pwd 和 cd ,pwd 就是查看当前所在目录、路径,cd 就是 change directory ,更改目录的意思。
2、cd命令
cd 命令平时用的很简单,就是进入到一个目录而已。还有一个比较实用的用法,就是 cd - ,后面什么都不加,回车,详见下图例子,
我们来分析一下上图中的命令,可以看到 /root 和 /etc/sysconfig 是交互出现的,由此可以看出,cd - 表示的是上一次所在的目录。
命令 cd
后面什么都不加,运行之后就进入到当前用户的加目录下,就是登录系统的时候在哪,cd 命令运行之后就在哪,
注意查看上图中,命令前缀的变化。root 用户的加目录就是 root 。
命令 cd ~
~ 和用户的加目录是一致的,root 用户下面的 ~ 就是 root ,
命令 cd ..
就是进入到上一级目录,最顶级的目录就是 / (根目录),再次执行 cd .. 这个命令,还是在 / 目录下。
再举一个例子,详见下图,注意命令前缀,在执行 cd .. 这个命令之后,当前目录一直返回到上一级,直到 / 目录。
可以用命令 man cd ,来查看一下 cd 的用法,输入命令 man cd ,回车,进入下图,
上图的命令都比较少用到,如果以后忘记掉,就用 man cd 命令进入查看。
总结:
cd + /目录1 进入目录1
cd 后面不加东西,进入到当前用户的加目录下,即root
cd ~ 进入root用户加目录
cd .. 进入到上一级目录
最顶级的目录就是 / ,根目录。
3、命令 mkdir
用来创建目录的,这个命令在之前用到过。 ‘mkdir’ 其实就是 make directory 的缩写。
来举个例子,在 tmp 目录下创建 lyslinux 的目录,详见下图,
用 ls -ld 命令查看到这个目录的详细信息,建立于12月19日 00:32 分。
再举一个例子,详见下图,
上图中,命令 date 是用来查看当前的时间。
其中,命令 mkdir /tmp/lyslinux/1/2/ 执行之后显示 没有那个文件或目录 ,再用命令 ls -l /tmp/lyslinux/ 来查看当前的目录,显示 总用量 0 ,说明 /tmp/lyslinux/ 目录下面没有内容。由此可见,在没有目录1的情况下是不可能创建目录2的。
上述情况中,想创建一连串目录的命令还是有的,需用到 mkdir -p 命令,详见下图,
可以看到,用命令 mkdir -p 成功创建一连串的目录,用命令 ls -l 都可以往下查到子目录。
下面再用命令 mkdir -pv 来演示,pv 为可视化的意思,我们可以看到目录的创建过程,由目录2到目录3再到目录4 。
2、命令 rmdir
既然可以创建目录,当然也可以删除目录。使用命令 rmdir ,其中 rmdir 为 remove directory 的缩写。现在来试着移除目录,
从上图中,可以看出,rmdir 命令可以删除目录,但是只能删除空目录,目录下面有子目录的情况, mkdir 这个命令就无法删除。
既然 mkdir 不能删除有子目录的目录,那能不能删除有文件的目录呢?我们来试一下,
先用命令 touch 在目录3下面创建一个空白的文件 1.txt 。然后执行命令 rmdir /tmp/lyslinux/2/3 ,结果显示 失败:目录非空 ,说明 rmdir 也无法删除有文件的目录。现在试着使用该命令来删除 1.txt 这个文件,结果显示 失败:不是目录 。说明 rmdir 这个命令只能删除空目录,不能删除空文件。
实际上,还有一个命令 rm ,可以删除文件,也可以删除目录。后面会讲到。
既然有可以创建一连串空目录的命令,肯定也有可以删除一连串空目录的命令,来试一下命令 rmdir -p ,见下图,
我们先用命令 rmdir 删掉了目录1下面的空目录2,ls 命令之后显示文件 lyslinux 下面还有两个子目录1和2,再次在目录1下面创建一个空子目录2,然后用 rmdir -p 命令来操作,结果显示 删除目录 "/tmp/lyslinux" 失败: 目录非空 ,我们再用命令 tree 来查看一下 /tmp/lyslinux/ 这个文件,发现子目录3里面有个文本文档 1.txt 。
由此可见,目录1和目录1下面的目录2全部删掉了,但是因为目录3里面有文件,而导致 /tmp/lyslinux/ 这个目录删除失败。说明 -p 这个命令也是可以删除一连串的目录,只要它是空的。但是我们一般不会使用这个命令,比较容易混淆,万一删错了,后果就很严重,只要目录为空,就会全部删除掉。
3、命令 rm
rmdir 这个命令有局限性,只能删除目录,不能删除文件。我们一般常用的删除命令是 rm ,为 remove 的缩写。该命令可以删除文件,也可以删除目录,而且是非空的目录。举个例子,
上图中,我们删除了文件 1.txt ,删除之前,还询问我们是否删除?那可以不出现这个询问吗?具体操作详见下图,
这边再提到一个命令 history ,执行之后可以看到之前敲过的所有命令。
上图中,可以看出,上一次使用过的 tree 命令,就是红色框框标注的位置。!tree 执行的命令就是这个。再试一下 !touch 命令,
用 !这个命令比较方便,可以提高敲命令的效率。还可以使用上下方向键,来寻找历史中敲过的命令。
我们回到 -f 这个命令来,经过上面的演练,我们可以看到,rm -f 命令可以强制删除文件和目录。上面删除的是文件,现在来看一下删除目录,
结果显示,无法删除目录。用命令 man rm ,来看一下 rm 的用法。
上图红色框框中 -r 的用法,就是可以集联地把这些目录都删掉。
上图可以发现,使用 -r 命令会一级一级的询问是否删除目录,先进入目录,删除文件,再删除目录。若是想不再收到询问,加个 f 就可以了,再用命令 tree 查看一下,可以看到目录2成功删除,并且没有发生询问。
我们再来试一下,
由此可见,在删除目录的时候,需要先删除目录下的文件,然后再删除目录。
现在试着删除掉一个不存在的文件,先用 !tree 命令来查看,可以看到目录3已经被删掉了,然后再执行 rm -rfv /tmp/lyslinux/2/3/ 这个命令,发现没有任何提示,
说明起作用的是 f ,把 f 去掉之后,就会提示没有文件或目录了。这点是需要注意的,使用 f 的时候要小心,会掩盖错误。
总结:
mkdir + /目录名称 创建目录
mkdir -p + /目录名称1/目录名称2/目录名称3... 创建一连串的目录
mkdir -pv + /目录名称1/目录名称2/目录名称3... 可以看到目录创建的过程
rmdir +目录 删除目录,只能删除空目录,不能删除空文件
rmdir -p +目录 删除一连串的空目录
rm +目录或文件 删除目录或文件,删除前会一一询问是否删除
rm -f +目录 只能删除文件,不能删除目录,删除前不再询问
rm -r +目录 删除一连串的目录,删除前一一询问
rm -rf +目录 删除一连串的目录,删除前不再询问
rm -rfv +目录 可视化删除过程,这个地方可以发现整个过程是先删除目录下的文件,再删除目录
使用 -f 的时候要小心,加了 f 之后,出现错误也不会提示。
history 查看之前操作过的所有命令,但是不同的平台,history是不会相互保存的。不正常退出时,本次操作过的命令也不会保存。
转载于:https://my.oschina.net/u/3867265/blog/1822484