在 shell 中替换 rm - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
xltfes
V2EX    Linux

在 shell 中替换 rm

  •  
  •   xltfes 2021-03-04 10:57:44 +08:00 4544 次点击
    这是一个创建于 1771 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 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 的标准输入输出中也没有见到相关描述,希望大佬解惑

    24 条回复    2021-03-12 11:58:11 +08:00
    yyyb
        1
    yyyb  
       2021-03-04 11:09:10 +08:00
    可以加个时间后缀
    huangmingyou
        2
    huangmingyou  
       2021-03-04 11:13:08 +08:00
    rm 有这么可怕吗 :D
    hlwjia
        3
    hlwjia  
    PRO
       2021-03-04 11:17:21 +08:00   1
    @huangmingyou 对 rm 不够害怕的只因为命令还敲地不够多
    xltfes
        4
    xltfes  
    OP
       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
        5
    whee1  
       2021-03-04 11:32:14 +08:00 via iPhone
    切换有 snapshot 功能的文件系统( btrfs,zfs ),日常使用启动到 snapshot 。
    注意不要随便补全。
    boris93
        6
    boris93  
       2021-03-04 11:37:34 +08:00 via iPhone   2
    替换 rm 是头痛医头脚痛医脚,还会让人降低对 rm 的警惕

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

    防止出错这种事,要么靠备份,要么靠注意,二者皆有更好
    cianchen
        7
    cianchen  
       2021-03-04 12:06:28 +08:00
    tar c 打包$*(你要删除的文件),(进入到 /home/trash 目录)管道(|) 传递文件流给 tar -xf -,进行解压缩(此时你要删除的文件被解压缩到 /home/trash 目录,可以理解为于 cp),之后调用 rm -rf 直接删除你要删除的文件。
    weixiangzhe
        8
    weixiangzhe  
       2021-03-04 12:16:14 +08:00
    还是用 trash-cli 之类的吧, 删除了还能在 .trash 文件夹里找到
    weixiangzhe
        9
    weixiangzhe  
       2021-03-04 12:18:06 +08:00
    个人 alias 配置
    [img][/img]
    ihipop
        10
    ihipop  
       2021-03-04 12:18:41 +08:00 via Android
    pip install trash cli
    pkookp8
        11
    pkookp8  
       2021-03-04 12:40:43 +08:00 via Android   1
    控制好权限,rm 随便用
    每次都 root,神仙也救不了
    huangmingyou
        12
    huangmingyou  
       2021-03-04 13:08:24 +08:00
    @hlwjia 从 2001 年开始到现在一直用 linux,我 rm 命令敲的应该不算少。
    jzmws
        13
    jzmws  
       2021-03-04 13:43:57 +08:00
    rm 我改成 mv 的
    fo0o7hU2tr6v6TCe
        14
    fo0o7hU2tr6v6TCe  
       2021-03-04 13:47:40 +08:00
    用了两年的 linux
    rm -rf * 经常在用 也就哭了 1 一次 (跑
    scukmh
        15
    scukmh  
       2021-03-04 13:56:37 +08:00
    用了快 5 年 linux 了,一直 root 用户使用,还没误删过东西。
    liuxu
        16
    liuxu  
       2021-03-04 14:47:51 +08:00
    @hlwjia 我敲了快 10 年了感觉还行
    hbolive
        17
    hbolive  
       2021-03-04 15:15:50 +08:00
    我们这运维,都是 root 直接 rm -rf,但愿他没事。。
    libook
        18
    libook  
       2021-03-04 16:37:28 +08:00
    试试 trash-cli
    Jirajine
        19
    Jirajine  
       2021-03-04 16:58:23 +08:00 via Android
    用 grml-zsh 的配置,rm 删除多个文件时有二次确认的提示。
    MeteorCat
        20
    MeteorCat  
       2021-03-04 18:34:32 +08:00 via Android
    rm 改成 mv,还是能预防不少问题的
    icyalala
        21
    icyalala  
       2021-03-04 18:36:41 +08:00
    你这么瞎改,让那些用 rm 的脚本怎么搞?
    xltfes
        22
    xltfes  
    OP
       2021-03-04 21:03:24 +08:00
    已经装了 trash-cli,不用脚本改了,看来不是一句命令可以解决的,还是要自己小心,感谢回复
    no1xsyzy
        23
    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
        24
    KakuCicada  
       2021-03-12 11:58:11 +08:00
    直接线上服务器中 rm -rf 操作了 7 8 年,没出过意外
    这东西还是要看个人警惕性,删除之前再三确认路径 就不用替换
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4001 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 04:12 PVG 12:12 LAX 20:12 JFK 23:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86