天天看点

Linux删除软链接不要使用rm -f起因经过删除软链接的正确姿势

起因

清理/root家目录,之前为了方便,对网卡目录做了软链接在家目录中。

经过

使用rm删除软链接时发生了小小的意外

[08:29:51 [email protected][ ~]#ll
total 15892
-rw-------. 1 root root     2590 Apr 28 10:08 88key
-rw-r--r--. 1 root root      564 Apr 28 10:08 88key.pub
-rw-------. 1 root root     1184 Mar 16  2020 anaconda-ks.cfg
drwxrwxr-x. 3 root root     4096 Apr  9  2020 cmatrix-2.0
drwxr-xr-x  2 root root       42 Jul 12 10:07 cn.wordpress.org
-rw-r--r--  1 root root  2457389 Jul 28 15:52 create.sql.gz
-rw-r--r--. 1 root root      320 Apr 11 18:39 dln.sh
-rw-r--r--  1 root root        2 May  5 20:43 EOF
-rw-r--r--. 1 root root       19 Mar 31  2020 hello.o
-rw-r--r--  1 root root      176 May  6 22:50 init0.sh
-rw-r--r--  1 root root     2024 May 18 12:37 installMySQL8.sh
-rw-r--r--  1 root root      147 May 28 13:06 linux43.sh
-rw-r--r--. 1 root root        0 Jul  2  2020 log1..5.text
-rw-r--r--  1 root root    13026 Oct  6  2017 net_acc.sh
lrwxrwxrwx. 1 root root       31 Apr  8 10:57 network -> /etc/sysconfig/network-scripts/
drwxr-xr-x. 3 root root       22 Apr 11 18:39 nginx.org
-rw-r--r--. 1 root root    11077 Apr 11 18:15 PACK.txt
-rw-r--r--  1 root root 13738948 Mar 16 23:26 percona-xtrabackup-80-8.0.23-16.1.el8.x86_64.rpm
-rw-r--r--  1 root root      114 May  6 15:28 ssh.sh
drwxr-xr-x  2 root root       21 Jun  3 20:36 sun
[08:30:18 [email protected][ ~]#rm -rf cn.wordpress.org/
[08:30:41 [email protected][ ~]#rm percona-xtrabackup-80-8.0.23-16.1.el8.x86_64.rpm 
rm: remove regular file 'percona-xtrabackup-80-8.0.23-16.1.el8.x86_64.rpm'? y
[08:31:22 [email protected][ ~]#rm network/
rm: cannot remove 'network/': Is a directory
[08:31:42 [email protected][ ~]#rm -r network/
rm: descend into directory 'network/'? yes
rm: remove regular file 'network/ifcfg-ens33'? n
rm: remove regular file 'network/ifcfg-eth1'? n
rm: remove regular file 'network/ifcfg-eth1-1'? n
rm: remove regular file 'network/ifcfg-eth0-1r.bak'? n
rm: remove directory 'network/'? n
           
  1. 印象里隐约记得删除软链接不能用rm -rf
  2. 使用rm删除软链接,提示是目录,不能删除
  3. 顺其自然的在rm后加上了-r,但没有加-f
  4. 居然被要求删真实目录下的内容了

    WTF,这是什么鬼?

原因

  • 在输入要删除的内容时,使用table键进行了补全

    rm -r network/

  • 目录后的斜杠 / 表示进入到目录中进行删除其内容,-r表示递归,所以会在删除目录中内容后再删除目录本身

删除软链接的正确姿势

  • rm后直接跟软链接名,如果是目录则要去掉自动补全的斜杠 /

    rm <软链接名>

[08:33:54 [email protected][ ~]#rm network
rm: remove symbolic link 'network'? yes
           
  • rm的时候谨慎使用-f选项,强制删除的后果肯严重
  • 谨慎使用rm命令,生产环境使用别名替代rm命令

继续阅读