A recycle bin tool for UNIX.
UNIXycle provides two scripts — recycle & restore — for use in removing files to a recycle bin in the user's $HOME directory from where they can later be restored.
The recycle script creates a recyclebin directory and .restore.info file in the user's $HOME directory (if they do not already exist).
When passed file names as arguments, recycle moves those target files from their current location to the recyclebin with each the unique inode number of each file appended to its name.
Recycled files are recorded in .restore.info with their name in recyclebin and original absolute file path.
The recycle script accepts optional arguments as follows:
| Option | Mode | Description |
|---|---|---|
-a |
ASCII | Displays ASCII art loading screen. |
-h |
help | Displays help and command line options. |
-i |
interactive | Issues a prompt before recycling each file. |
-r |
recursive | Accepts directories to recycle their file contents, then deletes the directory. |
-v |
verbose | Outputs a confirmation message for each recycled file. |
File names may include either the absolute or relative paths to the files, and may include wildcard characters to delete multiple files with similar names.
Example — delete a single file in interactive and verbose modes:
$ bash recycle -iv demo.txt
recycle 'demo.txt'? y/n y
recycled 'demo.txt'Example — delete multiple files:
$ bash recycle -iv demo.txt example.doc
recycle 'demo.txt'? y/n y
recycled 'demo.txt'
recycle 'example.doc'? y/n nExample — delete files with wildcard characters and directory contents with recursion:
$ bash recycle -i -r -v *.txt demo_directory
recycle 'demo.txt'? y/n y
recycled 'demo.txt'
recycle 'example.txt'? y/n y
recycled 'example.txt'
recycle 'demo_directory'? y/n y
recycled 'demo_directory/note1.txt'
recycled 'demo_directory'The restore script accepts a single file name as an argument.
If the file exists in the recyclebin, it is restored to its original location — with parent directories created as needed if they no longer exist.
Note that the recycle script appends each file's inode number to the file name when moving them to the recyclebin. Check the contents of the recyclebin to determine the name of the recycled file to be restored.
Example — restore a previously deleted file:
$ bash restore demo.txt_64135This hidden file is created in the user's $HOME directory and records the details of files in the recyclebin.
The restore script uses this data to recover recycled files, after which their records are removed from this file.
A test suite is provided in tests/ for the recycle and restore scripts.
Run the tests as follows from the project root directory:
$ bash tests/test_recycle
$ bash tests/test_restoreRuntime logs for the recycle and restore scripts are stored in the logs directory as recycle.log and restore.log, respectively.
Credit for the ASCII art recycle logo goes to Normand Veilleux. This program features a slightly revised version of his original design.