Как я могу удалить файл, не спрашивая пользователя, согласен ли он удалить файл? Я пишу сценарий оболочки и использую функцию rm, но она спрашивает "удалить обычный файл?""и мне действительно это не нужно. Спасибо.
10 ответов
Вы , возможно, rm
ют псевдоним rm -i
так , попробуйте следующее:
/bin/rm -f file.log
Чтобы увидеть ваши псевдонимы, вы можете запустить alias
.
Флаг силы удаляет все запросы;
rm -f {file}
Пусть сила будет с вами - rm -f
Если у вас есть необходимые разрешения для удаления файла, и вы не хотите, чтобы вас приглашали, выполните следующее (-f = force):
rm -f file
Если у вас нет прав доступа к файлу, вам нужно будет использовать:
sudo rm -f file
В сценарии оболочки вы можете использовать rm -f <filename>
но у вас также есть возможность избавиться от неявной опции -i
для вашей среды, введя unalias rm
в вашей оболочке (или профиле).
программа yes
неоднократно отвечает да на любые запросы. так что вы можете добавить его в интерактивную программу rm
чтобы получить желаемый эффект.
yes | rm <filename>
и наоборот, если вы хотите не делать что-то интерактивное, вы можете сделать
yes n | <something interactive>
и это будет повторять 'n' в потоке ввода (эффективно отвечая нет на вопросы)
\rm file
Обратная косая черта \
обходит псевдонимы.
Помимо использования параметра -f
, вместо этого вы можете использовать команду find
, например:
find -name file.log -delete
Если ваш 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
).