Как избегать потребности к выпуску "y" несколько раз, когда удаление защитило файл

Файлы, которые не предназначены, чтобы быть выполненными, не имеют x разрешения даже для корня, таким образом, он случайно не выполняет что-то. Файлы, которые корень должен думать дважды прежде, чем перезаписать, испытывают недостаток в w разрешении корня. Корень может переопределить это, не изменяя полномочия файла, но большую часть подсказки программ прежде, чем сделать так. Я полагаю, что разрешение чтения не проверяется вообще для корня.

58
19.04.2013, 01:35
5 ответов

Редактирование на основе обновленного вопроса:

Чтобы постараться не спрашиваться об удалении файлов, добавьте -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 видеть фактические возвращенные символы.

83
27.01.2020, 19:33

Другая проблема, с которой я сталкивался время от времени, является этим rm искажается к rm -i, что-то вроде этого в/etc/bashrc:

alias rm='rm -i'

В этом случае Вы можете также unalias rm или можно использовать этот прием, который я узнал несколько лет назад, поместите обратную косую черту перед командой, это было искажено, для игнорирования псевдонима просто что одно время, например:

\rm somefile

Можно узнать больше о псевдонимах через статью в Nixcraft.

7
27.01.2020, 19:33

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

Вы можете использовать

sudo rm -r /path/to/directory

для удаления всех защищенных от записи обычных файлов

-2
27.01.2020, 19:33

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

14
27.01.2020, 19:33

Просто давайте да на все ваши команды!

yes | rm -r /path/
yes | <command>

В любом случае вы всегда можете принудительно использовать-f:

rm -r -f /path
1
27.01.2020, 19:33

Теги

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