Некоторое время назад я ошибочно удалил свою домашнюю папку, потому что я запустил rm -rf *
не тот терминал, рабочий каталог которого был домашней папкой!
Я хотел бы иметь псевдоним для rm
команды, но это был не тот случай.
Теперь я планирую сделать сценарий в качестве псевдонима для rm
.
Есть ли у вас лучшие рекомендации, чтобы предложить?
Спасибо.
rm
это опасная команда, требующая псевдоним для безопасности. При использованииr
иf
опции, вы сообщаете оболочку , я знаю , что это опасно, и я тщательно думал об этом, и это _really_ то , что я хочу сделать . Если вы не используете эти параметры, вы не можете удалить всю свою домашнюю папку с ним.rm
вы привыкнете к этому псевдониму. И вот однажды вы окажетесь в системе, в которой псевдоним не существует, и вы будете поступать неправильно, когда вы меньше всего этого ожидаете. И это, вероятно, не будет вашей системой.rm
кrm -i
.Ответы:
Если вы хотите настроить
rm
, не называть его ,rm
но имя твое,myrm
,delete
или любой другой .rm='rm -i'
Псевдоним является ужасом , потому что через некоторое время , используя его, вы будете ожидать ,rm
чтобы побудить вас по умолчанию перед удалением файлов. Конечно, однажды вы запустите его с учетной записью, у которой не установлен этот псевдоним, и, прежде чем вы поймете, что происходит, уже слишком поздно.В любом случае, хороший способ быть готовым к потере или повреждению файла - делать резервные копии.
Быстрая альтернатива, которая защитит вас от случайного удаления или перезаписи файла, - это использование файловой системы, поддерживающей неограниченное количество снимков, таких как ZFS. Если частые снимки делаются автоматически, вы можете восстановить файлы в том состоянии, в котором они находились во время последнего снимка перед инцидентом.
источник
Если вы хотите сохранить псевдонимы, но не хотите рисковать привыканием к командам, работающим в вашей системе иначе, чем в других, вы можете отключить их
rm
следующим образомЗатем вы можете создать свой собственный безопасный псевдоним, например,
или использовать
trash
вместо.источник
remove
какecho "rm is disabled, use trash or /bin/rm instead." -irv
. И, как здравый смысл, разве вы не хотите, чтобы сообщениеrm
ссылалось на вашу безопаснуюremove
команду?Вы можете попробовать использовать
trash
вместо этого. Просто не забудьте опустошать его время от времени ...источник
Без необходимости изменения профиля anyones вы можете поместить в каталог файл с именем -i.
источник
.* *
, а не* .*
(что я считаю более распространенным) или* . *
(что вы сказали). …………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… чтобы эта техника была действительно эффективной во всем мире, вам нужно будет делать это в каждом каталоге, где у вас есть разрешение на запись , Но я согласен, это хитрый трюк.Я использую следующий скрипт.
Если вы случайно удалили файл, восстановите его из
$HOME/tmp
.Сценарий перемещает удаленные файлы в
tmp
каталог и удаляет их при следующем запуске сценария удаления, если время доступа составляет 7 дней (полуавтоматическая очистка$HOME/tmp
каталога).источник
В вашем профиле
источник
rm -I
дает лучшее из обоих миров, @jlliagre.Сценарий называется
d
с содержаниемmv $* /tmp
.редактировать: это плохая идея; увидеть ниже. Я в настоящее время имею
alias d='mv -t /tmp'
в моем.profile
вместо этого.источник
d "foo bar"
удалит файлыfoo
иbar
). Возможно, что-то безопаснее#!/bin/bash TRASH="$( mktemp -d -t trashed.XXX )"; echo "Moving to trash $TRASH"; mv -v -- "$@" "$TRASH"
(mktemp
иmv
синтаксис зависит от вашей системы, этот работает для Linux).d
команду наalias d='mv -t /tmp'
мой.profile
; Я думаю, что это простое решение, которое я искал.Этот код bash добавляет функцию
rm
в ваш~/.bash_profile
файл конфигурации. После запуска этого, если вы напишитеrm file
, вы переместите этот файл в/tmp
источник
rm
в ваш~/.bash_profile
файл конфигурации. После запуска этого файла, если вы напишитеrm file
, вы переместите этот файл в/tmp
.