RM(1) User Commands RM(1)

NAME


rm - remove directory entries

SYNOPSIS


/usr/bin/rm [-dfiv] target ...
/usr/bin/rm -rR [-dfiv] target ...

/usr/xpg4/bin/rm [-fiRr] target ...

DESCRIPTION


The rm utility removes the directory entry specified by each target
argument. If a file has no write permission and the standard input is
a terminal, the full set of permissions (in octal) for the file are
printed followed by a question mark. This is a prompt for
confirmation. If the answer is affirmative, the file is deleted,
otherwise the file remains. If standard input is not a terminal, then
the file is removed regardless.

If target is a symbolic link, the link is removed, but the file or
directory to which it refers is not deleted. Users do not need write
permission to remove a symbolic link, provided they have write
permissions in the directory.

If target is a directory, then it is not removed by default. There are
two exceptions here. If the -r or -R option is specified, then
directories will be recursively descended into and removed. If -d is
specified and the directory is empty, then the directory will be
removed.

If multiple targets are specified and removal of a target fails for any
reason, rm writes a diagnostic message to standard error, do nothing
more to the current target, and go on to any remaining targets.

If the standard input is not a terminal, the utility operates as if the
-f option is in effect.

OPTIONS


The following options are supported for both /usr/bin/rm and
/usr/xpg4/bin/rm:

-d Allow empty directories to be removed.

-r Recursively removes directories and subdirectories in the
argument list. The directory is emptied of files and
removed. The user is normally prompted for removal of any
write-protected files which the directory contains. The
write-protected files are removed without prompting,
however, if the -f option is used, or if the standard input
is not a terminal and the -i option is not used.

Symbolic links that are encountered with this option is not
traversed.

If the removal of a non-empty, write-protected directory is
attempted, the utility always fails (even if the -f option
is used), resulting in an error message.

-R Same as -r option.

-v Print the path of each file or directory successfully
removed to standard output.

/usr/bin/rm
The following options are supported for /usr/bin/rm only:

-f Removes all files (whether write-protected or not) in a
directory without prompting the user. In a write-protected
directory, however, files are never removed (whatever their
permissions are), but no messages are displayed. If the
removal of a write-protected directory is attempted, this
option does not suppress an error message.

-i Interactive. With this option, rm prompts for confirmation
before removing any files. It overrides the -f option and
remains in effect even if the standard input is not a
terminal.

/usr/xpg4/bin/rm
The following options are supported for /usr/xpg4/bin/rm only:

-f Does not prompt for confirmation. Does not write
diagnostic messages or modify the exit status in the case
of non-existent operands. Any previous occurrences of the
-i option is ignored.

-i Prompts for confirmation. Any occurrences of the -f option
is ignored.

OPERANDS


The following operands are supported:

target Specifies the pathname of a directory entry to be
removed. This may be a file of any kind or a directory.

USAGE


See largefile(7) for the description of the behavior of rm when
encountering files greater than or equal to 2 Gbyte (2^31 bytes).

EXIT STATUS


The following exit values are returned:

0 If the -f option was not specified, all the named directory
entries were removed; otherwise, all the existing named
directory entries were removed.

>0 An error occurred.

EXAMPLES


Example 1 Removing Files

The following command removes the directory entries a.out and core:

example% rm a.out core

Example 2 Removing a Directory without Prompting

The following command removes the directory junk and all its contents,
without prompting:

example% rm -rf junk

Example 3 Removing Empty Directories

The following command removes an empty directory.

example% mkdir foo
example% rm -d foo

Example 4 Printing Removed Contents

The following command prints the names of all files successfully
removed to standard out.

example% rm -rv out/ test
out/amd64/dtrace
out/amd64
out
test

DIAGNOSTICS


All messages are generally self-explanatory.

It is forbidden to remove the files "." and ".." in order to avoid the
consequences of inadvertently doing something like the following:

example% rm -r .*

It is forbidden to remove the file "/" in order to avoid the
consequences of inadvertently doing something like:

example% rm -rf $x/$y

or

example% rm -rf /$y

when $x and $y expand to empty strings.

ENVIRONMENT VARIABLES


See environ(7) for descriptions of the following environment variables
that affect the execution of rm: LANG, LC_ALL, LC_COLLATE, LC_CTYPE,
LC_MESSAGES, and NLSPATH.

Affirmative responses are processed using the extended regular
expression defined for the yesexpr keyword in the LC_MESSAGES category
of the user's locale. The locale specified in the LC_COLLATE category
defines the behavior of ranges, equivalence classes, and multi-
character collating elements used in the expression defined for
yesexpr. The locale specified in LC_CTYPE determines the locale for
interpretation of sequences of bytes of text data a characters, the
behavior of character classes used in the expression defined for the
yesexpr. See locale(7).

INTERFACE STABILITY


/usr/xpg4/bin/rm
Committed

ksh93
The ksh93 built-in binding to /bin and /usr/bin is Volatile. The
built-in interfaces are Uncommitted.

SEE ALSO


ksh93(1), rmdir(1), unlink(2), attributes(7), environ(7), largefile(7),
standards(7)

NOTES


A - permits the user to mark explicitly the end of any command line
options, allowing rm to recognize file arguments that begin with a -.
As an aid to BSD migration, rm accepts -- as a synonym for -. This
migration aid may disappear in a future release. If a -- and a - both
appear on the same command line, the second is interpreted as a file.

illumos March 28, 2026 illumos