How to remove a file beginning with a dash (in Uni

2019-09-21 07:56发布

This question already has an answer here:

I have accidentally created a file in GitBash (a Unix like environment) with the name - -l (I have absolutely no idea how I managed to do this in the first place :)

Johnny (master #) scipy-tentative-numpy-tutorials $ ls -l
total 1
-rw-r--r--    1 Johnny   Administ      956 May  7 16:24 - -l
-rw-r--r--    1 Johnny   Administ      562 May  7 16:21 README.md

I wish to delete (remove) that - -l file.

I have tried a few ways but no luck. e.g.

rm "- -l"
rm "-\ \-l"
rm -\ \-l

These didn't work.

Please how do I delete the - -l file?

Thank you!

2条回答
欢心
2楼-- · 2019-09-21 08:06

Use a double hyphen (--) to stop flag parsing:

rm -- -\ -l

Alternatively, you can even use tab completion:

rm -- \- # Then press TAB immediately after typing the final -

This assumes that's the only file with a leading hyphen in the directory. Bash is smart enough to automatically escape the space in the middle of the file name.

查看更多
手持菜刀,她持情操
3楼-- · 2019-09-21 08:18

Try this:

rm ./-\ -l

or this:

rm -- -\ -l

The first solution tells the program that you're looking for a file in the current directory, thus implying the argument is not an option.

The second solution uses -- to tell the program that subsequent arguments starting with - are not options.

查看更多
登录 后发表回答