Linux如何删除以特殊字符开头的文件

  作者:zhanhailiang 日期:2014-11-18

Linux在使用一些工具时经常会生成一些以特殊字符开头的文件,如以-开头,此时若使用普通rm,会提示“invalid option”:

[root@~]# rm -\,trail\:- 
rm: invalid option -- ','
Try `rm ./-,trail:-' to remove the file `-,trail:-'.
Try `rm --help' for more information.

这是因为Linux Shell默认认为-o|–option表示选项配置,而在当前命令rm中读不到相应的选项配置,所以报错。

通过rm –help可以看到:

To remove a file whose name starts with a `-', for example `-foo',
use one of these commands:
  rm -- -foo
 
  rm ./-foo

总之,要删除掉特殊文件,可以使用绝对路径或相对路径或–来避免错误地将文件名解析为选项配置,以下提供多种操作方案:

第一种:rm – filename

[root@~]# rm -- -\,trail\:- 
rm: remove regular empty file `-,trail:-'? 

第二种:rm 相对路径

[root@~]# rm ./-\,trail\:- 
rm: remove regular empty file `./-,trail:-'? 

第三种:rm 绝对路径

[root@~]# rm ~/-\,trail\:- 
rm: remove regular empty file `/root/-,trail:-'?

更深入一点,分析源码:

首先,下载源码包:

[root@~/software]# wget http://down1.chinaunix.net/distfiles/coreutils-8.4.tar.gz

查看src/rm.c源码:

Linux如何删除以特殊字符开头的文件_第1张图片

可见,当参数以特殊字符-开头,且不在选项配置中时rm直接报错。

你可能感兴趣的:(linux,shell)