80

Как я могу удалить файл, не спрашивая пользователя, согласен ли он удалить файл? Я пишу сценарий оболочки и использую функцию rm, но она спрашивает "удалить обычный файл?""и мне действительно это не нужно. Спасибо.

10 ответов10

95

Вы , возможно, rm ют псевдоним rm -i так , попробуйте следующее:

/bin/rm -f file.log

Чтобы увидеть ваши псевдонимы, вы можете запустить alias .

51

Флаг силы удаляет все запросы;

rm -f {file}

26

Пусть сила будет с вами - rm -f

5

Если у вас есть необходимые разрешения для удаления файла, и вы не хотите, чтобы вас приглашали, выполните следующее (-f = force):

rm -f file

Если у вас нет прав доступа к файлу, вам нужно будет использовать:

sudo rm -f file
5

В сценарии оболочки вы можете использовать rm -f <filename> но у вас также есть возможность избавиться от неявной опции -i для вашей среды, введя unalias rm в вашей оболочке (или профиле).

3

программа yes неоднократно отвечает да на любые запросы. так что вы можете добавить его в интерактивную программу rm чтобы получить желаемый эффект.

yes | rm <filename>

и наоборот, если вы хотите не делать что-то интерактивное, вы можете сделать

yes n | <something interactive>

и это будет повторять 'n' в потоке ввода (эффективно отвечая нет на вопросы)

3
\rm file

Обратная косая черта \ обходит псевдонимы.

1

Помимо использования параметра -f , вместо этого вы можете использовать команду find , например:

find -name file.log -delete
0

Если ваш rm связан с rm -i , используйте unalias rm ;

Не используйте rm -f напрямую, если вы действительно не хотите удалить много файлов, защищенных от записи. Должна быть очень веская причина использовать -f .

Однако, если у вас много файлов, защищенных от записи, вы можете предпочесть rsync -r --delete empty/ removed_dir/ для большей скорости.

0

В настоящее время я работаю в системе, где оболочка bash получила определение команды rm как функцию в одном из глобальных файлов конфигурации:

 rm  () { /bin/rm -i ${1+"$@"}; }

Следовательно, ни один из приведенных выше ответов относительно псевдонимов не сработал. Чтобы противостоять раздражающему поведению, я отключил функцию rm в своем файле .bashrc

 unset -f rm

У меня была похожая проблема тогда у новичка. Однако я не нашел никакого ответа, в котором упоминалась бы возможность того, что rm скрыт функцией оболочки. Поэтому я добавил ответ здесь в надежде, что он поможет кому-то, кто сталкивается с такой же проблемой.

Ввод /bin/rm или rm -f все время неудобен и может иметь плохие последствия (в случае rm -f).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .