Удалить файл без запроса
Как я могу удалить файл, не спрашивая пользователя, согласен ли он удалить файл? Я пишу скрипт оболочки и использую функцию rm, но он спрашивает “удалить обычный файл?” и мне это действительно не нужно. Спасибо.
Как я могу удалить файл, не спрашивая пользователя, согласен ли он удалить файл? Я пишу скрипт оболочки и использую функцию rm, но он спрашивает “удалить обычный файл?” и мне это действительно не нужно. Спасибо.
программа yes
неоднократно отвечает “да” на любые подсказки. так что вы можете подключить ее к интерактивной программе rm
, чтобы получить желаемый эффект тоже.
yes | rm <filename>
наоборот, если вы не хотите делать что-то интерактивное, вы можете сделать
yes n | <something interactive>
и это повторит ‘n’ на входном потоке (фактически отвечая “нет” на вопросы).
В скрипте оболочки вы хотите использовать rm -f <filename>
, но у вас также есть возможность избавиться от неявной -i
опции для вашей среды, введя unalias rm
в оболочку (или профиль).
Если ваша 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