NBash
44 строки · 1.0 Кб
1#!/bin/bash
2
3archivedir="$HOME/.deleted-files"
4realrm="$(which rm)"
5copy="$(which cp) -R"
6
7if [ $# -eq 0 ]; then
8exec $realrm #Оболочка заменяется /bin/rm
9fi
10
11# Проверка на наличие флага -f
12
13flags=""
14
15while getopts "dfiPRrvW" opt
16do
17case $opt in
18f ) exec $realrm "$@" ;;
19* ) flags="$flags -$opt" ;;
20esac
21done
22shift $(( $OPTIND - 1 ))
23
24# Основной сценарий
25
26# Гарантируем наличие каталога archivedir
27
28if [ ! -d $archivedir ]; then
29if [ ! -w $HOME ]; then
30echo "$0 ошибка: Невозможно создать $archivedir в $HOME" >&2
31exit 1
32fi
33mkdir $archivedir
34chmod 700 $archivedir # Ограничиваем доступ для других пользователей
35fi
36
37for arg
38do
39newname="$archivedir/$(date +"%S.%M.%H.%d.%m")-$(basename "$arg")"
40if [ -f "$arg" -o -d "$arg" ]; then
41$copy "$arg" "$newname"
42fi
43done
44exec $realrm $flags "$@" #Текущий сценарий замещается командой realrm
45