rm命令学习

news/2024/12/22 19:59:29/

删除文件

rm
rm命令(remove的简写)用来删除文件。这条命令会彻底地删除文件,文件将不复存在。Linux命令行可没有“垃圾箱”或“回收站”之类的东西。shell缺少一个恢复删除文件的命令,最好一开始就小心些。
如果你想确保绝对没有人能恢复你删除的文件,即便是顶级高手也不可以恢复,请使用shred命令来代替rm命令。shred命令会重写文件多达25次,所以再想恢复被删除的文件是不可能的事。
使用rm命令很简单,甚至有些人可能会认为太容易了。

$ pwd
/home/scott/libby/by_pool/lieberman_pool
$ ls
pool_01.jpg      pool_03.jpg
pool_01.jpg_bak  pool_03.jpg_bak
$ rm pool_01.jpg_bak
$ ls
pool_01.jpg  pool_03.jpg  pool_03.jpg_bak

使用通配符一次删除多个文件

rm *
使用像“*”这样的通配符,就能删除多个文件。

$ pwd
/home/scott/libby/by_pool/lieberman_pool
$ ls
pool_01.jpg      pool_03.jpg
pool_01.jpg_bak  pool_03.jpg_bak
$ rm *_bak
$ ls
pool_01.jpg  pool_03.jpg

警告 使用通配符删除文件的时候一定要非常、非常、非常小心,否则有可能删除很多你原本不想删除的文件。

删除文件时显示执行过程

rm -v
如果你想知道rm命令执行时到底在做什么,可以使用-v(或–verbose)选项。

$ pwd
/home/scott/libby/by_pool/lieberman_pool
$ ls
pool_01.jpg      pool_03.jpg
pool_01.jpg_bak  pool_03.jpg_bak
$ rm -v *_bak
removed 'pool_01.jpg_bak'
removed 'pool_03.jpg_bak'
$ ls
pool_01.jpg pool_03.jpg

2.37 防止删除重要文件
rm -i
-i选项(或–interactive)可以提供一定的安全机制。在删除每个文件之前,它会先询问你是否要删除。

$ pwd
/home/scott/libby/by_pool/lieberman_pool
$ ls
pool_01.jpg      pool_03.jpg
pool_01.jpg_bak  pool_03.jpg_bak
$ rm -i *_bak
rm: remove regular file 'pool_01.jpg_bak'?  y
rm: remove regular file 'pool_03.jpg_bak'?  y
$ ls
pool_01.jpg   pool_03.jpg

y表示同意删除文件,n表示忽略这个文件,并继续处理下一个文件。

删除空目录

rmdir
删除目录

$ pwd
/home/scott/libby/by_pool
$ ls
pool_02.jpg  lieberman_pool  lieberman_pool_bak
$ ls lieberman_pool_bak
pool_01.jpg      pool_03.jpg
pool_01.jpg_bak  pool_03.jpg_bak
$ rm lieberman_pool_bak
rm: cannot remove 'lieberman_pool_bak/':  Is a directory
$ rmdir lieberman_pool_bak
rmdir: 'lieberman_pool_bak/': Directory not empty

rmdir命令只能删除空目录。

删除文件和非空的目录

rm -Rf
删除非空目录,还有一种更为简单的方法:把-R(或–recursive)和-f(或–force)选项结合起来使用。-r选项告诉rm命令进入到它发现的每个子目录中去删除文件,而-f选项只是告诉rm命令完成任务但不要因为些细节问题(比如文件夹非空)。

$ pwd
/home/scott/libby/by_pool
$ ls
pool_02.jpg  lieberman_pool  lieberman_pool_bak
$ ls lieberman_pool_bak
pool_01.jpg      pool_03.jpg
pool_01.jpg_bak  pool_03.jpg_bak
$ rm -Rf lieberman_pool_bak
$ ls
pool_02.jpg lieberman_pool

警告 rm–Rf命令有可能损坏你的重要文件和系统。
经典的Linux警告就是,当作为root登录时,不要输入rm -Rf /命令。这样你将删除你的系统。
一般来说,在rm–Rf命令中使用通配符要小心谨慎。rm -Rf libby和rm -Rf libby 之间有着巨大的差异。前者会删除工作目录中以libby开头的所有东西,后者会删除任何名称恰好是libby的文件或文件夹,然后再删除目录中的所有其他东西。
永远不要输入rm -Rf .
/*删除以点号.作为名称开始的目录,因为这也匹配…,最终将删除当前工作目录的上级目录的所有东西。
再重申一次:作为普通用户,一定要慎用rm –Rf命令。作为root用户使用rm–Rf命令时一定要保持高度警惕。

删除难缠的文件

在结束rm命令的讨论之前,你应该了解一些这个命令与系统中特定文件之间的关系。首先,不管怎么删除,都不可能删除目录.和…,因为它们是保持文件系统层次结构所必需的。况且,为什么非要删除它们呢?就让它们呆在那儿吧。
如何删除名称中带有空格的文件呢?调用rm命令的普通方法(命令名,后面跟着文件名),是不会起作用的,因为rm命令认为你说的是两个不同的文件。实际上,删除Cousin Harold的图片并不太难。只需要将文件的名称用引号括起来就可以了。

$ ls
cousin harold.jpg -cousin_roy.jpg cousin_beth.jpg
$ rm cousin harold.jpg
rm: cannot remove 'cousin': No such file or  directory
rm: cannot remove 'harold.jpg': No such file or  directory
$ rm "cousin harold.jpg"
$ ls
-cousin_roy.jpg cousin_beth.jpg

删除名称由“-”字符开始的文件

$ ls
-cousin_roy.jpg  cousin_beth.jpg
$ rm -cousin_roy.jpg
rm: invalid option -- c
Try 'rm --help' for more information.

rm命令看到“-”符号时,会认为它是一个选项的开始,但是它并不认识由字母c开始的选项。接着再遇到的是ousin_roy.jpg,它更不知道如何处理了。
有两种解决方案。你可以在有问题的文件名称的前面放 “–”,它会告诉命令:跟在后面的任何东西都不能作为选项,而是文件或文件夹的名称。

$ ls
-cousin_roy.jpg cousin_beth.jpg
$ rm -- -cousin_roy.jpg
$ ls
cousin_beth.jpg

除此以外,还可以使用.作为路径名的一部分,这样,就可以在-干扰rm命令,让它以为文件名是实际选项之前就避免这个问题。

$ ls
-cousin_roy.jpg cousin_beth.jpg
$ rm ./-cousin_roy.jpg
$ ls
cousin_beth.jpg

还有,不要在文件名开始的地方用连字符。


http://www.ppmy.cn/news/1506329.html

相关文章

低代码开发:机遇与挑战

目录 一、什么是低代码开发? 二、低代码开发的机遇 1. 加速开发周期 2. 降低开发门槛 3. 提高生产效率 三、低代码开发的挑战 1. 定制化限制 2. 技术债务累积 3. 安全性问题 四、低代码开发如何改变开发者的工作方式? 1. 专注业务逻辑 2. 团队…

Gdao v1.1.0:Go语言高效ORM框架全面解析

简介:gdao是一种创新的持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用gdao,可以在持久层设计上,减少30%…

Linux: security: openssh: v9.8 的一个小改动

这个改动,相对于之前的版本,产生的变化是per-session相关的进程名称,由sshd变成了sshd-session。如果有应用依赖于这个进程名称,就需要注意了。 https://www.openssh.com/releasenotes.html#9.8p1 * sshd(8): the server has been split into a listener binary, sshd(8),a…

Java高级Day23-HashMap

74.HashMap Map接口常用实现类:HashMap、Hashtable和Properties HashMap是Map接口使用频率最高的实现类 HashMap是以key-value对的方式来存储数据 key不能重复,但是值可以重复,允许使用null健和null值 如果添加相同的key,会覆…

交换机常用的贴片网络变压器,滤波器H5084NL / H82409S

华强盛电子导读千兆交换机: 199/2643/0038 在交换机行业中,常用的贴片网络变压器和滤波器型号会根据具体的应用需求、性能指标、成本考量等因素而有所不同。通常,这些器件需要满足网络通信中的高频传输、阻抗匹配、信号隔离、电磁兼容&…

5个适用于Linux系统的PDF转Word工具

凭借其跨平台和设备的统一标准、兼容性和规模小巧等主要优点,可携带文档格式(PDF)可谓最主流的文件格式之一。 市面上有许多查看PDF文件的强大工具,因此所有Linux系统的用户都可以根据自身喜好找到合适的PDF查看工具。然而&#x…

k8s核心架构分析

k8s核心概念概述 Kubernetes入门:掌握集群核心,释放容器潜能 技术爱好者们,CD集群的核心概念是构建、部署和管理容器化应用的基石。掌握这些概念,不仅助你深入理解技术细节,更能在CD集群中自如操作,无论是…

Unity复制资源目录并添加新的引用关系

有时候需要复制一个场景目录制作新的场景,打包场景也是独立资源,不希望资源复用。我们直接使用CtrlD复制资源,里面的预设,材质等都还是指向原有的,所以废话不多说,直接上代码。 操作窗口 首先是制作一个复…