Configuring Linux
Comments 36
+6
Вы не видите разницы в водимых командах?\
Команда упомянутая топикастером практически не применяется в реальной жизни… Если уж человек решил удалить всё содержимое каталога, то зачем ему оставлять саму папку (а именно это делает команда rm -rf folder/*)? Все нормальные люди пишут rm -rf folder и тут уже спасет только как заметили ниже chattr, а в BSD еще есть и модные флаги (эх хочу такие в Linux) которые работают на уровне ФС и даже root ни чего не удалит.
+7
а в 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
+5
Вообще для таких вещей создан chattr.
Особенно рулит +a, если вы часто путаете ">" и ">>".
Ну и да:
0
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
+2
>если вы часто путаете ">" и ">>".

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

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

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

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.
-10
MacPro$ mkdir test
MacPro$ touch test/-i
MacPro$ rm -rf test
MacPro$ ls
MacPro$

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

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

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

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

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

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

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