2011-10-12 19:28:12 +0000 2011-10-12 19:28:12 +0000
94
94

Удалить файл без запроса

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

Ответы (12)

107
107
107
2011-10-12 19:30:00 +0000

У вас может быть rm псевдоним на rm -i, так что попробуйте это:

/bin/rm -f file.log

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

61
61
61
2011-10-12 19:30:22 +0000

Флаг силы снимает все подсказки;

rm -f {file}

34
34
34
2011-10-12 19:30:10 +0000

Да пребудет с тобой сила - rm -f.

6
6
6
2011-10-12 20:52:48 +0000

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

yes | rm <filename>

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

yes n | <something interactive>

и это повторит ‘n’ на входном потоке (фактически отвечая “нет” на вопросы).

5
5
5
2016-07-28 12:15:27 +0000
\rm file

Обратная косая черта ` \rm file

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

5
5
5
2011-10-12 20:13:31 +0000

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

5
5
5
2011-10-12 19:31:52 +0000

I

1
1
1
2017-03-26 13:45:49 +0000

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

find -name file.log -delete
```.
0
0
0
2018-03-29 14:28:49 +0000

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

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

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

0
0
0
2019-09-02 14:37:41 +0000
rm -Rf <folder-to-be-deleted>

-R: Рекурсивный f: сила, без подсказок

0
0
0
2015-02-25 12:18:42 +0000

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

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

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

unset -f rm

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

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

0
0
0
2019-08-12 07:47:40 +0000

Мой любимый способ сделать это - просто использовать команду command в bash, точно так же, как вы используете sudo. Это запустит вашу команду без псевдонимов, так же как и запустит ее с помощью /bin/rm (вероятно, rm - это псевдоним как rm -i).

Пример:

command rm -f /tmp/file.txt

Похожие вопросы

6
10
11
5
6