Compare commits

...

2 Commits

Author SHA1 Message Date
Kim
581c635916 minor changes
Some checks failed
continuous-integration/drone/push Build is failing
2021-10-28 02:02:36 +02:00
Kim
59cb5e3f97 update README.md 2021-10-28 02:02:15 +02:00
2 changed files with 46 additions and 43 deletions

View File

@ -1,18 +1,18 @@
# trash - A trash bin for files and directories instead of deleting them directly # trash.sh - A trash bin for files and directories instead of deleting them directly
[![Build Status](https://drone.pyas.de/api/badges/Kim/trash/status.svg)](https://drone.pyas.de/Kim/trash) [![Build Status](https://drone.pyas.de/api/badges/Kim/trash.sh/status.svg)](https://drone.pyas.de/Kim/trash.sh)
## Installation: ## Installation:
the trash.sh file in your desired path and source it in your $HOME/.bashrc or in /etc/.bashrc: Put the trash.sh file to your desired location (e.g home directory) and source it in your $HOME/.bashrc or in /etc/.bashrc:
. /path/to/trash.sh . /path/to/trash.sh
- As the Script runs it first checks if $HOME/.trash/ (your trash bin) in your home dir exists and creates it if missing. - When the script runs, it first checks if `$HOME/.trash/` (your trash bin) exists and creates it if missing.
Add cleanup job to your cron: Add the cleanup job to your crontab:
# .trash cleanup of all contents (files and dirs) older than 31 days every morning at 06:00 # .trash cleanup of all contents (files and dirs) older than 31 days every morning at 06:00
0 6 * * 0 find /home/YOURHOME/.trash/ -mtime +31 -delete 0 6 * * 0 find $HOME/.trash/ -mtime +31 -delete
## Usage: ## Usage:
@ -23,4 +23,4 @@ Add cleanup job to your cron:
- `trash_restore FILE1 DIR2 ...` to restore specific files and directories from your trash to it's origin - `trash_restore FILE1 DIR2 ...` to restore specific files and directories from your trash to it's origin
## Credits ## Credits
Repo Icon made by [Freepik](https://www.freepik.com "Freepik") from [www.flaticon.com](https://www.flaticon.com/ "Flaticon") Repo Icon made by [Freepik](https://www.freepik.com "Freepik") from [www.flaticon.com](https://www.flaticon.com/ "Flaticon")

View File

@ -1,18 +1,21 @@
#!/bin/bash #!/usr/bin/env bash
# Trash Functions # Trash Bin Functionss
# On Github: https://github.com/kimdre/trash.sh
TRASH_DIR="$HOME"/.trash TRASH_DIR="$HOME/.trash"
FILE_PATHS_FILE="$TRASH_DIR/.filepaths"
[ ! -d "$TRASH_DIR" ] && mkdir "$TRASH_DIR" [ ! -d "$TRASH_DIR" ] && mkdir "$TRASH_DIR"
FILE_PATHS_FILE="$TRASH_DIR/.filepaths"
[ ! -f "$FILE_PATHS_FILE" ] && touch "$FILE_PATHS_FILE" [ ! -f "$FILE_PATHS_FILE" ] && touch "$FILE_PATHS_FILE"
usage() { usage() {
local func_args="$1" local func_args="$1"
if [[ $func_args == 0 ]]; if [[ $func_args == 0 ]];
then echo -e "At least one argument required:\ncommand FILE1 DIR2 ..." then echo -e "At least one file/directory as argument required:\nExamples: FILE.txt /DIR/FILE.txt SUB_DIR/FILE.* /DIR/* DIR/DIR ..."
exit return 1
else
return 0
fi fi
} }
@ -21,13 +24,13 @@ trash_list() {
} }
trash_put() { trash_put() {
usage "$#" usage "$#" && {
for FILE in $@; do
for FILE in $@; do # Store old filepath for later restore
# Store old filepath for later restore echo "$FILE $(readlink -f "$FILE")" >>"$FILE_PATHS_FILE"
echo "$FILE $(readlink -f "$FILE")" >>"$FILE_PATHS_FILE" done
done mv -v $* "$TRASH_DIR/"
mv -v $* "$TRASH_DIR/" }
} }
trash_empty() { trash_empty() {
@ -36,34 +39,34 @@ trash_empty() {
} }
trash_restore() { trash_restore() {
usage "$#" usage "$#" && {
for FILE_TO_RESTORE in "$@"; do
# Get old filepath for restore
OLD_PATH=$(grep "$FILE_TO_RESTORE" "$FILE_PATHS_FILE" | cut -d ' ' -f2)
for FILE_TO_RESTORE in "$@"; do # Move file to old filepath
# Get old filepath for restore mv -v "${TRASH_DIR}/${FILE_TO_RESTORE}" "$OLD_PATH"
OLD_PATH=$(grep "$FILE_TO_RESTORE" "$FILE_PATHS_FILE" | cut -d ' ' -f2)
# Move file to old filepath # Replace / with \/ from string and remove filepath from file after move was successful
mv -v "${TRASH_DIR}/${FILE_TO_RESTORE}" "$OLD_PATH" sed -i "/${FILE_TO_RESTORE////\\/}/d" "$FILE_PATHS_FILE"
done
# Replace / with \/ from string and remove filepath from file after move was successful }
sed -i "/${FILE_TO_RESTORE////\\/}/d" "$FILE_PATHS_FILE"
done
} }
trash_rm() { trash_rm() {
usage "$#" usage "$#" && {
for FILE_TO_REMOVE in "$@"; do
for FILE_TO_REMOVE in "$@"; do if ! echo "$FILE_TO_REMOVE" | grep "$HOME/.trash"
if ! echo "$FILE_TO_REMOVE" | grep "$HOME/.trash" then FILEPATH_TO_REMOVE="$HOME/.trash/$FILE_TO_REMOVE"
then FILEPATH_TO_REMOVE="$HOME/.trash/$FILE_TO_REMOVE" else FILEPATH_TO_REMOVE="$FILE_TO_REMOVE"
else FILEPATH_TO_REMOVE="$FILE_TO_REMOVE" fi
fi if [ -f "$FILEPATH_TO_REMOVE" ]; then
if [ -f "$FILEPATH_TO_REMOVE" ]; then \rm -irf "$FILEPATH_TO_REMOVE" && sed -i "/$FILE_TO_REMOVE/d" "$FILE_PATHS_FILE"
\rm -irf "$FILEPATH_TO_REMOVE" && sed -i "/$FILE_TO_REMOVE/d" "$FILE_PATHS_FILE" else
else echo "$FILE_TO_REMOVE is not in Trash." && false
echo "$FILE_TO_REMOVE is not in Trash." && false fi
fi done
done }
} }
alias trash='trash_put' alias trash='trash_put'