Linux基础命令:rm
时间:2019-08-19
本文章向大家介绍Linux基础命令:rm,主要包括Linux基础命令:rm使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
linux下rm命令使用详解---linux删除文件或目录命令
用户可以用rm命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。
rm命令的一般形式为:rm [选项]... 目录... 删除指定的<文件>(即解除链接)。 -d --directory 删除可能仍有数据的目录 (只限超级用户) -f --force 略过不存在的文件,不显示任何信息,强制删除 -i --interactive 进行任何删除操作前必须先确认 -r/R --recursive 同时删除该目录下的所有目录层 -v --verbose 详细显示进行的步骤 --help 显示此帮助信息并离开 --version 显示版本信息并离开
rm删除文件原理
文件删除原理: Linux通过文件link的数量控制文件的删除,只有当一个文件不存在任何link的时候且没有程序调用的时候,文件才会被真正删除。
就rm命令而言,就是减少磁盘引用计数i_link(文件到inode的链接数量);inode节点指向存储数据的block,删除文件并不是清除inode和block,而是将文件的硬链接为0,引用计数为0 才能删除文件
注:如果有新的数据存储或者系统通过类似fsck命令做磁盘检查的时候,被删除的数据块和目录会被释放,数据无法找回
文件删除的条件
i_nlink 文件的硬链接数量,磁盘的引用计数器 i_count 内存引用计数(一个文件被几个程序调用,有一个程序使用i_count + 1 ) i_link = 0 && i_count =0 删除一个文件,也是删除上一级目录的block里面的文件名
rm相关的问题答疑
问题1:当执行了删除操作后,ls 无法查找到这个文件,但是调用这个删除文件的进程却正常执行,依然能够读取和写入文件内容? 答案: 因为rm只是减少了i_nlink,如果没有其他的链接了[即i_link=0】,但由于文件依然被进程使用,所以即时执行了rm命令,系统并未真正的删除。 只有当i_link和i_count==0时候,系统才会整正删除这个文件,也就是删除文件还需要解除进程对该文件的调用才行。 问题2:当文件没有被调用,但是执行了rm命令,删除后的文件还能找回来么? 答案:rm只是减少了i_link的数量,实际就是将文件的inode的链接删除了,但是并没有删除文件实体(block数据块),如果停止机器工作,还是可以找回数据的。如果此时继续有数据写入,当新数据就可能会被分配到被删除的数据的block数据块,此时文件就会被真正的回收。 问题3:被进程占用的文件能否被删除? 答案: 能 问题4:如何找回没有链接指向但被进程占用的文件? 答案:lsof -c 'vim' 根据后台占用文件的命令查找
删除范例
删除前逐一询问确认 : rm -i text.txt 将 Finished 子目录及子目录中所有档案删除 : rm -r Finished 将 Finished 子目录及子目录中所有档案删除,并且不用--确认 : rm -rf Finished
原文地址:https://www.cnblogs.com/wzy23/p/11376343.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mskcc的vcf2maf极简解决方案代码分享
- 乘法逆元 线性递推阶乘求逆元、费马小定理、普适线性求逆元 欧拉定理结论
- 最新最全的varscan 软件找somatic mutation
- 【每周一库】- toml 一个toml文件解析库
- Rust FFI 编程 - bindgen 使用示例
- bug 回忆录(三)
- bug 回忆录(二)
- bug 回忆录(一)
- 曾经绊倒我的 “超级丑数”
- Flutter 完成全平台制霸:实现 Windows 应用支持
- 尤大 4 天前发在 GitHub 上的 vue-lit 是啥?
- 原创的20个Python自动化案例,一口一个,高效办公!
- 看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!
- 【Hadoop 分布式部署 三:基于Hadoop 2.x 伪分布式部署进行修改配置文件】
- DCL单例模式你不知道的秘密