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

Linux——命令行文件的管理(创建,复制,删除,移动文件,硬链接与软链接)

目录

一、创建文件和目录

二、复制文件和目录

三、删除文件和目录

四、移动文件和目录

五、硬链接和软链接(软链接也指符号链接)

索引节点(inode)

硬链接

软链接(符号链接)


一、创建文件和目录

       mkdir命令可以创建一个或多个目录和子目录,使用要创建目录的路径作为参数

       如果要创建的文件父目录不存在,mkdir命令将显示创建失败,此时可以使用-p选项,-p选项可以级联的的去创建一个文件,补全创建目标位置缺少的父目录(如下图代码演示)

二、复制文件和目录

     cp命令可复制文件,并在当前目录或其他指定目录中创建一个文件,cp命令可以将多个文件复制到一个目录中,此时的最后一个参数必须是目录,当目标目录中的文件与要复制的文件同名时,要复制的文件则会覆盖目标目录中和同名文件。

三、删除文件和目录

rm命令可删除文件,但一般不会删除目录,要想删除目录则要加上-r选项

 rm命令加上-i选项可以以交互式的方式删除文件,rm命令加上-f则是强制删除而不提示用户进行确认

也可以使用rmdir命令删除空目录,使用rm命令-r选项删除非空目录。 

四、移动文件和目录

mv命令可将文件从一个位置移动到另一个位置,如果将文件的绝对路径看作它的全名,那么移动文件实际上和重命名文件一样。文件的内容保持不变。

上述代码将test1文件在Music目录中重命名为test2

 上述代码将test2文件从Music目录下移到Pictures目录下

五、硬链接和软链接(软链接也指符号链接)

       在介绍硬链接和软链接之前,我们先引入索引节点的知识,便于更好的区分和理解硬链接和软链接。

索引节点(inode)

      每个文件都有对应的inode,inode存储了文件的元信息,如文件的创建者,文件权限,uid,gid,以及创建时间,文件的大小等等。可以用stat命令查看文件的inode信息

       inode也会消耗硬盘空间,因此,磁盘格式化的时候分为了两个区域,inode区域和数据区域,通过对inode区域的访问我们可以知道文件存储在磁盘上的那个位置,进而知道文件的具体内容(可以将索引节点比作一本书的目录,我们可以根据目录知道文件的基本信息,并找到文件在书中的具体位置进而阅读到文件的具体内容)

        在linux中,打开文件实际上可以分为三个步骤:首先找到文件名对应的inode号码;其次,找到inode号码获取inode信息;最后,根据inode信息找到文件在磁盘上的位置,读出文件数据。

硬链接

       在linux中,一个文件只会有一个索引节点,所谓的硬链接便是一个文件的多个文件名,即多个不同的文件名所指向的内容使相同的,它们实际上是一个索引节点(类似与一个人有多种外号,小原子,原原,原子,虽然名字不同,但都是指向同一个人),只占据一个硬盘区域。

       使用ls -l 的命令加选项可以查看一个文件的硬链接数目

使用ln命令可以创建硬链接,ln命令需要两个参数:现有文件的路径和要创建硬链接的路径

       如上图所示,文件text1和文件pro.2文件的硬链接数目都是2,并且它们有着相同的索引节点

硬链接的局限性:

       由于硬链接只是创建了一个文件名,并没有占用新的硬盘空间,因此,创建硬链接只能在同一个文件系统下面进行。

        其次,硬链接只能用于常规文件,不能用于目录(当在子目录中创建了父目录的硬链接时会造成循环)或者特殊文件,一般目录都会有两个硬链接("."和"..",即当前目录和它的父目录)

df -i 命令查看inode的总量和剩余量

df -h命令查看磁盘的使用量

软链接(符号链接)

       软链接就相当于一个快捷键,它会创建一个新的索引节点,单独占据一块磁盘区域,新创建的软链接所存储的内容其实是你要访问的源文件的路径,因此新创建的软链接指向的文件内容为要访问的文件内容。所以本质上软链接创建的文件内容(实质为要访问文件的路径)和索引节点与源文件的内容和索引节点是不同的。

       相较于硬链接,软链接可以指向目录和特殊文件,软链接也可以跨文件系统创建。

       可以使用ln命令加-s选项创建软链接

上图创建了指向a目录的软链接c

上图查看各文件的索引节点

      如上三个图,c是一个指向a目录的软链接,但是a与c的索引节点不同,删除c中的目录b的同时a中的目录b也被删除了,这说明a,c指向内容相同,且任意改变其中一个的内容另一个也会随之改变。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Qt】工具栏
  • 中国能建VS中国电建的渊源和区别及中国七大基建狂魔
  • this.$nextTick() 是 Vue.js 提供的一个方法
  • 【化学方程式配平 / 3】
  • ubuntu 22.04安装NVIDIA驱动和CUDA
  • 华为海思招聘-芯片与器件设计工程师-数字芯片方向- 机试题——(共九套)(每套四十题)
  • Sentinel-1 Level 1数据处理的详细算法定义(十)
  • VUE使用websocket
  • 跑Boundary-Aware Feature Propagation遇到的问题
  • 【法如faro】三维激光软件Scene2023数据处理(自动配准并转换坐标)流程
  • 【kafa系列】kafka如何保证消息不丢失
  • 常用git命令
  • 提高工作效益方法(一)
  • 循环流网络的费用问题
  • JavaScript 练习题是提升编程技能的好方法
  • 2017届校招提前批面试回顾
  • Android 控件背景颜色处理
  • Apache Zeppelin在Apache Trafodion上的可视化
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • es的写入过程
  • Gradle 5.0 正式版发布
  • iOS 系统授权开发
  • Java 多线程编程之:notify 和 wait 用法
  • js ES6 求数组的交集,并集,还有差集
  • WePY 在小程序性能调优上做出的探究
  • 聊聊redis的数据结构的应用
  • 前端之Sass/Scss实战笔记
  • 深入浅出Node.js
  • 【干货分享】dos命令大全
  • ​520就是要宠粉,你的心头书我买单
  • ​第20课 在Android Native开发中加入新的C++类
  • ​用户画像从0到100的构建思路
  • # Java NIO(一)FileChannel
  • #162 (Div. 2)
  • #nginx配置案例
  • (2)nginx 安装、启停
  • (23)Linux的软硬连接
  • (多级缓存)多级缓存
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (七)Java对象在Hibernate持久化层的状态
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (原)Matlab的svmtrain和svmclassify
  • (杂交版)植物大战僵尸
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net 反编译_.net反编译的相关问题
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .Net程序帮助文档制作
  • .NET微信公众号开发-2.0创建自定义菜单
  • .NET中的Exception处理(C#)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @Autowired注解的实现原理