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

如何安全的删除软连接?

  •  
  •   k8ser · 2020-06-22 11:35:05 +08:00 · 7050 次点击
    这是一个创建于 1375 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如何安全的删除软连接? 一不小心就加了个 /

    30 条回复    2020-06-24 22:38:05 +08:00
    Latin
        1
    Latin  
       2020-06-22 11:58:42 +08:00   ❤️ 1
    rm -rf /
    MCVector
        2
    MCVector  
       2020-06-22 12:03:55 +08:00 via Android   ❤️ 8
    强烈建议不要发 rm -rf / 这样的东西。很容易误导通过搜索引擎过来的新手。我刚刚开始用 Linux 的时候有一次垃圾箱删不掉,看到一个论坛里有这样的命名,结果用了以后把作业都删掉了。
    vk42
        3
    vk42  
       2020-06-22 12:08:14 +08:00
    删软链接别加-r 就没事,最多报错
    visonnn
        4
    visonnn  
       2020-06-22 12:15:30 +08:00   ❤️ 1
    1 楼这种回复不好笑,也很不负责任。
    loading
        5
    loading  
       2020-06-22 12:16:54 +08:00 via Android   ❤️ 1
    root 权限了,不小心并不是理由。
    Netfix
        6
    Netfix  
       2020-06-22 12:20:05 +08:00   ❤️ 2
    看上面几楼好像是没看懂题目把,删除软连接后面+/ 会删除源文件 如果 tab 补全 默认会加 /
    libook
        7
    libook  
       2020-06-22 12:29:57 +08:00   ❤️ 1
    一方面是操作的时候仔细一些,确保输入的指令无误再执行;另一方面可以借助一些工具来确保可以恢复误操作,比如 trash-cli 这种工具可以使用 trash 指令来将文件放入回收站。
    McZoden
        8
    McZoden  
       2020-06-22 12:31:13 +08:00
    unlink
    eallion
        9
    eallion  
       2020-06-22 12:36:03 +08:00
    ln --help
    nightwitch
        10
    nightwitch  
       2020-06-22 12:48:28 +08:00   ❤️ 1
    apt instal trash-cli
    alias rm=trash
    liangch
        11
    liangch  
       2020-06-22 13:31:09 +08:00
    @Livid 1#恶意回复
    asilin
        12
    asilin  
       2020-06-22 13:31:32 +08:00
    unlink
    flyingghost
        13
    flyingghost  
       2020-06-22 14:02:24 +08:00
    @MCVector 那么问题来了,把一个低级错误像段子一样广为传播,到底是有利于新手避开错误,还是造成更多的人亦步亦趋掉进同样的坑里?
    Latin
        14
    Latin  
       2020-06-22 14:45:18 +08:00
    @liangch 你这是诋毁我哈,冷笑话不好笑就算了。好歹有点常识的也不会听风就是雨吧?
    wzxlovesy
        15
    wzxlovesy  
       2020-06-22 15:12:05 +08:00 via Android
    @Latin 在别人看来你这就是恶意回复,哪里是冷笑话
    whwq2012
        16
    whwq2012  
       2020-06-22 15:13:34 +08:00 via iPhone
    @Latin 呵呵,这种回复在 linux 吧是要封禁几天的
    Oysmart
        17
    Oysmart  
       2020-06-22 15:52:01 +08:00   ❤️ 1
    原来开过这种玩笑,但现在不会了,不要用自己的眼光去定义新手;
    新手往往会不假思索的去执行,对数据还是保持敬畏之心。
    CEBBCAT
        18
    CEBBCAT  
       2020-06-22 17:04:21 +08:00
    @Latin #14 好歹加个 doge
    crella
        19
    crella  
       2020-06-22 17:31:03 +08:00 via Android
    我用 debian9 的时候 rm -rf /这个危险命令会提示确认删除的了啊?
    zviacx
        20
    zviacx  
       2020-06-22 18:15:12 +08:00
    aloxaf
        21
    aloxaf  
       2020-06-22 19:06:24 +08:00
    1. 不要没事乱加 rf,你要删的又不是目录
    2. 标准做法是使用 unlink
    3. 为了防止误删建议 alias rm=rm -i
    4. 为了误删之后还能恢复请使用 trash-cli (这个太长我一般 alias 到 del )
    5. 如果你是像前面说的因为 tab 补全会加上 / 而误操作的花,建议使用 zsh 。zsh 很多细节真的处理得非常好:补全目录时自动添加的 / ,在侦测到你接下来输入的也是 / 或者分号、空格、回车时,就会被自动删掉。
    qnnnnez
        22
    qnnnnez  
       2020-06-22 19:46:14 +08:00
    3 楼说得没错呀。
    unlink 和 rm 没啥区别吧(我还不知道有个程序叫 unlink ),因为 unlink 不能加 -r ?
    HarryQu
        23
    HarryQu  
       2020-06-22 22:54:26 +08:00
    既然想安全,就尽量少用 rm 。你可以建一个临时目录,将想要删除的文件,使用 mv 移动到临时目录,定时清理临时目录即可。
    Illusionary
        24
    Illusionary  
       2020-06-22 23:14:29 +08:00
    rm -f,从未失手
    msg7086
        25
    msg7086  
       2020-06-23 07:38:45 +08:00
    软连接相当于文件,不需要加斜线啊。

    @Netfix 换个好点的 shell,不会乱加斜线的那种。

    @flyingghost 写上解释比光发一个命令更利于新手避开错误。
    Coolwinds
        26
    Coolwinds  
       2020-06-23 13:29:01 +08:00
    一楼真没意思,谁没有还是个菜鸟的时候
    MayKiller
        27
    MayKiller  
       2020-06-23 14:51:41 +08:00
    `fd <location> -type l`
    检查一下当前存在的软链再操作就好....
    qbqbqbqb
        28
    qbqbqbqb  
       2020-06-24 11:53:10 +08:00   ❤️ 1
    @qnnnnez Linux 里 rm 和 unlink 确实没多大区别
    有区别的是 macOS,因为 macOS 的文件系统支持目录硬链接(注意不是软链接,且系统中有相关机制确保目录“树”无环),众所周知 rm 和 rmdir 是无法直接删除有文件的目录的,如果要消除一个目录硬链接而不影响其中文件的话必须用 unlink 。
    至于软连接,无论在什么平台上都是直接 rm (不加-r )就行
    MCVector
        29
    MCVector  
       2020-06-24 13:16:27 +08:00 via Android
    @flyingghost 那就看有多少人是先接触段子了🤔
    TK4E
        30
    TK4E  
       2020-06-24 22:38:05 +08:00
    以防万一

    alias rm='mv -t /root/.Rubbish'
    alias rmrf='\rm -rf /root/.Rubbish/*'

    现在 rm -rf / 也不能直接删除吧 反倒是要小心 rm -rf *
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   943 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:52 · PVG 04:52 · LAX 13:52 · JFK 16:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.