4

I've got a file called -T on my linux box, and, I thought I could do

 rm "-T"

or

 rm "\-T"

or

 rm \-T

or

 rm *T

Alas, I've run out of simple tricks (or I'm misuing them).

I keep getting the error message:

rm: invalid option -- T

I'm pretty sure I could delete this file with some FTP client, but that feels like cheating. Can someone point me in the right direction?

1
  • 1
    The reason that all your variations on rm didn't work is because bash was expanding them to 'rm -T'. So you would consistently get rm called with '-T'.
    – Kevin M
    Jul 8, 2009 at 18:26

6 Answers 6

19

A lot of *nix commands have a '--' option, which means "this is where the options end, anything from here onwards that looks like an option, isn't".

rm -- -filename

Not 100% sure if rm supports that, I'm a bit rusty.

1
  • Nice touch, I was curious whether this would work on other commands.
    – cgp
    Jul 8, 2009 at 17:35
15

Use the "--" option to tell rm that there are no more options coming.

 rm -- -T

You can also put a "./" in front of the file like this:

 rm ./-T

As a third option, you can often use a graphic file viewer and drag it into the trash.

1
  • This worked for me.
    – cgp
    Jul 8, 2009 at 17:31
7

Try prefixing your file with ./ I think this works.

1
  • 1
    Just for giggles I tried this and it worked as well.
    – cgp
    Jul 8, 2009 at 17:32
2

I just had to try:

gw:~/kana # rm -T
rm: invalid option -- 'T'
Try `rm ./-T' to remove the file `-T'.
Try `rm --help' for more information.
gw:~/kana # rm ./-T
3
  • Interesting, I wonder which distro did that for you. Nice touch.
    – cgp
    Jul 8, 2009 at 17:33
  • opensuse 11.0, coreutils-6.11-9.1 Actually, even rm --help said how to do it. :) Jul 8, 2009 at 17:36
  • Ubuntu 9.04, coreutils-6.10 gave the same message. Jul 9, 2009 at 1:42
1

Put the current directory in front of the file name, which will prevent the program from thinking you're passing it a parameter.

$ rm ./-T

-Kevin

1

Well, back in the day you could use ls -il or stat to print out the inode of the file then use find with an -inode flag and use -exec to call rm on that file!

I guess the post-early 90's are still calling me...... :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.