Иногда мне необходимо вручную обновить написанные мной программы на своем сервере. Процесс обновления выглядит следующим образом: Копирую выполняемый файл на сервер командой scp. Захожу на сервер через ssh в терминале. Перехожу в папку с исполняемым файлом. Останавливаю приложение, если необходимо. Удаляю старую версию программы. Копирую новую в нужную директорию. Запускаю обновленное приложение. Программу удаляю с ресурсными файлами примерно так: rm -rf ./ Проблема в том, что однажды я опечатался, случайно добавив пробел между точкой и обратной косой чертой. Соглашусь, что лучше все это автоматизировать, но иногда есть необходимость сделать что–то подобное руками. Подскажите, что бы вы сделали, чтобы отловить такую или подобные ошибки и не допустить выполнение нежелательного удаления?
Ответ Утилита rm из более новых coreutils такого не допустит: $ rm -rf / rm: it is dangerous to operate recursively on '/' rm: use --no-preserve-root to override this failsafe $ rm -rf . rm: refusing to remove '.' or '..' directory: skipping '.' Проверить man rm: --preserve-root do not remove `/' (default) В этом топике более подробно. Может самое время, запланировать обновление.
Чтобы максимально снизить вероятность опечатки, не делайте того, что может к ней привести. Никогда не пользуйтесь неявным указанием путей, таких как ./ или ./*, т.е. как минимум выйти из текущего каталога $ cd ... Всегда проверяйте, что же будет удалено, хотя бы так: $ #rm -rf myfolder /TabTab и если только ничего подозрительного нет, как например: bin/ etc/ proc/ usr/ , то HomeDelEnter.