Everyone knows about
Trashcan which is common for all users like Linux, or Windows, or Mac. Whenever you delete a file or folder, it will be moved to trash.
Note that moving files to the trash does not free up space on the file system until the Trashcan is empty.
Trash stores deleted files temporarily which help us to restore when it’s necessary, if you don’t want these files then delete it permanently (empty the trash).
Make sure, you won’t find any files or folders in the trash when you delete using
rm command. So, think twice before performing rm command. If you did a mistake that’s it, it’ll go away and you can’t restore back. since metadata is not stored on disk nowadays.
Trash is a feature provided by the desktop manager such as GNOME, KDE, and XFCE, etc, as per freedesktop.org specification. when you delete a file or folder from file manger then it will go to trash and the trash folder can be found @
Trash folder contains two folder
info. Files folder stores actual deleted files and folders & Info folder contains deleted files & folders information such as file path, deleted date & time in separate file.
You might ask, Why you want CLI utility When having GUI Trashcan, most of the NIX guys (including me) play around CLI instead of GUI even though when they working GUI based system. So, if some one looking for CLI based Trashcan then this is the right choice for them.
What is Trash-Cli
trash-cli is a command line interface for Trashcan utility compliant with the FreeDesktop.org trash specifications. It stores the name, original path, deletion date, and permissions of each trashed file.
How to install Trash-Cli in Linux
Trash-Cli is available on most of the Linux distribution official repository, so run the following command to install.
Debian/Ubuntu, use apt-get command or apt command to install Trash-Cli.
$ sudo apt install trash-cli
RHEL/CentOS, use YUM Command to install Trash-Cli.
$ sudo yum install trash-cli
Fedora, use DNF Command to install Trash-Cli.
$ sudo dnf install trash-cli
Arch Linux, use Pacman Command to install Trash-Cli.
$ sudo pacman -S trash-cli
openSUSE, use Zypper Command to install Trash-Cli.
$ sudo zypper in trash-cli
If you distribution doesn’t offer Trash-cli, we can easily install from pip. Your system should have pip package manager, in order to install python packages.
$ sudo pip install trash-cli Collecting trash-cli Downloading trash-cli-0.17.1.14.tar.gz Installing collected packages: trash-cli Running setup.py bdist_wheel for trash-cli ... done Successfully installed trash-cli-0.17.1.14
How to use Trash-Cli
It’s not a big deal since it’s offering native syntax, provides following commands.
trash-put:Delete files and folders.
trash-list:Pint Deleted files and folders.
trash-restore:Restore a file or folder from trash.
trash-rm:Remove individual files from the trashcan.
trash-empty:Empty the trashcan(s).
Let’s try some examples to experiment this.
1) Delete files and folders : In our case, we are going to send a file named
2g.txt and folder named
magi to Trash by running following command.
$ trash-put 2g.txt magi
You can see the same in file manager.
2) Pint Delete files and folders : To view deleted files and folders, run the following command. As I can see detailed information about deleted files and folders such as name, date & time, and file path.
$ trash-list 2017-10-01 01:40:50 /home/magi/magi/2g.txt 2017-10-01 01:40:50 /home/magi/magi/magi
3) Restore a file or folder from trash : At any point of time you can restore a files and folders by running following command. It will ask you to enter the choice which you want to restore. In our case, we are going to restore
2g.txt file, so my option is
$ trash-restore 0 2017-10-01 01:40:50 /home/magi/magi/2g.txt 1 2017-10-01 01:40:50 /home/magi/magi/magi What file to restore [0..1]: 0
4) Remove individual files from the trashcan : If you want to remove specific files from trashcan, run the following command. In our case, we are going to remove
$ trash-rm magi
5) Empty the trashcan : To remove everything from the trashcan, run the following command.
6) Remove older then X days file : Alternatively you can remove older then X days files so, run the following command to do it. In our case, we are going to remove
10 days old items from trashcan.
$ trash-empty 10
trash-cli works great but if you want to try alternative, give a try to gvfs-trash & autotrash
6 Comments on “Trash-Cli : Command line interface for Trash in Linux”
I have tested and working fine but found one issue. It’s creating “Trash” folder in user home directory “$HOME/Trash” and moving the files instead of default location “$HOME/.local/share/Trash”.
I have modified the below code then it’s start working as expected.
From trash_fallback=”$HOME/Trash” To trash_fallback=”$HOME/.local/share/Trash/files”
Hi, thanks. The fallback is for non-desktop environments, such as a server. This should only happen if a desktop environment is not detected. I have a line near the beginning of the script for which processes to look for to detect if a desktop environment is running:
Yes, I have tested this on Ubuntu 16.04 (Unity) which was created top of Gnome DE, however it’s creating a separate Trash folder. Will give a try on Fedora 26 and let you know.
I have added “unity” to detected desktop environments. Please git update or clone again, I hope it works on Unity too now.
Thank you so much to letting me know about your stuff. I ll give a try and update you.
I have made saferm.sh, a trash-aware wrapper around the rm command.
Usage: in your shell rc file, add alias rm=”/path/to/saferm.sh”
Available on github: https://github.com/lagerspetz/linux-stuff/blob/master/scripts/saferm.sh