在 shell 中替换 rm

2021-03-04 10:57:44 +08:00
 xltfes

用 mv 替换 rm 时如果垃圾箱中有相同名称的目录,mv 会报错

mv: cannot move ***: Directory not empty

在网上找到一个替代方法,改进如下,之前的方案是被注释掉的部分

rm() {                                                                                                                                            
    #echo $* |sed "s/ /\n/g" |xargs -I {} mv -f {} /home/trash
    tar c $* |(cd /home/trash && tar xf - ); rm -rf $*
}

但不理解 tar 命令是怎样实现的,在 man 的标准输入输出中也没有见到相关描述,希望大佬解惑

3942 次点击
所在节点    Linux
24 条回复
icyalala
2021-03-04 18:36:41 +08:00
你这么瞎改,让那些用 rm 的脚本怎么搞?
xltfes
2021-03-04 21:03:24 +08:00
已经装了 trash-cli,不用脚本改了,看来不是一句命令可以解决的,还是要自己小心,感谢回复
no1xsyzy
2021-03-05 11:19:40 +08:00
1. 你传递参数写 $* 要出事。
λ rm "/home/me/ a file name with space"

2. 不要低毒化 rm,rm 就是危险品。不要标签上写着 “农药” 的瓶子洗干净装饮用水喝,之后你看到一个装着农药的瓶子你也以为是饮用水喝了。
你可以把 rm 替换为警告用语,并且不产生任何效果,就好比写着 “农药” 的瓶子装着石头。

3. 看到个正确方法:闭眼,深呼吸,睁眼,输入 rm 命令,深呼吸,喝一口水,让水份充分流过舌尖,感受,咽下,闭眼,深呼吸,睁眼,检查命令,重复两遍,回车。
KakuCicada
2021-03-12 11:58:11 +08:00
直接线上服务器中 rm -rf 操作了 7 8 年,没出过意外
这东西还是要看个人警惕性,删除之前再三确认路径 就不用替换

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

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

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

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

© 2021 V2EX