Я хочу удалить каталог с его файлами, и я хочу сделать это следующим образом:

rm -r dirToDelete\

К сожалению, меня всегда просят КАЖДЫЙ отдельный файл, если я хочу удалить это, потому что это защищено от записи. Есть ли способ подавить это сообщение обратной связи, чтобы пропал только весь каталог с его содержимым?

6 ответов6

7

Много дистрибутивов с псевдонимами "rm" к "rm -i". Лично я думаю, что это самая глупая идея, так что сначала сделайте "псевдоним rm", чтобы увидеть, так ли это, или просто убедитесь, что «/bin/rm» ведет себя по-другому. Если это так, посмотрите в /etc /profile, /etc/profile.d, /etc /bashrc или в свой собственный .profile или .bashrc, чтобы увидеть, где он установлен, и удалите его.

5

Вы хотите rm -rf .

Со страницы man rm:

-f, --force
              ignore nonexistent files, never prompt
3

Добавьте -f например, rm -rf dirToDelete - но будьте осторожны, чтобы получить правильное имя каталога.

Примечание: этот вопрос на самом деле не связан с программированием, поэтому его лучше задать суперпользователю .

2

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

\rm -r dirToDelete

Для rm вы также можете отменить -i с помощью -f:

rm -rf dirToDelete
0

Я надеюсь, что довольно скоро дистрибутивы, которые делают

alias rm='rm -i`

переключиться на

alias rm='rm -I'

со страницы руководства:

-I     prompt once before removing more than three files, or when removing 
       recursively. Less intrusive than -i, while still giving protection 
       against most mistakes

Я предлагаю вам изменить ваш .bashrc чтобы он по-прежнему защищал вас от ошибок ;-)

0

rm жестко задан для запроса "интерактивно" (запрос на ожидание ввода пользователя) файлов, защищенных от записи. Есть два способа запретить rm :

rm -rf somedir

а также

rm -r --interactive=never somedir

(оба также работают без -r при удалении файлов вместо директорий)

объяснение:

-f заставляет rm «игнорировать несуществующие файлы и аргументы, никогда не запрашивать».

--interactive=never не делает то, что говорит: никогда не будь интерактивным. другими словами: никогда не подскажу.

Разница между -f и --interactive=never в этом: "игнорировать несуществующие файлы и аргументы".

Для сравнения:

$ rm -rf nonexistingname
$ echo $?
0

а также

$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1

Разница в основном интересна при написании сценариев, где вы никогда не хотите, чтобы rm был интерактивным, но все же хотите обрабатывать ошибки.

резюме: в командной строке используйте rm -rf . в скриптах используйте rm -r --interactive=never .

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