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

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指向内容相同,且任意改变其中一个的内容另一个也会随之改变。


http://www.kler.cn/a/284429.html

相关文章:

  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
  • 认识一下Unicorn
  • 相机光学(四十二)——sony的HDR技术
  • 前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)
  • 深入理解接口测试:实用指南与最佳实践5.0(三)
  • Redis高可用-主从复制
  • 纷享销客CRM渠道分销之多维度数据分析介绍
  • STM32 - 笔记3
  • mysql启动失败问题汇总
  • 黑马点评——商户查询缓存(P37店铺类型查询业务添加缓存练习题答案)redis缓存、更新、穿透、雪崩、击穿、工具封装
  • ES(Elasticsearch)可视化界面-浏览器插件
  • python-春游
  • 【Qt窗口】—— 对话框
  • 操作系统面试真题总结(二)
  • Mac下的压缩包和Win看到的不一样怎么办 Mac压缩后Win电脑看文件名会乱码
  • 利用Leaflet.js创建交互式地图:多种形状单个区域绘制
  • 揭秘!糖尿病:从绝望到希望的治愈之路
  • mysql实用系列:coalesce函数的使用
  • 【GIT】idea中实用的git操作,撤回commit,撤回push、暂存区使用
  • 一些好用的网站和api合集
  • 【Python机器学习】NLP词频背后的含义——隐性狄利克雷分布(LDiA)
  • JavaWeb - Maven
  • GMS——利用 ChatGPT 和扩散模型进行制造业革命
  • css-functions-图形函数
  • 08:Logic软件原理图添加元件
  • 【Java设计模式】指挥官模式:轻松编排复杂命令