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