Я шукаю рішення, яке використовуватиметься як відповідь на "rm: видалити звичайний файл, захищений від запису [x]?"
Я думав видавати персонажа, після якого повертався вагон протягом декількох разів, у башерку. Як ми це робимо?
Я шукаю рішення, яке використовуватиметься як відповідь на "rm: видалити звичайний файл, захищений від запису [x]?"
Я думав видавати персонажа, після якого повертався вагон протягом декількох разів, у башерку. Як ми це робимо?
Відповіді:
Редагувати на основі оновленого запитання:
Щоб вас не запитали про видалення файлів, додайте параметр -f
("сила"):
rm -f /path/to/file
Це має один побічний ефект, про який слід пам’ятати: Якщо будь-який із заданих шляхів не існує, він не повідомить про це, і він повернеться успішно:
$ rm -f /nonexistent/path
$ echo $?
0
Оригінальна відповідь:
Ось одне просте рішення:
yes "$string" | head -n $number | tr $'\n' $'\r'
yes
повторює будь-який рядок, який ви даєте йому нескінченно, розділеним новими рядками. head
зупиняє його через $number
раз і tr
переводить нові рядки у вантажні перевезення. Можливо, ви не побачите жодного результату через повернення каретки, але передавання його цій команді (in 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 .
rm
важко кодувати запитувати "інтерактивно" (оперативне очікування введення користувача) на захищені від запису файли. Є два способи запобігти rm
запиту:
rm -rf somedir
і
rm -r --interactive=never somedir
(обидва також працюють без -r
видалення файлів замість dirs)
пояснення:
-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
Я теж натрапив на те саме питання. Наведена вище відповідь стосується лише одного файлу, але якщо ви хочете ігнорувати багато так.
Можна використовувати
sudo rm -r /path/to/directory
щоб видалити всі звичайні файли, захищені від запису