RM(1) User Commands RM(1)

# [NAME](#NAME)

rm - remove files or directories

# [SYNOPSIS](#SYNOPSIS)

**rm** \[*OPTION*]... \[*FILE*]...

# [DESCRIPTION](#DESCRIPTION)

This manual page documents the GNU version of **rm**. **rm** removes each specified file. By default, it does not remove directories.

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.

# [OPTIONS](#OPTIONS)

Remove (unlink) the FILE(s).

[**-f, --force**](#f,)

ignore nonexistent files and arguments, never prompt

[**-i**](#i)

prompt before every removal

[**-I**](#I)

prompt once before removing more than three files, or when removing recursively; less intrusive than **-i**, while still giving protection against most mistakes

[**--interactive\[=WHEN\]**](#interactive_=WHEN_)

prompt according to WHEN: never, once (**-I**), or always (**-i**); without WHEN, prompt always

[**--one-file-system**](#one)

when removing a hierarchy recursively, skip any directory that is on a file system different from that of the corresponding command line argument

[**--no-preserve-root**](#no)

do not treat '/' specially

[**--preserve-root\[=all\]**](#preserve)

do not remove '/' (default); with 'all', reject any command line argument on a separate device from its parent

[**-r, -R, --recursive**](#r,)

remove directories and their contents recursively

[**-d, --dir**](#d,)

remove empty directories

[**-v, --verbose**](#v,)

explain what is being done

[**--help**](#help)

display this help and exit

[**--version**](#version)

output version information and exit

By default, rm does not remove directories. Use the **--recursive** (**-r** or **-R**) option to remove each listed directory, too, along with all of its contents.

Any attempt to remove a file whose last file name component is '.' or '..' is rejected with a diagnostic.

To remove a file whose name starts with a '-', for example '-foo', use one of these commands:

rm **--** **-foo**

rm ./-foo

If you use rm to remove a file, it might be possible to recover some of its contents, given sufficient expertise and/or time. For greater assurance that the contents are unrecoverable, consider using [**shred**(1)](/man/os/coreutils/shred.1).

# [AUTHOR](#AUTHOR)

Written by Paul Rubin, David MacKenzie, Richard M. Stallman, and Jim Meyering.

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to: &lt;bug-coreutils@gnu.org&gt;.  
Report any translation bugs to: &lt;https://translationproject.org/team/&gt;.  
GNU coreutils home page: &lt;https://www.gnu.org/software/coreutils/&gt;  
General help using GNU software: &lt;https://www.gnu.org/gethelp/&gt;

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;https://gnu.org/licenses/gpl.html&gt;.  
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

# [SEE ALSO](#SEE_ALSO)

[**unlink**(1)](/man/os/coreutils/unlink.1), [**unlink**(2)](/man/os/coreutils/unlink.2), [**chattr**(1)](/man/os/coreutils/chattr.1), [**shred**(1)](/man/os/coreutils/shred.1)

Full documentation &lt;https://www.gnu.org/software/coreutils/rm&gt;  
or available locally via: info '(coreutils) rm invocation'

October 2026 GNU coreutils 9.12

---

Document: rm(1) from coreutils 9.12-r5 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/coreutils.git
