Некоторое время назад я по ошибке удалил свою домашнюю папку, потому что запустил ее rm -rf *
не на том терминале, рабочим каталогом которого была домашняя папка!
Мне бы хотелось иметь псевдоним для rm
команды, но это не тот случай.
Теперь я планирую создать скрипт как псевдоним для rm
.
Можете ли вы предложить какие-либо лучшие практики?
Спасибо.
решение1
Если вы хотите персонализированный rm
, не называйте его rm
своим именем, myrm
, delete
или как-то еще.
Псевдоним rm='rm -i'
ужасен, потому что через некоторое время использования вы будете ожидать, rm
что по умолчанию вам будет предложено удалить файлы. Конечно, однажды вы запустите его с учетной записью, в которой не установлен этот псевдоним, и прежде чем вы поймете, что происходит, будет слишком поздно.
В любом случае, хороший способ подготовиться к потере или повреждению файлов — это сделать резервную копию.
Быстрая альтернатива, которая защитит вас от случайного удаления или перезаписи файлов, — это использование файловой системы, которая поддерживает неограниченное количество снимков, например ZFS. Если частые снимки делаются автоматически, вы можете восстановить файлы в том состоянии, в котором они были во время последнего снимка перед инцидентом.
решение2
Если вы хотите сохранить псевдонимы, но не хотите рисковать привыканием к командам, работающим в вашей системе иначе, чем в других, вы можете отключить их rm
следующим образом:
alias rm='echo "rm is disabled, use remove or trash or /bin/rm instead."'
Затем вы можете создать свой собственный безопасный псевдоним, например
alias remove='/bin/rm -irv'
или используйте trash
вместо этого.
решение3
Вы можете попробовать использоватьtrash
Вместо этого. Просто не забывайте время от времени его опорожнять...
решение4
Я использую следующий скрипт.
#!/bin/sh
trash=$HOME/tmp
mv "$@" $trash
nohup find "$trash" -type f -atime +7 -exec /bin/rm '{}' \; 2>&1 &
Если вы случайно удалили файл, восстановите его из архива $HOME/tmp
.
Скрипт перемещает удаленные файлы в tmp
каталог и удаляет их при следующем запуске скрипта удаления, если время доступа составляет 7 дней спустя (полуавтоматическая очистка каталога $HOME/tmp
).