Иногда я использую команду для удаления некоторых файлов. Например, имя может начинаться с «a», поэтому я удалю его командой rm -r a*
, но я не хочу удалять какой-либо другой каталог случайно. Как я могу заблокировать каталог, чтобы предотвратить удаление по rm -r
?
Лучший совет - вы должны бояться и уважать команды 'rm -r' или 'rm -rf' настолько, чтобы при их вводе вы останавливались и действовали медленно и осторожно (внимательно читая команду несколько раз). Команды полезны и иногда их нужно использовать, но не стоит обманывать систему, чтобы она спасла вас от ошибок этого типа; не стоит привыкать к таким обходным путям - подумайте о формировании хороших привычек, которые можно переносить с машины на машину.
При попытке выборочно удалить объекты, можно использовать 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
Вы можете присвоить команде rm
псевдоним rm -i
в своей оболочке, чтобы она запрашивала ваше подтверждение для каждого файла.
Однако, некоторые считают, что это вредно. См. alias rm = «rm -i» считается вредным? на Superuser.com
Другие мысли есть в Как предотвратить случайный rm -rf / ? * на StackOverflow.com.
В дополнение к другим ответам здесь, я рекомендую вам использовать табуляцию больше и меньше тратить. Из вашего вопроса, похоже, что вы пытаетесь удалить один файл, но не хотите вводить полное имя. В этом случае вместо *
вы должны нажать Tab kbd>. Завершение табуляции намного безопаснее.
Если вы действительно намереваетесь удалить несколько файлов, имя которых совпадает с глобусом, лучший способ, как уже указывалось, - дважды подумать, прежде чем нажать Enter. Кроме того, вы можете быть спокойны, если используете решение для резервного копирования, которое создает резервные копии всех изменений по мере их внесения, чтобы вы всегда могли исправить любую ошибку без риска потери данных.