Удалить файл без запроса
Как я могу удалить файл, не спрашивая пользователя, согласен ли он удалить файл? Я пишу скрипт оболочки и использую функцию rm, но он спрашивает “удалить обычный файл?” и мне это действительно не нужно. Спасибо.
Как я могу удалить файл, не спрашивая пользователя, согласен ли он удалить файл? Я пишу скрипт оболочки и использую функцию rm, но он спрашивает “удалить обычный файл?” и мне это действительно не нужно. Спасибо.
программа yes неоднократно отвечает “да” на любые подсказки. так что вы можете подключить ее к интерактивной программе rm, чтобы получить желаемый эффект тоже.
yes | rm <filename>
наоборот, если вы не хотите делать что-то интерактивное, вы можете сделать
yes n | <something interactive>
и это повторит ‘n’ на входном потоке (фактически отвечая “нет” на вопросы).
В скрипте оболочки вы хотите использовать rm -f <filename>, но у вас также есть возможность избавиться от неявной -i опции для вашей среды, введя unalias rm в оболочку (или профиль).
I
Если ваша rm имеет псевдоним rm -i, то используйте unalias rm;
Не используйте rm -f напрямую, если только вы действительно не хотите удалить много файлов, защищенных от записи. Должна быть очень веская причина использовать -f.
Однако, если у вас много файлов, защищенных от записи, вы, возможно, предпочтете rsync -r --delete empty/ removed_dir/ для большей скорости.
В настоящее время я работаю в системе, где оболочка bash получила определение команды rm как функции в одном из глобальных конфигурационных файлов:
rm () { /bin/rm -i ${1+"$@"}; }
Следовательно, ни один из вышеперечисленных ответов относительно псевдонимов не сработал. Чтобы противостоять раздражающему поведению, я отключил функцию rm в моем .bashrc файле
unset -f rm
, у меня была похожая проблема тогда с открывашкой. Однако я не нашел ответа, в котором упоминалась бы возможность того, что rm скрыта функцией оболочки. Поэтому я добавил ответ здесь в надежде, что он будет полезен для того, кто столкнулся с подобной проблемой.
Набирать /bin/rm или rm -f все время неудобно, и может иметь плохие последствия (в случае с rm -f).
Мой любимый способ сделать это - просто использовать команду command в bash, точно так же, как вы используете sudo. Это запустит вашу команду без псевдонимов, так же как и запустит ее с помощью /bin/rm (вероятно, rm - это псевдоним как rm -i).
Пример:
command rm -f /tmp/file.txt