Как я могу предотвратить случайное выполнение команды rm -r *?

Иногда я использую команду для удаления некоторых файлов. Например, имя может начинаться с «a», поэтому я удалю его командой rm -r a*, но я не хочу удалять какой-либо другой каталог случайно. Как я могу заблокировать каталог, чтобы предотвратить удаление по rm -r?

7
задан 15 November 2012 в 04:12

4 ответа

Лучший совет - вы должны бояться и уважать команды 'rm -r' или 'rm -rf' настолько, чтобы при их вводе вы останавливались и действовали медленно и осторожно (внимательно читая команду несколько раз). Команды полезны и иногда их нужно использовать, но не стоит обманывать систему, чтобы она спасла вас от ошибок этого типа; не стоит привыкать к таким обходным путям - подумайте о формировании хороших привычек, которые можно переносить с машины на машину.

0
ответ дан 15 November 2012 в 04:12

При попытке выборочно удалить объекты, можно использовать find .

find . -name "a*" \! -type d -delete

Можно проверить то, что Вы удаляете путем выполнения:

find . -name "a*" \! -type d -print

Например, создайте некоторые каталоги и файлы:

mkdir -p testDir/a/b 
cd testDir
touch apple.txt banana.txt ant.tx a/antelope.txt a/bus.txt a/b/apostrophe.txt a/b/bug.txt

Видеть файлы и каталоги:

find . -name "*" -print

возвраты:

.
./a
./a/antelope.txt
./a/b
./a/b/apostrophe.txt
./a/bus.txt
./ant.tx
./apple.txt
./banana.txt

Для проверки, что удаляется:

find . -name "a*" \! -type d -print

возвраты:

./a/antelope.txt
./a/b/apostrophe.txt
./ant.tx
./apple.txt

Удалить файлы:

find . -name "a*" \! -type d -delete

Чтобы проверить, что только* файлы были, удалите:

find . -name "*" -print

возвраты:

.
./a
./a/b
./a/bus.txt
./banana.txt
1
ответ дан 15 November 2012 в 04:12

Вы можете присвоить команде rm псевдоним rm -i в своей оболочке, чтобы она запрашивала ваше подтверждение для каждого файла.

Однако, некоторые считают, что это вредно. См. alias rm = «rm -i» считается вредным? на Superuser.com

Другие мысли есть в Как предотвратить случайный rm -rf / ? * на StackOverflow.com.

0
ответ дан 15 November 2012 в 04:12

В дополнение к другим ответам здесь, я рекомендую вам использовать табуляцию больше и меньше тратить. Из вашего вопроса, похоже, что вы пытаетесь удалить один файл, но не хотите вводить полное имя. В этом случае вместо * вы должны нажать Tab . Завершение табуляции намного безопаснее.

Если вы действительно намереваетесь удалить несколько файлов, имя которых совпадает с глобусом, лучший способ, как уже указывалось, - дважды подумать, прежде чем нажать Enter. Кроме того, вы можете быть спокойны, если используете решение для резервного копирования, которое создает резервные копии всех изменений по мере их внесения, чтобы вы всегда могли исправить любую ошибку без риска потери данных.

0
ответ дан 15 November 2012 в 04:12

Другие вопросы по тегам:

Похожие вопросы: