Всякий раз, когда я делаю 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 *сочетание клавиш, чтобы развернуть шар и проверить его самостоятельно.