Ads
Comments 36
Вы не видите разницы в водимых командах?\
Команда упомянутая топикастером практически не применяется в реальной жизни… Если уж человек решил удалить всё содержимое каталога, то зачем ему оставлять саму папку (а именно это делает команда rm -rf folder/*)? Все нормальные люди пишут rm -rf folder и тут уже спасет только как заметили ниже chattr, а в BSD еще есть и модные флаги (эх хочу такие в Linux) которые работают на уровне ФС и даже root ни чего не удалит.
а в BSD еще есть и модные флаги (эх хочу такие в Linux)

$ uname -a
Linux host 2.6.39-1-amd64 #1 SMP Tue May 24 14:34:19 UTC 2011 x86_64 GNU/Linux
$ touch unremovable
$ su -c 'chattr +i unremovable'
Password:
$ rm unremovable
rm: remove write-protected regular empty file `unremovable'? y
rm: cannot remove `unremovable': Operation not permitted
$ su -c 'rm unremovable'
Password:
rm: cannot remove `unremovable': Operation not permitted
UFO landed and left these words here
inky@laptop1:~/test$ ls 1/
-i
inky@laptop1:~/test$ ls 2/
-i
inky@laptop1:~/test$ rm -r 1/
inky@laptop1:~/test$ rm -rf 2/
inky@laptop1:~/test$ ls
3 4 -i
>если вы часто путаете ">" и ">>".

… то в zsh есть адская технология, которая ругается при попытке перезаписать файл через > в интерактивном шелле
Как раз месяц назад поставил себе вместо bash zsh…
% echo qq > test
% echo qqq > test
% cat test
qqq
%
тишина…
>Как раз месяц назад поставил себе вместо bash zsh…

осталось его два года настраивать.

можете начать с setopt NOCLOBBER
Полностью согласен. Только это не команда создана, а дополнительные атрибуты файловой системы extX. Т.е. на других файловых системах свои дополнительные атрибуты и эта команда не сработает.
А так — да, chattr +i и даже рут не сможет удалить файл или директорию пока не снимет атрибут, или +a если в файл надо писать.
Для избежания путаницы с >> и > рекомендую вот это:

set -o noclobber

из man bash:
If the redirection operator is >, and the noclobber option to the set builtin has been enabled, the
redirection will fail if the file whose name results from the expansion of word exists and is a reg‐
ular file. If the redirection operator is >|, or the redirection operator is > and the noclobber
option to the set builtin command is not enabled, the redirection is attempted even if the file
named by word exists.
MacPro$ mkdir test
MacPro$ touch test/-i
MacPro$ rm -rf test
MacPro$ ls
MacPro$

Макось тоже не с вами
> Одна простая вещь

Какое содержательное название топика. Ведь по нему так удобно будет потом искать!
Нет, так не лучше, как нам уже десятки лет намекает виндовс. Если система на каждое удаление задаёт один и тот же вопрос, рано или поздно пользователь сначала ответит “да”, а потом задумается что же он натворил.
alias'ы не работают в скриптах.
ну только если вы в ша-банге не укажете #!/bin/bash -i.
Да, точно. Впрочем, постоянные вопросы на удаление не есть хорошо.
а потому что правильно писать «rm — *» или «rm important-directory/*» — в таких записях «файлы-флаги» не сработают, а будут пониматься как обычные файлы.
а файл защитить можно атрибутом «неизменяемый»
пример как установить
chattr +i /etc/resolv.conf

посмотреть
lsattr /etc/resolv.conf

пример как снять
chattr -i /etc/resolv.conf
В топике не хватает Капитана Очевидности, который расскажет, что -i — это параметр для команды rm, который говорит о том, что нужно запрашивать подтверждение перед удалением, а * — это такой символ, который не передается в команду rm, а разворачивается командной оболочкой (например, bash) в список всех файлов. В результате имя файла -i для rm воспринимает как параметр. Но любое изменение записи команды rm делает эту хитрость нерабочей, например rm -rf ./*
Автор слишком хотел написать самый короткий пост, поэтому его не все поняли.
> Вы просто завидуете что у меня короче! :)

Вы сделали мой день!

> Вы просто завидуете что у меня короче! :)

Мужики достали и померялись!
Only those users with full accounts are able to leave comments. Log in, please.