Note: The name of this software is "trash-d" however its executable
is simply called trash
. This manual favors the latter, but the two
should be considered interchangeable.
trash [option]... file...
A near drop-in replacement for rm
(1) that uses the FreeDesktop trash bin.
Written in the D programming language using only D's Phobos standard library.
The options and flags are intended to mirror rm
's closely, with some
additional long options for the trash
specific features.
-d
, --dir
: Remove empty directories.
-r
, -R
, --recursive
: Delete directories and their contents.
-v
, --verbose
: Print more information.
-i
, --interactive
: Ask before each deletion.
-I
, --interact-once
: Ask before deleting 3 or more files, or deleting recursively
-f
, --force
: Don't prompt and ignore errors.
--version
: Output the version and exit.
--list
: List out the files in the trash.
--orphans
: List orphaned files in the trash.
--delete
file
: Delete a file from the trash.
--restore
file
: Restore a file from the trash.
--empty
: Empty the trash bin.
--rm
files...
: Escape hatch to permanently delete a file.
-h
, --help
: This help information.
The --help
, --version
, --list
, --orphans
,
--restore
, --delete
, and --empty
flags all cause the program
to short-circuit and perform only that operation and no others. Their
precedence is in that order exactly, and is intended to cause the least
destruction.
Therefore the command 'trash --empty --list
' will list the trash bin and NOT
empty it.
Note: Before version 11 trash-d followed a slightly incorrect precedence order.
One of trash-d's primary goals is near compatibility with the GNU rm(1)
tool. The keyword here is "near". The goal is not exact flag-for-flag
compatibility with rm
, but you should be able to 'alias rm=trash
' and
not notice the difference. But since rm
has different failure states and
error messages it can never be 100% compatible.
Additionally since there are a few different implementations of rm(1)
(BSDs and so on) that are all subtly incompatible with each other I can't
guarantee compatibility with all versions.
As of version 16 unknown options will throw an error. Prior to version 16 unknown options were silently ignored.
As of version 17 trash-d will not follow symlinks recursively through
directories. This may in some cases be inconsistent with rm
but errs on
the side of not deleting your files.
XDG_DATA_HOME
: This variable is used to determine where the default trash directory is for
this user as per the FreeDesktop specification.
TRASH_D_DIR
: Override the trash directory to the specified path, useful for trashing on
removable devices.
$XDG_DATA_HOME/Trash
: Standard location of trash files and metadata as per the FreeDesktop
specification. Used in the absence of $TRASH_D_DIR
.
~/.local/share/Trash
: The fallback path used in the absence of both $XDG_DATA_HOME
and
$TRASH_D_DIR
.
trash
exits with the status code 0 on success, and >0 if an error occurs.
rm
(1), user-dirs.conf
(5)
By mimicking rm this utility is partially POSIX compliant however this is NOT to be relied upon for any purpose.
trash-d is compliant with the FreeDesktop trash specification: https://specifications.freedesktop.org/trash-spec/trashspec-latest.html
Steven vanZyl [email protected]
The up-to-date sources can be found at: https://github.com/rushsteve1/trash-d