在 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 条回复
yyyb
2021-03-04 11:09:10 +08:00
可以加个时间后缀
huangmingyou
2021-03-04 11:13:08 +08:00
rm 有这么可怕吗 :D
hlwjia
2021-03-04 11:17:21 +08:00
@huangmingyou 对 rm 不够害怕的只因为命令还敲地不够多
xltfes
2021-03-04 11:27:54 +08:00
我一直觉得不用,直到昨天 rm -r ../*

测试了一下不好使,把 tar 改成 cp 了,但 tar 还是不明白
在( https://linuxpip.org/fix-directory-not-empty-mv/)的 method 2 看到的 tar 命令
(cd backup && tar c .) | (cd backupArchives && tar xf -)
想要"earn more geek points"
whee1
2021-03-04 11:32:14 +08:00
切换有 snapshot 功能的文件系统( btrfs,zfs ),日常使用启动到 snapshot 。
注意不要随便补全。
boris93
2021-03-04 11:37:34 +08:00
替换 rm 是头痛医头脚痛医脚,还会让人降低对 rm 的警惕

不如 select before delete,删之前,确认目录内容,确认路径,然后再删

防止出错这种事,要么靠备份,要么靠注意,二者皆有更好
cianchen
2021-03-04 12:06:28 +08:00
tar c 打包$*(你要删除的文件),(进入到 /home/trash 目录)管道(|) 传递文件流给 tar -xf -,进行解压缩(此时你要删除的文件被解压缩到 /home/trash 目录,可以理解为于 cp),之后调用 rm -rf 直接删除你要删除的文件。
weixiangzhe
2021-03-04 12:16:14 +08:00
还是用 trash-cli 之类的吧, 删除了还能在 .trash 文件夹里找到
weixiangzhe
2021-03-04 12:18:06 +08:00
个人 alias 配置
[img][/img]
ihipop
2021-03-04 12:18:41 +08:00
pip install trash cli
pkookp8
2021-03-04 12:40:43 +08:00
控制好权限,rm 随便用
每次都 root,神仙也救不了
huangmingyou
2021-03-04 13:08:24 +08:00
@hlwjia 从 2001 年开始到现在一直用 linux,我 rm 命令敲的应该不算少。
jzmws
2021-03-04 13:43:57 +08:00
rm 我改成 mv 的
fo0o7hU2tr6v6TCe
2021-03-04 13:47:40 +08:00
用了两年的 linux
rm -rf * 经常在用 也就哭了 1 一次 (跑
scukmh
2021-03-04 13:56:37 +08:00
用了快 5 年 linux 了,一直 root 用户使用,还没误删过东西。
liuxu
2021-03-04 14:47:51 +08:00
@hlwjia 我敲了快 10 年了感觉还行
hbolive
2021-03-04 15:15:50 +08:00
我们这运维,都是 root 直接 rm -rf,但愿他没事。。
libook
2021-03-04 16:37:28 +08:00
试试 trash-cli
Jirajine
2021-03-04 16:58:23 +08:00
用 grml-zsh 的配置,rm 删除多个文件时有二次确认的提示。
MeteorCat
2021-03-04 18:34:32 +08:00
rm 改成 mv,还是能预防不少问题的

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

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

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

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

© 2021 V2EX