ZXNet эхоконференция «zxnet.pc»


тема: rm -rf * :-(



от: Kirill Frolov
кому: All
дата: 31 May 2003
Применил патч имени бармина, случайно :-( С ext3fs восстановить что-либо не удаётся :~-( Чтобы избежать подобных неприятностей в будущем рекомендую: 0). Пользоваться "синенькими панельками"... 1). alias rm=trash в ~/.profile или ~/.bash_profile. 2). нижеприведённый скрипт в ~/bin/trash или ещё куда. Скрипт понимает все опции /bin/rm кроме -d. Скрипт должен работать с bash и BSDовым [a]sh, возможно с zsh, насчёт остальных шеллов не уверен. 3). mkdir ~/.trash 4). export TRASHMAXSIZE=10000000 в ~/.bash_profile задаёт максимальный размер файла или каталога со всеми вложенными файлами, который будет перемещён в ~/.trash (или в каталог указанный в переменной TRASHDIR) вместо удаления. Файлы или каталоги большего размера будут сразу удалены, но перед этим будет всегда запрошено подтверждение. 5). следующие команды следует поместить в crontab для вычищения ~/.trash время от времени: TRASHDIR=${TRASHDIR:="HOME/.trash"} find /home/sysop/.trash/ -type f -size +1000k -ctime +1 -print0 | xargs -0 rm 2>/dev/null find /home/sysop/.trash/ -ctime +7 -print0 | xargs -0 rm 2>/dev/null 6). Редактор (Vim или Emacs) можно настроить для помещения бэкапов в помойку Для Vim: set backup и set backupdir=~/.trash,.,/tmp,~/ 7). Пользователи Debian могут установить и настроить более функциональный libtrash и не заморачиваться с моим скриптом. #!/bin/sh # send bug reports report to: # version 0.1 TRASHDIR=${TRASHDIR:="$HOME/.trash"} TRASHMAXSIZE=${TRASHMAXSIZE:=0} opt_i=0; opt_r=0; opt_f=0; opt_v=0 opts() { unset arg args=: for next in "$@"; do case $arg in ?*) eval $arg='$next'; unset arg; args="${args}-"; continue;; esac case $next in --) break; ;; -h|--help|-help|--h|--he|--hel|-he|-hel) echo "Usage: trash [OPTIONS]... FILE..." echo "Move file(s) to trash can." echo echo "-f, --force ignore nonexistent files, never prompt" echo "-i, --interactive prompt before any removal" echo "-r, -R, --recursive remove the content of directories recursively" echo "-v, --verbose explain what is being done" echo "-t, --trash specify trash can directory" echo "-h, --help display this help and exit" echo "--version output version information and exit" echo echo "See man page trash(1) for more information." exit 0 ;; --version) echo "trash version 0.0" exit 0 ;; --interactive) opt_i=1; opt_f=0;; -r|-R|--recursive) opt_r=1;; --force) opt_f=1; opt_i=0;; --verbose) opt_v=1;; --trash) arg=TRASHDIR ;; -*) while { next=${next#?}; [ -n "$next" ]; }; do case ${next} in i*) opt_i=1; opt_f=0;; r*|R*) opt_r=1;; f*) opt_f=1; opt_i=0;; v*) opt_v=1;; t*) case $next in t) arg=TRASHDIR;; *) TRASHDIR=${next#?} ;; esac next="-t" break ;; *) while $((${#next}>1)); do next=${next%?}; done echo "trash: invalid option -- `$next'" echo "Try `trash --help' for more information." exit 1 ;; esac done ;; *) args="${args}x" continue ;; esac args="${args}-" done case $arg in ?*) echo "trash: option requires an argument: $next" exit 1 ;; esac } opts "$@" unset rmopts mvopts case $opt_f in 1) rmopts="$rmopts -f";; esac case $opt_v in 1) rmopts="$rmopts -v"; mvopts="$mvopts -v";; esac set -e optend=no for next in "$@"; do args=${args#?} case $args in -*) continue;; esac [ -e "$next" ] || { case $opt_f in 0) echo "trash: cannot remove `$next': No such file or directory" >&2 ;; esac continue } [ $opt_r = 0 -a -d "$next" ] && { case $opt_f in 0) echo "trash: `$next' is a directory" >&2 ;; esac continue } case $opt_i in 1) if [ -d "$next" ]; then echo "move directory `$next' to trash can?" else echo "move file `$next' to trash can?" fi read a case $a in y|Y);; *) continue;; esac ;; esac if [ "$TRASHMAXSIZE" -eq 0 -o $(du -s "$next" | cut -f 1) -lt "$TRASHMAXSIZE" ]; then eval mv $mvopts -- '$next' '$TRASHDIR' else echo "trash: `$next' cannot be moved to trash can" echo "trash: REMOVE file or directory `$next'?" read a case $a in y|Y);; *) continue;; esac eval rm $rmopts -- '$next' || true fi done -- [ZX]




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Coding - Компрессия картинок (screen to text).
Мир звуков Спектрума - глава 4.5: Программирование звуковых эффектов - Многоголосые мелодии (полифония).
Чемпионат VIRUS-2 - Итоги чемпионата,в котором принимали участие 32 вирусa.
Фантазия - Oчень много народу еще начиная года так с 1994-го говорит, что SРEСTRUM уже не жилец на этом свете.
Школа хаккера - Цикл "БАЗА -1": Укращение Дракона, Атака Дракона.

В этот день...   8 мая