Файлы, которые не предназначены, чтобы быть выполненными, не имеют x разрешения даже для корня, таким образом, он случайно не выполняет что-то. Файлы, которые корень должен думать дважды прежде, чем перезаписать, испытывают недостаток в w разрешении корня. Корень может переопределить это, не изменяя полномочия файла, но большую часть подсказки программ прежде, чем сделать так. Я полагаю, что разрешение чтения не проверяется вообще для корня.
Редактирование на основе обновленного вопроса:
Чтобы постараться не спрашиваться об удалении файлов, добавьте -f
("сила") опция:
rm -f /path/to/file
Это имеет один побочный эффект, о котором необходимо знать: Если какой-либо из данных путей не будет существовать, то это не сообщит об этом, и это возвратится успешно:
$ rm -f /nonexistent/path
$ echo $?
0
Исходный ответ:
Вот одно простое решение:
yes "$string" | head -n $number | tr $'\n' $'\r'
yes
повторения любая строка Вы даете его бесконечно, разделенный новыми строками. head
остановки это после $number
времена, и tr
переводит новые строки в возвраты каретки. Вы не могли бы видеть вывод из-за возвратов каретки, но передачи его к этой команде (в bash
) должен проиллюстрировать его:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
Пользователи без bash
может передать результат по каналу к od
, hexdump
или xxd
видеть фактические возвращенные символы.
Другая проблема, с которой я сталкивался время от времени, является этим rm
искажается к rm -i
, что-то вроде этого в/etc/bashrc:
alias rm='rm -i'
В этом случае Вы можете также unalias rm
или можно использовать этот прием, который я узнал несколько лет назад, поместите обратную косую черту перед командой, это было искажено, для игнорирования псевдонима просто что одно время, например:
\rm somefile
Можно узнать больше о псевдонимах через статью в Nixcraft.
Я тоже столкнулся с такой проблемой. Вышеприведенный ответ предназначен только для одного файла, но если вы хотите игнорировать многие, да.
Вы можете использовать
sudo rm -r /path/to/directory
для удаления всех защищенных от записи обычных файлов
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
.
ответ на поставленный вопрос ("Как избежать необходимости выдавать "y" несколько раз при удалении защищенного файла" )см.https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line/338860#338860
Просто давайте да на все ваши команды!
yes | rm -r /path/
yes | <command>
В любом случае вы всегда можете принудительно использовать-f
:
rm -r -f /path