Подвійна перевірка rm в zsh


15

Коли я роблю rm * in zsh, я отримую щось подібне:

2014-06-08 10:14:23 $ rm *
zsh: sure you want to delete all the files in /home/assay/assay/log [yn]? y
rm: remove regular file `development.log'? y

Спочатку zsh запитує мене, чи я впевнений, що хочу видалити всі, а потім rm запитує кожен конкретний файл.

Як я можу просто провести перевірку zsh?


3
Використовуйте rm -f ./*. За замовчуванням rmнічого не запитує, якщо у вас немає дозволу на запис у файл. Можливо, у вас єalias rm='rm -i'
Стефан Шазелас

О, це повинно бути, я запускаю видалених файлів з оболонки Vagrant, а файли розміщені у файловій системі ноутбука. Дякую
ardochhigh

2
Лише зауважте, zsh все ще вимагає "rm -rf *", це можна відключити за допомогоюsetopt rmstarsilent
Метт

Відповіді:


29

Повідомлення "zsh: переконайтесь, що ви хочете видалити всі файли" - це zsh, спеціально викликане викликом команди, викликаної rmаргументом, який є *або something/*перед глобальним розширенням. Ви можете вимкнути це за допомогою setopt rm_star_silent.

Повідомлення "rm: delete regular file" надходить із самої rmкоманди. Він не відображатиметься за замовчуванням, він з’являється лише тоді, коли rmвикликається опцією -i. Якщо ви не хочете цього повідомлення, не передавайте цей параметр. Навіть без цього -i, rmзапит на підтвердження (з іншим повідомленням), якщо ви намагаєтесь видалити файл лише для читання; ви можете видалити це підтвердження, передавши опцію -f.

Оскільки ви не перейшли -iна командний рядок, rmце, мабуть, псевдонім для rm -i(це також може бути функція, нестандартна команда обгортки або інший псевдонім, але псевдонім rm -iна сьогодні є найбільш правдоподібним). Деякі конфігурації за замовчуванням включають alias rm='rm -i'у свої файли ініціалізації оболонок; це може бути щось, що ваш дистрибутив або ваш системний адміністратор налаштував, або щось, що ви звідкись взяли і додали до конфігураційного файла, а потім забули. Перевірте ~/.zshrcвизначення псевдоніма для rm. Якщо ви знайдете його, видаліть його. Якщо ви його не знайдете, додайте команду для видалення псевдоніма:

unalias rm

6

Здається, правильна команда відключити подвійну перевірку setopt rm_star_silent. Щоб увімкнути подвійну перевірку, зробіть setopt no_rm_star_silent.

Для отримання більш детальної інформації перегляньте сторінку людини для zshoptions man zshoptionsабо http://linux.die.net/man/1/zshoptions


абоunsetopt rm_star_silent
evandrix

1

Якщо ви використовуєте oh-my-zsh, плагін common-aliases включає псевдонім rm -i.

https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/common-aliases/common-aliases.plugin.zsh


1
Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
jayhendren

@jayhendren - це не посилання на документацію, це посилання на щось, що потрібно встановити, щоб виправити проблему ...
Wouter Verhelst
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.