Відповіді:
На веб- сайті webupd8.org є рецепт цього. Щоб запобігти гниттю посилань, ось важлива інформація (з кількома доповненнями).
sudo apt-get install trash-cli
Це встановить trash
, empty-trash
, list-trash
і restore-trash
команди, які ви можете використовувати як є або зробити rm
псевдонім trash
(див . Нижче)
Семантичність trash
команди трохи відрізняється від стандартної rm
- для її -r
видалення каталогів не потрібен прапор. Якщо це вас турбує, webupd8.org пропонує наступний сценарій, який ви можете помістити у свій PATH та назвати його trash-rm
:
#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"; do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]; then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0
;;
(--recursive) recursive=0
;;
(*)
if [ $recursive != 0 -a -d "$f" ]; then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi
;;
esac
done
trash "${cmd[@]}"
В Ubuntu 12.04 та пізніших версіях остання команда в скрипті повинна бути trash-put "${cmd[@]}"
замість trash "${cmd[@]}"
(як команда змінилася з trash
на trash-put
).
Потім зробіть сценарій виконуваним:
chmod +x trash-rm
Після того, як ви знайдете його в деякому каталозі у своєму PATH
, додайте псевдонім до свого ~ / .bashrc, який змусить bash викликати ваш сценарій замість фактичної rm
команди:
alias rm="trash-rm"
Як правильно вказує djeikyb, трюк псевдоніма .bashrc працюватиме лише для того користувача, чий .bashrc модифікований, і лише в сеансі bash-терміналу.
І це повинно бути.
alias="trash"
). Чи знаєте ви, в чому перевага наявності сценарію?
trash
щоб поводитись як rm
на видалення каталогів. Це може бути важливо для деяких сценаріїв, які, як очікується, rm
працюватимуть так, як це робиться, наприклад. Я оновив відповідь.
libtrash (пакунок libtrash в Ubuntu), здається, це робить, але я ніколи його не використовував.