rm
: Remove files or directoriesrm
removes each given file. By default, it does not remove
directories. Synopsis:
rm [option]… [file]…
If the -I or --interactive=once option is given,
and there are more than three files or the -r, -R,
or --recursive are given, then rm
prompts the user
for whether to proceed with the entire operation. If the response is
not affirmative, the entire command is aborted.
Otherwise, if a file is unwritable, standard input is a terminal, and
the -f or --force option is not given, or the
-i or --interactive=always option is given,
rm
prompts the user for whether to remove the file.
If the response is not affirmative, the file is skipped.
Any attempt to remove a file whose last file name component is . or .. is rejected without any prompting, as mandated by POSIX.
Warning: If you use rm
to remove a file, it is usually
possible to recover the contents of that file. If you want more assurance
that the contents are unrecoverable, consider using shred
.
The program accepts the following options. Also see Common options.
Remove the listed directories if they are empty.
Ignore nonexistent files and missing operands, and never prompt the user. Ignore any previous --interactive (-i) option.
Prompt whether to remove each file. If the response is not affirmative, silently skip the file without failing. Ignore any previous --force (-f) option. Equivalent to --interactive=always.
Prompt once whether to proceed with the command, if more than three files are named or if a recursive removal is requested. Ignore any previous --force (-f) option. Equivalent to --interactive=once.
Specify when to issue an interactive prompt. when may be omitted, or one of:
--interactive with no when is equivalent to --interactive=always.
When removing a hierarchy recursively, do not remove any directory that is on a
file system different from that of the corresponding command line argument.
This option is useful when removing a build “chroot” hierarchy,
which normally contains no valuable data. However, it is not uncommon
to bind-mount /home into such a hierarchy, to make it easier to
use one’s start-up file. The catch is that it’s easy to forget to
unmount /home. Then, when you use rm -rf
to remove
your normally throw-away chroot, that command will remove everything
under /home, too.
Use the --one-file-system option, and it will
diagnose and skip directories on other file systems.
Of course, this will not save your /home if it and your
chroot happen to be on the same file system.
See also --preserve-root=all to protect command line arguments
themselves.
Fail upon any attempt to remove the root directory, /, when used with the --recursive option. This is the default behavior. See Treating / specially. When ‘all’ is specified, reject any command line argument that is not on the same file system as its parent.
Do not treat / specially when removing recursively. This option is not recommended unless you really want to remove all the files on your computer. See Treating / specially.
Remove the listed directories and their contents recursively.
Print the name of each file before removing it.
One common question is how to remove files whose names begin with a
‘-’. GNU rm
, like every program that uses the getopt
function to parse its arguments, lets you use the ‘--’ option to
indicate that all following arguments are non-options. To remove a file
called -f in the current directory, you could type either:
rm -- -f
or:
rm ./-f
The Unix rm
program’s use of a single ‘-’ for this purpose
predates the development of the getopt
standard syntax.
An exit status of zero indicates success, and a nonzero value indicates failure.