今天无意中在solaris中创建了一个文件 -exclude.tar, 试着删除时发现麻烦来了,因为这个连字号‘-’正好用于指定unix 命令的option.
开始想当然:
>rm -exclude.tar
rm: illegal option -- e
rm: illegal option -- x
rm: illegal option -- c
rm: illegal option -- l
rm: illegal option -- u
rm: illegal option -- d
rm: illegal option -- e
rm: illegal option -- .
rm: illegal option -- t
rm: illegal option -- a
usage: rm [-fiRr] file ...
转义是否可以呢?
>rm /-exclude.tar
rm: illegal option -- e
rm: illegal option -- x
rm: illegal option -- c
rm: illegal option -- l
rm: illegal option -- u
rm: illegal option -- d
rm: illegal option -- e
rm: illegal option -- .
rm: illegal option -- t
rm: illegal option -- a
usage: rm [-fiRr] file ...
接着想是否需要用引号引起来:
>rm "-exclude.tar"
rm: illegal option -- e
rm: illegal option -- x
rm: illegal option -- c
rm: illegal option -- l
rm: illegal option -- u
rm: illegal option -- d
rm: illegal option -- e
rm: illegal option -- .
rm: illegal option -- t
rm: illegal option -- a
usage: rm [-fiRr] file ...
相同的错误
改用单引号:
还是报相同的错误
后来想先把它重命名,再删除之:
>mv -exclude.tar exclude.tar
mv: illegal option -- e
mv: illegal option -- x
mv: illegal option -- c
mv: illegal option -- l
mv: illegal option -- u
mv: illegal option -- d
mv: illegal option -- e
mv: illegal option -- .
mv: illegal option -- t
mv: illegal option -- a
mv: illegal option -- r
mv: Insufficient arguments (1)
Usage: mv [-f] [-i] f1 f2
mv [-f] [-i] f1 ... fn d1
mv [-f] [-i] d1 d2
类似的错误,不能重命名! 都是这个连字号‘-’惹的祸!
同样用引号引起来也不行...这个方法也行不通!
怎么办呢?
最后才想到加上目录前缀
>rm ./-exclude.tar
OK. 成功了!真笨。
用类似的方法也可以删除其他特殊字符开头的文件或文件夹.
e.g.
>touch ./~sample.txt
>rm ~sample.txt
Unknown user: sample.txt.
>rm ./~sample.txt
另外某些字符则系统会自动加上转义字符'/'. e.g.
>touch ^caret.txt
>rm /^caret.txt
[完]