rm命令学习

embedded/2024/10/19 9:36:22/

删除文件

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/embedded/93368.html

相关文章

前端获取视频文件宽高信息和视频时长

安装 yarn add video-metadata-thumbnails | npm install video-metadata-thumbnails引入依赖包 import { getMetadata } from video-metadata-thumbnails使用 if (file.name.includes(mp4)) {if (file) {try {console.log(file)// 获取视频的元数据const metadata await …

使用 MongoDB 构建 AI:Flagler Health 的 AI 旅程如何彻底改变患者护理

Flagler Health 致力于为慢性病患者提供支持,为其匹配合适的医生以提供合适的护理。 通常,身患严重病痛的患者面临的选择有限,他们往往需要长期服用阿片类药物,或寻求成本高昂的侵入性外科手术干预。遗憾的是,后一种方…

深入了解指针(5)

1. 数组指针变量 2. ⼆维数组传参的本质 3. 函数指针变量 2. ⼆维数组传参的本质 3. 函数指针变量 ) 1.数组指针变量 1.1了解数组指针变量的概念 整形指针变量 ——变量——存放的是整形的地址 字符指针变量——变量——存放的是字符的地址 数组指针——变量——存放的是数组的…

Thinkphp5x远程执行命令及getshell

一.环境配置 靶场:vulhub/thinkphp/5-rce docker-compose up -d #启动环境 访问靶场: 漏洞利用: 漏洞根本源于 thinkphp/library/think/Request.php 中method⽅法可以进⾏变量覆盖,通 过覆盖类的核⼼属性filter导致rce&#xf…

云原生周刊:Knative 1.15 版本发布|2024.8.5

开源项目推荐 helm-secrets helm-secrets 是一个 Helm 插件,用于动态解密加密的 Helm 值文件。 Tofu Controller Tofu Controller(以前称为 Weave TF-Controller)是 Flux 的一个控制器,用于以 GitOps 方式协调 OpenTofu 和 Te…

Stable Diffusion绘画 | 提示词基础原理

提示词之间使用英文逗号“,”分割 例如:1girl,black long hair, sitting in office 提示词之间允许换行 但换行时,记得在结尾添加英文逗号“,”来进行区分 权重默认为1,越靠前权重越高 每个提示词自身的权重默认值为1,但越靠…

MacBook2024非常出色的虚拟机软件Parallels Desktop19.3中文免费版本

最近我被问得最多的一个问题就是:能不能在一台设备上同时使用Windows系统和macOS系统?答案当然是肯定的,你只需要一款虚拟机软件就能轻松实现。今天,我就来为大家安利一款非常出色的虚拟机软件——Parallels Desktop19。 这款软件…

spark3.3.4 上使用 pyspark 跑 python 任务版本不一致问题解决

问题描述 在 spark 上跑 python 任务最常见的异常就是下面的版本不一致问题了: RuntimeError: Python in worker has different version 3.7 than that in driver 3.6, PySpark cannot run with different minor versions. Please check environment variables PY…