惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
T
Threatpost
P
Palo Alto Networks Blog
NISL@THU
NISL@THU
O
OpenAI News
Project Zero
Project Zero
G
GRAHAM CLULEY
P
Privacy International News Feed
A
Arctic Wolf
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
D
Docker
aimingoo的专栏
aimingoo的专栏
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
W
WeLiveSecurity
P
Proofpoint News Feed
腾讯CDC
Cloudbric
Cloudbric
S
Secure Thoughts
C
Check Point Blog
博客园 - Franky
T
The Exploit Database - CXSecurity.com
T
Troy Hunt's Blog
GbyAI
GbyAI
Security Archives - TechRepublic
Security Archives - TechRepublic
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
TaoSecurity Blog
TaoSecurity Blog
L
Lohrmann on Cybersecurity
V
Visual Studio Blog
F
Fortinet All Blogs
博客园 - 叶小钗
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
C
Cisco Blogs
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research

atpX

自建 S3 兼容对象存储服务 Garage 听风的歌 偶尔是深夜就好了 新玩具 AirPods Pro 3 公交车上的时间 从 WHOIS 到 RDAP 通过 WireGuard 访问 NFS 共享文件 自建音乐串流服务探索 我停止了探索 Fediverse 互联网背景噪音 我的数字生活降级 小城与确定性的墙 一只特立独行的猪 Fediverse 与社交 承认的勇气 mediaX - 轻量书影音记录管理工具 我的博客写作流程 网站新增 Misc 页面 擅长对线的鲍勃 在 Chroot 环境下使用 Rsync 同步 再见 JavaScript 当我玩博客时我在玩什么 为什么我的博客没有友链页面 小熊猫与大熊猫 (HDR 照片测试) 是时候为网站开启 HTTP/3 支持了吗 使用 AdGuard Home 搭建自用 DoH 服务 谈谈读书与消遣 2023 年终总结 西安两日游 从 AirPods「升级」到 EarPods Docker 搭建去中心化的微博客平台 Mastodon 聊聊 iPhone 15 Pro 使用感受 能否将 TOTP 二次验证存放在密码管理器里 认识史蒂夫·乔布斯 与“锤哥”克里斯·海姆斯沃斯一起养生 逃离爆炸的信息 你想活出怎样的人生 重温《龙珠》动画 为什么关闭评论 从域名注册商到 DNS 服务,找到自己的组合 如何提高用户网页阅读体验 从 Typecho 迁移到 Hugo 个人博客的最终归宿是静态网站吗 我选择了放弃 jQuery 关于我的小破站折腾速度优化这件事 记一次家庭网络折腾 贴一些 SmokePing 记录 我的域名邮箱选择 不存在的语录 Typecho 评论验证插件 CaptchaPlus 谈谈写字这件事 新的网站 Logo 探索 曲线解决 Typecho 图片占位抖动问题 自建 vaultwarden / bitwarden_rs 密码管理器 使用 Plausible 自建网站流量统计分析工具 如何优雅地徒手剥开火腿肠 简单的集中隔离生活记录 新玩具 M2 MacBook Air 使用 acme.sh 申请 Google 公共证书 Docker 搭建去中心化的微博客平台 Misskey 搭建 Lsky Pro 兰空图床 折腾树莓派系统的一天 我的吉卜力之旅 使用 Uptime Kuma 自建服务器/网站在线率监控 Spartan Host Review - Best Hosting & Service Support Debian 下 Nginx 配合 Fail2Ban 减少恶意扫描和攻击 升级 Typecho 到最新开发版本 v1.2.0 Debian 系统安装 Docker 教程 BandwagonHost - Reliable Blog and Business VPS Hosting 使用 Isso 为 Hugo/Hexo 等静态网站添加评论功能 推荐 5 款免费开源的网站流量分析统计工具 搭建 Shynet 网站流量统计分析工具 聊聊 DDoS 攻击那些事 Hugo 使用 Fancybox 实现图片灯箱/放大功能 从 Debian 10 升级到 Debian 11 教程 使用 Umami 自建网站流量统计分析工具 Linux 一次执行多个命令的 3 种方式 Typecho 修改永久链接后旧链接 301 跳转到新链接 从不同需求推荐几家稳定可靠的 VPS 服务商 Build EchoIP service with Docker 浅谈一下这些年折腾过的 VPS 单线复用解决一根网线同时 IPTV 和宽带问题 不完全吃灰的树莓派 开发一个自己的 Telegram Bot 使用 Nginx 实现 TCP 四层反向代理 画画真难 我读村上春树 使用 acme.sh 自动签发和更新证书 卡拉马佐夫式悲剧 安装 File Browser 轻量网盘工具 新玩具树莓派到手 Linux 定时自动备份数据到 OneDrive/Google Drive 记一次服务器崩溃 使用 rsync 同步文件 短信的消失 幻灭的艺术家 新玩具戴尔 S2721DGF 开箱 蝴蝶 用 Docker 整合 SeafilePro 搭建私人云盘 搭建自己的 kms 服务器
Linux rm 命令详解
ATP · 2021-10-09 · via atpX

rm (remove),是一个基本的 UNIX 命令,在 Linux 系统中是一个非常重要的命令,用于删除文件或目录。同时这也是一个应谨慎使用的命令,错误的使用此命令可能会删除重要的文件和数据。要使用 rm 删除文件,用户不需要具有读取/写入权限,但是必须有该文件上级目录的写入权限。在 Linux 中删除文件或目录不像 Windows 那样简单,因为一旦删除文件,它不会进入回收站而是完全删除,之后要想恢复非常困难的。

下面就详细介绍下 rm 命令以及在删除文件或目录时应该如何选择合适的参数。

rm 命令语法

默认情况下,rm 命令无需确认即可删除文件。一旦删除文件,文件或目录的内容将无法恢复。出于这个原因,在使用该命令时要格外小心,以避免出现不可挽回的损失。别问我怎么知道的

rm 命令的一般语法为:

rm [OPTION] [FILENAME]...

rm 命令参数

  • -f, --force: 在没有确认删除提示的下删除文件并忽略不存在的文件和参数
  • -i: 删除文件前提示确认
  • -I: 在删除三个以上的文件或递归删除文件之前提示确认,与 -i 选项相比,侵入性较小,同时提供防止频繁错误的保护。
  • -interactive [=WHEN]: 根据指定的 WHEN 进行确认提示:never,once (-I),always (-i),如果此参数不加 WHEN 则总是提示
  • --one-file-system: 递归删除一个层级时,跳过所有不符合命令行参数的文件系统上的文件
  • --no-preserve-root: 不对根目录 ‘/’ 进行任何特殊处理
  • --preserve-root [=all]: 不对根目录 ‘/’ 进行递归操作(默认启用)
  • -r, -R, -recursive: 以递归方式删除目录及其内容
  • -d, --dir: 不使用 -r/-R/-recursive 删除空目录,rm -dir 等同于 rmdir
  • -v, --verbose: 显示正在进行的步骤
  • --help: 显示可用的命令选项
  • --version: 输出 rm 命令的版本信息

可以输入 rm --help 查看所有帮助信息:

linux-rm-help

删除一个文件

要删除一个文件,直接在 rm 后面加上你要删除的文件名:

rm filename

执行后会发生了下面两种情况中的一个:

  • 如果你没有父目录的权限,将会输出 “Operation not permitted” 错误;
  • 如果没有写入保护,文件将被直接删除并且没有提示。

强制删除文件

使用 -f 参数允许用户无需确认即可删除写保护的文件:

rm -f filename

注意:-f 参数不适用于写保护的目录。

删除多个文件

要删除多个文件,直接在 rm 后面加上你要删除的所有的文件名,用空格隔开即可:

rm atp1.txt atp2.txt atp3.txt

还可以使用 ‘*’ 任意匹配,例如用上面的命令可以写为:

rm atp*.txt
linux-rm-muti-files

同样的,如果要删除该目录下所有 .txt 文件:

rm *.txt

删除目录

rm 命令可用于删除目录,但是我们使用两种不同的方法来删除空目录和非空目录。

删除空目录

要删除空目录,可以使用 -d 参数(等同于 rmdir 命令):

rm -d dirname

删除非空目录

要删除非空目录及其内容,需要使用 -r 参数:

rm -r dirname

删除文件前确认提示

-i 参数用于在删除文件之前要求确认。此时需要按下 y 键确认或者 n 键取消:

rm -i filename

删除多个文件或目录时, -i 参数可以派上用场,在删除每个文件之前提示确认,例如:

rm -i atp*.txt
linux-rm-i-file

如果删除三个以上的文件,只想要提示一次,可以使用 -I 参数,将只会确认被删除的文件数,例如:

rm -I atp1.txt atp2.txt atp3.txt atp4.txt
linux-rm-I-file

输出删除过程/结果

rm 命令通常以静默方式删除文件,如果你想知道每个文件删除的过程,可以使用 -v 参数,例如:

rm -v atp1.txt atp2.txt atp3.txt
linux-rm-I-file

删除的文件名中包含特殊字符

文件名包含空格

删除包含空格的文件时,有两种方式:

  1. 将文件名用引号括起来:
rm -i 'filename with spaces'
  1. 使用反斜杠转义每个空格:
rm -i filename\ with\ spaces

文件名以破折号开头

因为 rm 会将 ‘-’ 识别为一个参数,所以删除以破折号开头的文件时需要注意一下,有两种方法:

有两种方法可以做到这一点:

  1. 前面加上双破折号:
rm -- -filename
  1. 加上文件的路径:
rm /home/-filename

注意:不推荐创建文件/目录的名称中包含特殊字符或空格。