Compare commits
2 Commits
4d9e394336
...
581c635916
Author | SHA1 | Date | |
---|---|---|---|
581c635916 | |||
59cb5e3f97 |
12
README.md
12
README.md
@ -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:
|
||||
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
|
||||
|
||||
- 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
|
||||
0 6 * * 0 find /home/YOURHOME/.trash/ -mtime +31 -delete
|
||||
0 6 * * 0 find $HOME/.trash/ -mtime +31 -delete
|
||||
|
||||
## Usage:
|
||||
|
||||
|
27
trash.sh
27
trash.sh
@ -1,18 +1,21 @@
|
||||
#!/bin/bash
|
||||
# Trash Functions
|
||||
#!/usr/bin/env bash
|
||||
# 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"
|
||||
FILE_PATHS_FILE="$TRASH_DIR/.filepaths"
|
||||
[ ! -f "$FILE_PATHS_FILE" ] && touch "$FILE_PATHS_FILE"
|
||||
|
||||
usage() {
|
||||
local func_args="$1"
|
||||
|
||||
if [[ $func_args == 0 ]];
|
||||
then echo -e "At least one argument required:\ncommand FILE1 DIR2 ..."
|
||||
exit
|
||||
then echo -e "At least one file/directory as argument required:\nExamples: FILE.txt /DIR/FILE.txt SUB_DIR/FILE.* /DIR/* DIR/DIR ..."
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
@ -21,14 +24,14 @@ trash_list() {
|
||||
}
|
||||
|
||||
trash_put() {
|
||||
usage "$#"
|
||||
|
||||
usage "$#" && {
|
||||
for FILE in $@; do
|
||||
# Store old filepath for later restore
|
||||
echo "$FILE $(readlink -f "$FILE")" >>"$FILE_PATHS_FILE"
|
||||
done
|
||||
mv -v $* "$TRASH_DIR/"
|
||||
}
|
||||
}
|
||||
|
||||
trash_empty() {
|
||||
echo "Delete $(find "$TRASH_DIR" ! -name ".filepaths" | tail -n +2 | wc -l) files in trash"
|
||||
@ -36,8 +39,7 @@ trash_empty() {
|
||||
}
|
||||
|
||||
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)
|
||||
@ -49,10 +51,10 @@ trash_restore() {
|
||||
sed -i "/${FILE_TO_RESTORE////\\/}/d" "$FILE_PATHS_FILE"
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
trash_rm() {
|
||||
usage "$#"
|
||||
|
||||
usage "$#" && {
|
||||
for FILE_TO_REMOVE in "$@"; do
|
||||
if ! echo "$FILE_TO_REMOVE" | grep "$HOME/.trash"
|
||||
then FILEPATH_TO_REMOVE="$HOME/.trash/$FILE_TO_REMOVE"
|
||||
@ -65,6 +67,7 @@ trash_rm() {
|
||||
fi
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
alias trash='trash_put'
|
||||
alias rm='echo "This is not the command you are looking for. Use \rm instead"; false'
|
||||
|
Loading…
x
Reference in New Issue
Block a user