当前位置: 首页 > news >正文

相对和绝对路径及命令cd、mkdir、rmdir、rm

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、相对和绝对路径

 

在Linux中什么是一个文件的路径呢,说白了就是这个文件存在的地方,例如 /root/.ssh/authorized_keys  这就是一个文件的路径。如果你告诉系统这个文件的路径,那么系统就可以找到这个文件。在Linux的世界中,存在着绝对路径和相对路径。

绝对路径:路径的写法一定由根目录 ‘/’写起,例如 /usr/local/mysql 这就是绝对路径。

相对路径:路径的写法不是由根目录 ‘/’写起,例如,首先用户进入到/, 然后再进入到home ,命令为 cd /home 然后 cd  test 此时用户所在的路径为 /home/test 第一个cd命令后跟 ‘/home’ 第二个cd命令后跟 ‘test’, 并没有斜杠,这个 ‘test’ 是相对于 ‘/home’ 目录来讲的,所以叫做相对路径。

 

如果我们想找一个文件,就需要有一个路径,例如之前编辑的网卡配置文件,见下图,红色框框中显示的就是这个配置文件的路径,

140314_bH8i_3867265.png

任何一个文件,都得有一个从根开始的一个路径,见下图例子,

140319_v4XG_3867265.png

 

绝对路径和相对路径

从根开始的路径,全部都是绝对路径。

相对路径是相对于我们所在的位置的一个路径,例如我们要查看当前所在位置,用命令 pwd 查看,见下图,

140324_FVqJ_3867265.png

上图中红色框框的内容就是一个相对路径,相对于 root 存在。然后用 cd 命令切换一下当前目录,从 root 目录中切换到 etc 目录下面。再去找一下 network-scripts/ifcfg-ens33 这个路径,它也是相对路径,是相对于 /etc/sysconfig/ 这个目录所在的路径。

相对路径就是不是以根开头的路径,相对于当前目录来讲的路径。

绝对路径,就是不管在哪一个路径下,都能从根开始通过绝对路径来找到文件。举个例子,见下图,

140331_aBnK_3867265.png

上图中可以看出,不管在 tmp 目录下面,还是在 root 目录下面,都可以通过 /etc/sysconfig/network-scripts/ifcfg-ens33 这个路径来找到网卡配置文件,它就是一个绝对路径。

 

上述内容中,我们用到两个命令:pwd 和 cd ,pwd 就是查看当前所在目录、路径,cd 就是 change directory ,更改目录的意思。

 

2、cd命令

 

cd 命令平时用的很简单,就是进入到一个目录而已。还有一个比较实用的用法,就是 cd - ,后面什么都不加,回车,详见下图例子,

140343_5BLp_3867265.png

我们来分析一下上图中的命令,可以看到 /root 和 /etc/sysconfig 是交互出现的,由此可以看出,cd - 表示的是上一次所在的目录。

 

命令 cd 

后面什么都不加,运行之后就进入到当前用户的加目录下,就是登录系统的时候在哪,cd 命令运行之后就在哪,

140350_RePN_3867265.png

注意查看上图中,命令前缀的变化。root 用户的加目录就是 root 。

 

命令 cd ~

~ 和用户的加目录是一致的,root 用户下面的 ~ 就是 root ,

140356_33NC_3867265.png

 

命令 cd .. 

就是进入到上一级目录,最顶级的目录就是 / (根目录),再次执行 cd .. 这个命令,还是在 / 目录下。

140407_xnqw_3867265.png

再举一个例子,详见下图,注意命令前缀,在执行 cd .. 这个命令之后,当前目录一直返回到上一级,直到 / 目录。

140411_1SZF_3867265.png

可以用命令 man cd ,来查看一下 cd 的用法,输入命令 man cd ,回车,进入下图,

140418_87p5_3867265.png

140430_ox0Y_3867265.png

上图的命令都比较少用到,如果以后忘记掉,就用 man cd 命令进入查看。

 

总结:

cd  + /目录1  进入目录1

cd                  后面不加东西,进入到当前用户的加目录下,即root

cd ~              进入root用户加目录

cd ..               进入到上一级目录

最顶级的目录就是 / ,根目录。

 

3、命令 mkdir

 

用来创建目录的,这个命令在之前用到过。 ‘mkdir’ 其实就是 make directory 的缩写。

来举个例子,在 tmp 目录下创建 lyslinux 的目录,详见下图,

140724_lVBp_3867265.png

用 ls -ld 命令查看到这个目录的详细信息,建立于12月19日 00:32 分。

再举一个例子,详见下图,

140733_SE66_3867265.png

上图中,命令 date 是用来查看当前的时间。

其中,命令 mkdir /tmp/lyslinux/1/2/ 执行之后显示 没有那个文件或目录 ,再用命令 ls -l /tmp/lyslinux/ 来查看当前的目录,显示 总用量 0  ,说明 /tmp/lyslinux/ 目录下面没有内容。由此可见,在没有目录1的情况下是不可能创建目录2的。

上述情况中,想创建一连串目录的命令还是有的,需用到 mkdir -p 命令,详见下图,

140741_NIan_3867265.png

可以看到,用命令 mkdir -p 成功创建一连串的目录,用命令 ls -l 都可以往下查到子目录。

下面再用命令 mkdir -pv 来演示,pv 为可视化的意思,我们可以看到目录的创建过程,由目录2到目录3再到目录4 。

140750_YPGE_3867265.png

 

2、命令 rmdir

 

既然可以创建目录,当然也可以删除目录。使用命令 rmdir ,其中 rmdir 为 remove directory 的缩写。现在来试着移除目录,

140758_k2Wk_3867265.png

从上图中,可以看出,rmdir 命令可以删除目录,但是只能删除空目录,目录下面有子目录的情况, mkdir 这个命令就无法删除。

既然 mkdir 不能删除有子目录的目录,那能不能删除有文件的目录呢?我们来试一下,

140803_jGVk_3867265.png

先用命令 touch 在目录3下面创建一个空白的文件 1.txt 。然后执行命令 rmdir /tmp/lyslinux/2/3 ,结果显示 失败:目录非空 ,说明 rmdir 也无法删除有文件的目录。现在试着使用该命令来删除 1.txt 这个文件,结果显示 失败:不是目录 。说明 rmdir 这个命令只能删除空目录,不能删除空文件。

140813_4PsR_3867265.png

实际上,还有一个命令 rm ,可以删除文件,也可以删除目录。后面会讲到。

 

既然有可以创建一连串空目录的命令,肯定也有可以删除一连串空目录的命令,来试一下命令 rmdir -p ,见下图,

140819_98DD_3867265.png

我们先用命令 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 的缩写。该命令可以删除文件,也可以删除目录,而且是非空的目录。举个例子,

140828_HSov_3867265.png

上图中,我们删除了文件 1.txt ,删除之前,还询问我们是否删除?那可以不出现这个询问吗?具体操作详见下图,

140833_9wyj_3867265.png

 

这边再提到一个命令 history ,执行之后可以看到之前敲过的所有命令。

140844_IKGh_3867265.png

140853_NaAH_3867265.png

140902_jMDW_3867265.png

140908_QGAB_3867265.png

140917_XIb0_3867265.png

140924_U85A_3867265.png

140930_oFXy_3867265.png

上图中,可以看出,上一次使用过的 tree 命令,就是红色框框标注的位置。!tree 执行的命令就是这个。再试一下 !touch 命令,

140937_6ETh_3867265.png

用 !这个命令比较方便,可以提高敲命令的效率。还可以使用上下方向键,来寻找历史中敲过的命令。

 

我们回到 -f 这个命令来,经过上面的演练,我们可以看到,rm -f 命令可以强制删除文件和目录。上面删除的是文件,现在来看一下删除目录,

140945_JBYz_3867265.png

结果显示,无法删除目录。用命令 man rm ,来看一下 rm 的用法。

140950_GNjs_3867265.png

140956_PQTE_3867265.png

上图红色框框中 -r 的用法,就是可以集联地把这些目录都删掉。

141004_hOMY_3867265.png

上图可以发现,使用 -r 命令会一级一级的询问是否删除目录,先进入目录,删除文件,再删除目录。若是想不再收到询问,加个 f 就可以了,再用命令 tree 查看一下,可以看到目录2成功删除,并且没有发生询问。

我们再来试一下,

141010_j0w0_3867265.png

141014_9PhB_3867265.png

由此可见,在删除目录的时候,需要先删除目录下的文件,然后再删除目录。

现在试着删除掉一个不存在的文件,先用 !tree 命令来查看,可以看到目录3已经被删掉了,然后再执行 rm -rfv /tmp/lyslinux/2/3/ 这个命令,发现没有任何提示,

141022_yp0d_3867265.png

说明起作用的是 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

相关文章:

  • 命令+mybatis-generator插件自己主动生成Mapper映射文件
  • Shell笔记4——if条件语句的知识和实践
  • JavaWeb页面添加隐藏版权信息
  • jQuery中的:input选择器
  • 雷军用小米8在微博上公然开车,这成像效果你满意吗
  • laravel blog edit
  • ios UI控件的简单整理
  • 如何在php中设置cookie,在js中获取
  • android TextView 支持长按自由复制
  • 注解机制及其原理
  • JavaScript随堂笔记
  • jQuery 事件
  • Swift - 设置应用程序图标的提醒个数(右上角小红圈)
  • T-sql for xml path使用(转)
  • 三条命令解决Git 如何删除远程服务器文件同时保留本地文件
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Angular数据绑定机制
  • in typeof instanceof ===这些运算符有什么作用
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Java程序员幽默爆笑锦集
  • JS题目及答案整理
  • laravel with 查询列表限制条数
  • miaov-React 最佳入门
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • select2 取值 遍历 设置默认值
  • Selenium实战教程系列(二)---元素定位
  • Travix是如何部署应用程序到Kubernetes上的
  • WinRAR存在严重的安全漏洞影响5亿用户
  • yii2权限控制rbac之rule详细讲解
  • 爱情 北京女病人
  • 从零开始在ubuntu上搭建node开发环境
  • 大整数乘法-表格法
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 来,膜拜下android roadmap,强大的执行力
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端之Sass/Scss实战笔记
  • 责任链模式的两种实现
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​MySQL主从复制一致性检测
  • ​一些不规范的GTID使用场景
  • # 飞书APP集成平台-数字化落地
  • (3)选择元素——(17)练习(Exercises)
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (转)scrum常见工具列表
  • .net 4.0发布后不能正常显示图片问题
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET面试题(二)
  • ?
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解