Корзина в консоли
Рубрика: Системные утилитыМетки: console | администрирование
Четверг, 27 августа 2009 г.
Просмотров: 4251
В колонках звучит: Prodigy Live @ EXIT 09
Подписаться на комментарии по RSS

Если вы время от времени сталкивайтесь с такой неприятностью, как случайное удаление нужных файлов в консоли, то эта заметка может оказаться для вас полезной...
Решить проблему проще всего прописыванием алиаса с rm на какую-либо другую команду в ~/.bashrc.
Для Gnome:
Пользователям Gnome проще всего добавить в выше озвученный файл строку:
alias rm='gvfs-trash'
Ваши файлы будут перемещены в гномовскую корзину, которую можно регулярно очищать, как это делается обычно, либо восстанавливать необходимые файлы.
Физически корзина находится тут:
~/.local/share/Trash
Команду gvfs-trash можно легко заменить скриптом:
#!/bin/bash
echo $FULLNAME
if [ $1 ]; then
if [ $1 == "--help" ]; then
echo "Usage: delete [path/filename]"
echo "Delete is a safer alternative to rm (remove), as Delete will send your file to the Gnome Wastebasket."
else
cd `dirname $1`
pathname=`pwd`
filename=$1 ##*/
if [ $pathname != "/" ]; then
fullname="$pathname/$filename"
else
fullname="/$filename"
fi
mv $1 ~/.local/share/Trash/files/
timestamp="`date +%Y`-`date +%m`-`date +0`T`date +%X`"
echo -e "[Trash Info]\nPath=$fullname\nDeletionDate=$timestamp" >> ~/.local/share/Trash/info/$filename.trashinfo
fi
else
echo -e "$0: missing operand\nTry '$0 --help' for more information."
fi
Делает она в точности то же самое!
Для KDE:
Пользователям KDE может больше понравится скрипт в архиве. Рекомендуется rmv скопировать в /usr/local/bin и в ~/.bashrc добавить строку:
alias rm='rmv'
А rmvrc поместь в ~/.rmw/ (которую нужно будет предварительно создать).
Ключи к rmw можно использовать те же, что и к rm, например: -f (без лишних вопросов) и -r (рекурсивно), но, кроме того, есть ключ -u, который отменит последнее удаление!
Общий случай:
Конечно, можно просто вместо rm применять mv, например:
alias rm='mv -t ~/.Trash'
Вместо ~/.Trash можно использовать любую другую директорию.














Помнится был модуль ядерный, который перехватывал функцию unlink, т.е. абсолютно любое удаление перемещалось в "корзину"
хм, интересно :roll: не слышал об этом...