Я использую rm
в сценарии BASH, чтобы удалить много файлов. Иногда файлы отсутствуют, поэтому он сообщает о многих ошибках. Мне не нужно это сообщение. Я искал на странице справочника команду, чтобы заставить rm
замолчать, но единственная опция, которую я нашел, это то -f
, что из описания «игнорировать несуществующие файлы, никогда не запрашивать», кажется, правильный выбор, но название не подходит Я обеспокоен тем, что это может иметь непредвиденные последствия.
- Является ли
-f
вариант правильным способом заставить замолчатьrm
? Почему это не называется-q
? - Эта опция делает что-нибудь еще?
Ответы:
Основное использование
-f
- принудительное удаление файлов, которые не будут удалены, используяrm
само по себе (в особом случае он «удаляет» несуществующие файлы, таким образом подавляя сообщение об ошибке).Вы также можете просто перенаправить сообщение об ошибке, используя
(или эквивалент вашей операционной системы). Вы можете проверить значение
$?
сразу после вызова,rm
чтобы увидеть, был ли файл фактически удален или нет.источник
--f
действительно для GNU Coreutilsrm
, но только потому, что это уникальное сокращение для--force
. Короткая форма-f
более четкая и более переносимая.--f
вот только опечатка для-f
.2>
?Да,
-f
это самый подходящий вариант для этого.источник
rm
наrm -i
.-f - правильный флаг, но для оператора теста, а не rm
это гарантирует, что файл существует и является обычным файлом (не каталогом, узлом устройства и т. д.)
источник
if [ -f "$THEFILE" ]; then rm "$THEFILE"; fi
который делает тест и шаги удаления файла явно последовательными.test
иrm
. Там нет никакого способа,rm
чтобы выполнить раньшеtest
здесь. Смотреть перед прыжком - это распространенная ошибка в параллельном программировании - вы не можете больше доверять результату «взгляда», когда вы действительно «скачок»; решение этой проблемы заключается в использовании блокировки или атомарных операций. Именно поэтому вы хотитеrm -f
, который является примером последнего.\rm -f file
никогда не сообщать не найден.источник
rm
(как это было популярно на некоторых сайтах в начале 1990-х годов, чтобы не дать новичкам удалить что-либо, а затем вызвать системного администратора для возврата своих файлов).&&
то время как без -f он ломается, когда файл не найден.Что касается
rm -f
выполнения «чего-либо еще», оно вынуждает (-f
сокращенно--force
) молчаливое удаление в ситуациях, когдаrm
в противном случае вас попросят подтвердить. Например, при попытке удалить файл, недоступный для записи, из каталога, доступного для записи вами.источник
У меня была такая же проблема для cshell. Единственное решение, которое у меня было, это создать фиктивный файл, который соответствовал шаблону перед "rm" в моем скрипте.
источник
rm -f
илиrm filename >&/dev/null
?