Я использую терминал ежедневно, я часто буду использовать rm DirectoryName
. Иногда я становлюсь немного нетерпеливым и rm *
не задумываюсь, безопасно ли это. Как вы понимаете, эти махинации иногда возвращались и били меня по лицу. Кто-нибудь знает, как я создаю сопоставление, чтобы rm whatever
перемещать все в корзину, которую затем удаляю вручную.
Использование rm
для перемещения файлов в корзину — это удар дофамина. Это обычное и приятное, но может быть вредным для вас вырванное из контекста.
Вам действительно нужно контролировать себя при использовании rm
. Особенно, если ваши резервные копии неактуальны или у вас нет времени на стирание/установку/восстановление.
Представьте , вы привыкли переезжать на мусор и сделали это привычкой. Конечно, ваша система в безопасности, но когда вы входите в блокнот друга (или жены, или начальника) и должны что-то удалить? На самом деле вы будете использовать настоящее rm
удаление этих файлов навсегда. Без большой подготовки и квалификаций это плохая привычка, и вы должны это знать.
Поэтому вместо этого установите rmtrash
и сделайте привычкой использовать его:
# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias del="rmtrash" # del / trash are shorter than rmtrash
Здесь начинается личный совет - изменить свое поведение трудно. Еще одна вещь, которую вы можете сделать, чтобы заставить себя использовать rmtrash
вместо rm
нее псевдоним для пользовательского сообщения в вашем файле .profile
.
alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"
Итак, всякий раз, когда вы используете rm
, вам будет предложено либо использовать, rmtrash
либо /bin/rm
. Помните, это временно, через некоторое время вы должны удалить псевдоним.
Никогда не делайте что-то вроде этого:
$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory
Популярная викторина: в каком каталоге будет rm
выполняться команда? :)
&&
это ваш спасательный круг. ;
это дьявол. PS Ответ заключается в том, что в приведенном выше примере почти все в вашей системе исчезает.trash-cli
Вместо этого
пользователи Debian/Ubuntu устанавливают , например. aptitude install trash-cli
- см. github.com/andreafrancia/trash-clibrew install trash
rmtrash
действительно старый, последний раз обновлялся в 2003 году, и это видно. У него намного меньше опций, чем у rm
, и если вы говорите rmtrash
о дополнительном томе, он перемещает эти файлы в папку корзины вашего пользователя на системном диске, что может занять много времени для больших файлов. Вариант trash
, рекомендованный parth, лучше, решает проблему сохранения того же тома, но по-прежнему не хватает многих rm
вариантов.rmtrash
больше нет на доморощенном, поэтому я рекомендую trash
вместо этого установить: brew install trash
.cd /tnp; rm -rf *
адская командаЯ могу придумать дюжину способов закодировать это, но категорически отказываюсь печатать какой-либо из них в ответе. Я настоятельно рекомендую вам обуздать свою привычку немного сходить с ума . У вас вообще не должно быть привычки использовать rm
его, если вы не можете использовать его должным образом.
Фундаментальная проблема заключается в том, что даже если вы установите защитную сетку в своей собственной системе, это только поможет вам сохранить свои вредные привычки, и когда вы когда-нибудь окажетесь на другой машине, на которой нет такой же специальной защиты, вы сделать что-то эпически плохое.
Правильное решение — использовать rm
так, как оно предназначалось для использования, включая ручное добавление -i
аргумента всякий раз, когда вы сомневаетесь в том, как будет расширяться глобус, и иметь хорошие резервные копии системы, которые вы можете восстановить в случае серьезной ошибки пользователя. Попытка добавить «мусор» к командам, которые в остальной части вселенной его не используют, — это шаг на полпути, который является худшим из обоих миров.
Либо используйте мусор, либо нет. Использованиеrm
не идет в мусор, оно удаляет.
Если вы хотите использовать мусор, в этом нет ничего плохого. Просто заведите привычку использовать rmtrash
команду вместо rm
. Это поможет вашему мозгу понять, что происходит, и не вовлечь вас в дурную привычку, которая впоследствии вызовет горе.
rm
по определению удаляет файл с диска. В мусорку не отправляет. Если вы научитесь использовать rm
, когда вы имеете в виду отправить в мусорное ведро , это приведет вас к катастрофе. Если вы хотите отправить в корзину, использовать rmtrash
или программу, которая была предназначена для работы, то вы не будете страдать потом от кошмаров. Я не говорил, что использование мусора по своей сути неправильно, но если вы хотите его использовать, не подключайте его к чему-то, что не предназначено для его использования!brew install rmtrash
и перестань использоватьrm
rmtrash
вместо rm
.Используйте инструмент командной строки, такой как rmtrash (который обычно просто перемещает файлы в ~/.Trash, убедившись, что файл имеет уникальное имя) или скрипт, который использует appscript для вызова Finder для удаления. Последний медленнее, но добавляет возможность использовать опцию «Возврат» из Finder, чтобы легко восстановить файл.
Я использовал мусор , как в MacPorts и Homebrew, а rmtrash теперь очень старый и не поддерживается. Однако, читая изменения кода при редактировании этой заметки, я заметил, что в 2017 году он изменился с использования Finder по умолчанию на перемещение по умолчанию (это не то, что я хотел, и это серьезное изменение). Так что буду искать другое средство.
Как отмечалось в комментариях, не рекомендуется делать rm псевдонимом, лучше не забывать использовать программу-мусор, которую вы установили напрямую.
Но если бы вы хотели, вы могли бы сделать
После установки rmtrash, чтобы сказать /usr/local/bin/rmtrash, вы можете создать псевдоним для bash
alias rm='rmtrash'
Вы можете использовать \rm
для прямого вызова rm и игнорировать псевдоним
rmtrash
, пожалуйста, сделайте себе одолжение и используйте его под собственным именем . Никогда не называй то, что не rm
нужно rm
, когда-нибудь это тебя укусит.rmtrash
не совместим с rm
(не поддерживает те же параметры командной строки, что и -r
), поэтому псевдоним действительно бесполезен в любом случаеrmtrash
для rm
. Мало того, что они несовместимы, но также это приведет к плохой привычке, и вы случайно будете использовать rm
в другой системе, думая, что используете только файлы rmtrash
.Просто хочу добавить полезную привычку для тех, кто этого еще не делает. Прежде чем использовать rm для чего-либо, сначала выполните для него команду ls. Таким образом, вы сможете увидеть все файлы, которые собираетесь удалить. Затем вместо повторного ввода просто вытащите предыдущую команду «ls» и замените ls на rm. Эта привычка уменьшила беспокойство при вызове rm.
Есть способы защитить себя от ужасных последствий от rm
. Тем не менее, я согласен с другими комментаторами здесь: очень немногие из них хороши.
Ни на минуту не верьте, что изменение командной среды вам поможет. Например, вы повсюду найдете людей в Интернете, которые рекомендуют делать такие вещи:
alias rm="rm -i"
или же
function rm()
{
echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm
Это не будет работать. Период. Существует множество вариантов использования, когда эти маленькие салонные трюки с треском провалят вас.
Единственный надежный способ, который я использовал, чтобы избавить себя от опасности, rm
— это настроить регулярный процесс резервного копирования через cron для каталогов, в которых я работаю. Raw UNIX сделает это за вас очень просто, используя find
вместе с -mtime
для проверки файлов, которые были обновлены в течение или после определенного времени.
Для меня rm -i
было бы достаточно, потому что он предлагает вам перед удалением любого файла. Тем не менее, некоторая дополнительная безопасность, обеспечиваемая , safe-rm
вовсе не плохая идея.
Простого alias
лайка rm=safe-rm -i
может быть достаточно, однако rm -rf
он не будет работать, потому что -i
он перекрывается -f
.
Итак, мы должны убедиться, что -i
всегда приходят после -f
!
Установите сейф-rm:brew install safe-rm
Вы по-прежнему можете работать с rm
, но вы должны изменить RM_BIN
на следующем шаге
Отредактируйте свой ~/.profile
(или bash_profile или что-то еще) и поместите следующий фрагмент кода (который содержит alias
и function
):
alias rm="rm_i"
function rm_i(){
RM_BIN=safe-rm # you can replace it with regular rm if you like
args=""
files=""
argsDone=0 # to make sure arguments are before the files
for var in "$@"
do
if [[ $var == \-* ]] ; then
if [ $argsDone -eq 1 ] ; then
$RM_BIN # just to show the usage of rm
return
fi
args+=" $var"
else
argsDone=1
files+=" $var"
fi
done
args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
$RM_BIN $args $files
}
Наконец , logout
и login
, поэтому применяются обновления в .profile. НЕ используйте его перед выходом/входом в систему!
-rf
с регулярными выражениями и с ними.rm -rf
БЕЗ запроса о каждом отдельном файле/папке, который вы все еще можете использовать /bin/rm -rf
(или safe-rm -rf
если вы его установили).rm -rf
или rm *
;)alias rm='sudo rm'
, ) похож на привязку УЗИ к кухонному ножу: когда-нибудь вы получите больше, чем рассчитывали, когда пойдете резать этот ананас. Псевдоним rm для чего-то меньшего, чем он сам (например alias rm='rmtrash'
, ) — это то же самое, что позволить вашим детям играть с разоруженными ручными гранатами и не учить их тому, чем они являются на самом деле: когда-нибудь, когда они столкнутся с настоящей гранатой, они не будут относиться к ней с должной осторожностью. В любом случае, псевдоним rm вреден для системных администраторов, так же как отсутствие гигиены — для личной безопасности и общественного здоровья!rm
? Кроме того, точка зрения Калеба еще более верна: если вы привыкнете к системе с псевдонимом safe-rm, то вы можете вести себя с ней безрассудно и в конечном итоге использовать ее в системе с псевдонимом rm без псевдонима.Mac bigSur
brew install trash
alias rm='trash'
which rm
touch a.md
rm a.md
ls ~/.Trash
пользователь6124
mv /file/to/delete ~./Trash
bmike
alias rm=/bin/rm -i
должно вернуть вас в безопасное место. Кроме того, какой каталог корзины вы хотите использовать rm? Это становится неуклюжим, поскольку в Mac OS X есть папка для мусора для каждого тома, а также корзина для мусора на уровне пользователя.Даниэль Серодио
rm *
илиrm /path/*
Уилфред Смит
bmike