На Linux Вы могли использовать неизменное использование флага chattr
достигнуть только для чтения на уровне файловой системы (требует соответствующих полномочий хотя). Я не использую OS X и не знаю, имеет ли он что-то подобное, но Вы могли бы достигнуть "после того, как скрипт запущен, test.txt
все еще существуйте" с помощью:
#!/bin/sh
mv test.txt test.bak
trap "mv test.bak test.txt" EXIT
rm -f test.txt
Этот сценарий переименовывает test.txt
кому: test.bak
и переименовывает его назад, когда сценарий вышел (после того, как rm -f test.txt
). Это не действительно только для чтения, но если Вы kill -KILL
Ваш сценарий, это должно сохранить Ваши данные, по крайней мере.
Альтернативная идея, если Вы настаиваете, имея ту строку в нем, почему бы не выйти ранее?
#!/bin/sh
# do your thing
exit
# my boss insisted to have the 'rm' line below.
rm -f test.txt
Альтернатива, которая поворачивается rm
в функцию, которая ничего не делает:
#!/bin/sh
# do your thing
rm() {
# this function does absolutely nothing
: # ... but it has to contain something
}
rm -f test.txt
Подобный функциональному методу выше, но использование устаревшего alias
управляйте для искажения rm
к true
встроенный, который ничего не делает (но returing истинный код выхода):
#!/bin/sh
# do your thing
alias rm=true
rm -f test.txt
Альтернатива, которая удаляет rm
от среды (предполагающий, что существует нет rm
встроенный):
#!/bin/sh
# do your thing
PATH= # now all programs are gone, mwuahaha
# gives error: bash: rm: No such file or directory
rm -f test.txt
Другой, который изменяется $PATH
при помощи тупика rm
программа (использование /tmp
как путь поиска):
#!/bin/sh
# do your thing
>/tmp/rm # create an empty "rm" file
chmod +x /tmp/rm
PATH=/tmp
rm -f test.txt
Для получения дополнительной информации о созданном-ins, выполненном help <built-in>
для деталей. Например:
true: true
Return a successful result.
Exit Status:
Always succeeds.
Для других команд использовать man rm
или посмотрите в странице руководства, man bash
.
Что касается беспроблемных решений, многие используют fail2ban: http://www.fail2ban.org/
Правила могут быть настроены, см. http://www.fail2ban.org/wiki/index.php/Commands
set
addfailregex