Search code examples
linuxunixescapinggit-bashrm

How to remove a file beginning with a dash (in Unix like mode)


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!


Solution

  • 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.