Всякий раз, когда я делаю rm
несколько элементов одновременно с использованием оболочки, и существует даже малейшая вероятность того, что шаблон расширяется до большего, чем я ожидаю, я всегда стараюсь не забыть добавить -i
, но (конечно) я могу забыть и случайно выбросить что-нибудь полезное. Некоторые люди пытаются решить эту проблему с помощью псевдонима, например, alias rm='rm -i'
но я ненавижу идею сделать rm всегда интерактивным, потому что тогда я привыкну использовать -f
все время, что, очевидно, победит всю цель.
То, что я хотел бы сделать, это rm
использовать только -i
тогда, когда я использую globbing, и, -f
конечно, для переопределения -i
, так что я все еще могу сносить целые каталоги обычным способом rm -rf junk
.
Поэтому rm *blah*
действительно будет, rm -i *blah*
но rm blah
будет работать точно так, как напечатано.
В случае, если есть разница в том, как это может быть достигнуто в разных оболочках, я выберу ответ, который предоставляет методы для bash и zsh вместо ответов, которые охватывают только один или другой.
Примечание : я не уверен, что это хорошая идея; Я просто спрашиваю, возможно ли это. Если вы думаете, что это глупая идея, я был бы очень рад услышать обоснование вашего мнения, но, пожалуйста, не размещайте такие комментарии в поле для ответов . Реальные ответы либо говорят мне, как это сделать, либо объясняют, что / почему это невозможно (или, возможно, предлагают альтернативный метод для получения аналогичного результата). Но если вы хотите сказать мне, почему это глупо, пожалуйста, оставьте комментарий. Я буду одобрять аргументированные комментарии, даже если я не согласен с заключением.
noglob
, например, присвоить псевдониму rm noglob my-rm
, а затем иметь my-rm скрипт, который проверяет глобус, расширяет его и передает -i или нет. Не уверен, не знаю, зш.
myrm
и позволить этому скрипту делать то, что вам нравится.
rm -I
это похоже на-i
то, что срабатывает только когда-r
передается более трех файлов . Вbash
, используйтеCtrl-x *
сочетание клавиш, чтобы развернуть шар и проверить его самостоятельно.