除了 rm 之外就没有其他更安全的删除文件的方法吗?比如遇到删除系统核心的目录直接报错,或者提示没有权限,或者给强提醒,或者给个后悔药啥的。

281 天前
 helphelp

最起码不像 rm -rf 一样,删除/的话 什么提示都没有

看了这两天的热帖,有两个都是因为 rm -rf 误删的,我自己之前说实话也执行过,想问一下有好的方法吗?

5595 次点击
所在节点    程序员
73 条回复
em70
281 天前
自己加的 f,还怪人不提示
Vegetable
281 天前
你是否在找 sudo
unintialized
281 天前
直接改 rm 的源码, 把-f 这个参数给 nop 掉 <doge>
realpg
281 天前
对于一个合格的运维,rm 就不可能误删
查 history
习惯不好的都开了

企业内规范定好,

比如你想删除/home/a 下面的所有文件
那么你应该要么切到 a 上级
rm -rf a/*
要么
rm -rf a
然后重新创建 a

进入 a 目录再 rm -rf * 的 写岗位手册里全开除就完事

这就是我公司我定的规则
akira
281 天前
最好的办法就是不要登服务器。 其它方法都是治标不治本的
timochan
281 天前
不要盲目使用 ROOT 权限不就行了,需要的时候再 sudo
ivvei
281 天前
@realpg a 后面手抖多敲一个空格你怎么破?
realpg
281 天前
@ivvei #7

首先,习惯不好就是运维最大的问题。该多按 tab 的地方不按就是这结果

手抖的造成重大事故是个人责任,劳动法琢磨好,离职补偿就省下啦
nuk
281 天前
在每次更改之前 snapshot ,直接给你回溯的机会
cyningxu
281 天前
这话问得,f 不是运行命令的人加的么
Jirajine
281 天前
@realpg #4 非常糟糕的规则,这样做麻烦不说,如果目录 a 有特殊的权限或其他 attribute 都会无法保留。
rm -rf * 要么执行前按 tab 通过 glob expansion 把*替换成实际要删除的文件名,要么 alias rm='rm -I' 或者其他 trash cli 提供二次确认。
不过这些都不能解决之前那个帖子容器环境下默认 shell 补全和配置都很受限的情况。
ydpro
281 天前
记得之前 github 上有一个项目就是可以回滚输入的命令,但是忘记叫什么了。
iblessyou
281 天前
@em70 应该主要还是想找个 windows 回收站类似的。
realpg
281 天前
@Jirajine #11
没说完而已 后面有说了完整的

特殊权限的
绝对目录或者切到上级
rm -rf a/*
不允许直接本机-f
someonedeng
281 天前
rm 改成移动到某个目录,然后定期清理
joyhub2140
281 天前
都不如打快照来得安心。
tairan2006
281 天前
trash
matchalatte
281 天前
alias rm=trash-put
trash-cli 类似于桌面环境的回收站,删除只是移到另一个路径,可以用 trash-empty 30 清理 30 天前的垃圾文件。
https://github.com/andreafrancia/trash-cli
Jirajine
281 天前
@realpg #14 如果 a 是一个含有空格的目录名,仍然可能会导致误删除。而且切了工作目录忘切回去怎么办?要不规范再加一条切到上级不许用 cd ,必须用 pushd 和 popd 。

其实如果 rm 是 GNU coreutils 提供的,直接要求使用或 alias 一个 -I 就可以了,该选项会在删除多个文件是提醒用户确认一次。
realpg
281 天前
@Jirajine #19
公司环境不存在有空格的目录名 而且手册建议 tab 确认会自动加上引号

你总是试图用那些特例来质疑已经稳定运行很久的规则 而我不可能把公司运维岗位规范手册那么厚的一本都贴 V2 论坛上

感觉,您真的,就好像互联网上的那种运动器材成精生物……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/976664

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX