目录中无意间出现了 -- 这个文件
[root@dev tmp]# ls
-- 00 01 02 03 04 05 06 07 08 09
[root@dev tmp]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 23 15:31 --
-rw-r--r-- 1 root root 0 Oct 23 15:37 00
-rw-r--r-- 1 root root 0 Oct 23 15:37 01
-rw-r--r-- 1 root root 0 Oct 23 15:37 02
-rw-r--r-- 1 root root 0 Oct 23 15:37 03
-rw-r--r-- 1 root root 0 Oct 23 15:37 04
-rw-r--r-- 1 root root 0 Oct 23 15:37 05
-rw-r--r-- 1 root root 0 Oct 23 15:37 06
-rw-r--r-- 1 root root 0 Oct 23 15:37 07
-rw-r--r-- 1 root root 0 Oct 23 15:37 08
-rw-r--r-- 1 root root 0 Oct 23 15:37 09
怎么删都无法删除
[root@dev tmp]# rm -rf *
[root@dev tmp]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 23 15:31 --
甚至是rm -rf
[root@dev tmp]# rm -rf \-\- && ll
total 0
-rw-r--r-- 1 root root 0 Oct 23 15:31 --
[root@dev tmp]# rm -rf \\-\\- && ll
total 0
-rw-r--r-- 1 root root 0 Oct 23 15:31 --
[root@dev tmp]# mv -- xx
mv: missing destination file operand after `xx'
Try `mv --help' for more information.
[root@dev tmp]# mv \-\- xx
mv: missing destination file operand after `xx'
Try `mv --help' for more information.
为什么这样的字符无法删掉、rm命令是怎么处理的?
伊谢尔伦2017-04-17 13:41:48
You can read the manual
[root@cc tmp]# rm --help
To remove a file whose name starts with a `-', for example `-foo',
use one of these commands:
rm -- -foo
rm ./-foo
Note that if you use rm to remove a file, it is usually possible to recover
the contents of that file. If you want more assurance that the contents are
truly unrecoverable, consider using shred.
So there are two ways to delete it
Add -- or ./ to delete it
[root@cc tmp]# rm -rf -- --
[root@cc tmp]# rm -rf ./--
天蓬老师2017-04-17 13:41:48
rm -rf -- --
--
For most commands, it is used to mark the end of the command's own parameters
For example
$ echo a > test
$ cat -n test
1 a
$ cat -n -- test
1 a
$ cat -- -n test
cat: -n: 没有那个文件或目录
a
--
The former are the configuration parameters of the command itself, and the latter are the parameters such as files and objects that the command will act on
When you write only one --
, it will be used as a separator. If you write it twice, the first one will be used as a separator, and the second one will be used as a command parameter