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

2019-09-21 07:24发布

问题:

This question already has an answer here:

  • How do I deal with a filename that starts with the hyphen (-) character? 4 answers

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!

回答1:

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.



回答2:

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.