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

news2024/9/21 7:04:02

目录

一、创建文件和目录

二、复制文件和目录

三、删除文件和目录

四、移动文件和目录

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

索引节点(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.coloradmin.cn/o/2094578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PCIe 复位:必须了解的PERST#

1.什么是PERST# PERST#作为 Fundamental Reset,是直接通过边带信号PERST#(PCI Express Reset)产生的。Fundamental Reset会复位整个PCIe设备,初始化所有与状态机相关的硬件逻辑,端口状态以及配置空间中的配置寄存器…

使用谷歌翻译的推荐理由及其他翻译工具推荐~

在现在快节奏的工作中,翻译工具已成为我们日常当中不可或缺的助手。其中,谷歌翻译以其高效、准确的特点,在众多翻译软件中脱颖而出。以下,我为您详细介绍为何推荐在工作中使用谷歌翻译,并同时提供其他三款优秀的翻译工…

linux内核驱动:pca953xIO扩展芯片驱动总结

目录 前言一、PCA9536芯片介绍二、驱动说明三、配置流程四、应用操作方式 前言 本笔记总结使用ti 的PCA953x进行SOC的GPIO扩展时步骤,基于linux内核版本5.10.xxx; 一、PCA9536芯片介绍 【1】PCA9536是基于i2c接口的GPIO扩展芯片,最大支持到…

【Java学习】多线程JUC万字超详解

所属专栏:Java学习 1. 多线程的概念 线程:线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程的实际运作单位 下面这些每一个能够运行的软件就是一个进程 并发:在同一时刻,有多个…

网络编程学习:TCP/IP协议

TCP/IP协议简介 TCP/IP协议包含了一系列的协议,也叫TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。 分层结构 为了能够实现不同类型的计算机和不同类型的操作系统之间进行通信,引…

Java中的锁(四)利用读写锁实现高性能网页缓存

文章目录 背景Ehcache2源码解析-如何实现缓存网页读写锁ReentrantReadWriteLock解析读写锁的特性读写锁是如何实现的? 如何将Ehcach2-web的源码迁移到Ehcach3中?/ 如何自定义Filter实现高性能网页缓存? 背景 在我们的销售页面,有…

Django+Vue酒店推荐系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…

Linux文件操作(二)

Linux文件操作(二) 导语文件和目录维护chmodchownlink及其变体dir及其变体chdir和getcwd 扫描目录opendirreaddirtelldirseekdirclosedir示例程序 错误处理strerrorperror /procfcntlmmap相关mmapmsyncmunmap 总结参考文献 导语 文件操作的第二部分&…

juzige/Monitoring-System-基于Java语言的光伏监控系统

Photovoltaic-Monitoring-System-Based-on-Java-Language 基于Java语言的光伏监控系统光伏发电系统光伏软件系统光伏监控系统源码光伏发电系统源码-智电云 一、 介绍 光伏光伏发电预测逆变器监控逆变器数据采集光伏运维光伏电站光伏功率预测光伏监控系统光伏发电系统光伏软件…

【CSS in Depth 2 精译_022】3.6 一招搞定容器内元素间距的问题 + 3.7 本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

jQuery入门(六)jQuery实现瀑布流分页案例

一、瀑布流分页案例分析 1.1) 功能分析: 鼠标下拉,加载分页数据(10条) ,如下图: 案例分析: 1.2) 如何确定当前显示的数据已经浏览完毕? 公式:(滚动条距底部的距离 滚动条上下滚动的距离 当…

【Python篇】Python 类和对象:详细讲解(下篇)

文章目录 Python 类和对象:详细讲解(下篇)15. 接口和协议(Interfaces and Protocols)15.1 什么是接口?15.2 协议的基本概念例子:定义飞行协议详细解释输出示例 16. 装饰器模式(Decor…

A02、Java编程性能调优(02)

1、Stream如何提高遍历集合效率 1.1、什么是Stream 现在很多大数据量系统中都存在分表分库的情况。例如,电商系统中的订单表,常常使用用户 ID 的 Hash 值来实现分表分库,这样是为了减少单个表的数据量,优化用户查询订单的速度。 …

ZYNQ-Utlscale-RFSOC看门狗

ZYNQ-Utlscale-RFSOC看门狗复位 ZYNQ-Utlscale-RFSOC 看门狗的程序网上里程很少,开源资料也是几乎没有,最近需要用到这个功能,来来回回搞了一周才搞定。刚开始参考ZYNQ7000的资源,发现MPSOC不适用。很感谢下面的几篇文章&#xf…

探索TinyDB:轻量级数据库的优雅之旅

文章目录 探索TinyDB:轻量级数据库的优雅之旅背景:为何选择TinyDB?TinyDB是什么?如何安装TinyDB?简单库函数使用方法场景应用常见Bug及解决方案总结 探索TinyDB:轻量级数据库的优雅之旅 背景:为…

【电子通识】电子元器件可靠性基本概念

什么是电子元器件 电子元器件是电子产品的基本组成单元, 是电子元件和电子器件的总称。 通常电子元件指的是无源元件, 电子器件指的是有源器件。无源元件是对所供给的电能执行被动操作(如耗散、储蓄或释放等)的元件, 如…

《普通人学AI指南PDF》免费下载破10万。。。

你好,我是郭震 普通人如何开始AI,用好AI? 我在今年制作的《普通人学AI指南》PDF,从中或许能帮你找到答案: 1 PDF背景介绍 此PDF我是今年开始着手制作,到6月8日终版,中间历经反复多次修改&#x…

LabVIEW布尔值比较与信号状态上升沿下降沿检测

在 LabVIEW 编程中,布尔值的比较不仅是逻辑运算的重要组成部分,还广泛应用于信号的上升沿和下降沿检测。通过理解 True > False 这样的基本表达式,以及如何在程序中检测信号的状态变化,开发者可以有效地控制系统行为&#xff0…

内存管理篇-17解开页表的神秘面纱-上

--好像并没有解开。。 1.遗留的一些问题 (1)页表存储在内存的什么地方?页表服用的对象就是MMU,主要就为了MMU单元翻译的时候提供作用,因此能存放在MMU中的TLB缓存中,也可能存放在内存中。但是在内存中的什…

【MATLAB】matlab生成的图像如何导出(三种方法教会你)

我们经常使用matlab生成各类的图,如何将其导出,导出为何种类型。 方法一:选择 matlab 生成的图形界面 " Figure 1 " 的菜单栏 " 编辑 " — " 复制图窗 " , 就可以将图像拷贝到 Word 文档中 打开 Word 文档 ,…