The -f
option to
rm is the extreme opposite of
-i
. It says, "Just delete the file; don't ask me any
questions." The "f" stands (allegedly) for "force," but this isn't quite right.
rm -f won't force the deletion of something that you
aren't allowed to delete. (To understand what you're allowed to delete, you need
to understand directory access permissions
(Section 50.2).)
What, then, does rm -f do, and why would you want to use it?
Normally, rm asks you for
confirmation if you tell it to delete files to which you don't have
write access — you'll get a message like Override protection
444 for foo?
(The Unix filesystem
allows you to delete read-only files, provided you have write access to
the directory.) With -f
, these files will be deleted
silently.
Normally, rm's exit status (
Section 35.12) is 0 if it
succeeded and 1 if it failed to delete the file. With
-f
, rm's return
status is always 0.
I find that I rarely use rm -f on the Unix command line, but I almost always use it within shell scripts. In a shell script, you (probably) don't want to be interrupted by lots of prompts should rm find a bunch of read-only files.
You probably also don't want to be interrupted if rm -f tries to delete files that don't exist because the script never created them. Generally, rm -f keeps quiet about files that don't exist; if the desired end result is for the file to be gone, it not existing in the first place is just as good.
— ML