Есть некоторые команды терминала, которые очень эффективно уничтожают большие массивы данных. Например: sudo rm -rf /*
или rm -rf /*
. Я хочу настроить предупреждение, которое будет появляться всякий раз, когда вводятся эти разрушительные команды. Что-то вроде этого:
sudo rm -rf /*
Are you sure you want to remove all files from your root
directory recursively? This operation will remove all files from the root
directory, any mounted filesystems attached to it and essential operating
system files.
Are you sure you want to proceed? [Y/n]
rm -rf /*
Are you sure you want to remove all files owned by $USER
recursively? This operation will remove all your files on the root
filesystem and any filesystems mounted to it.
Are you sure you want to proceed? [Y/n]
Как написать скрипт, который это сделает?
решение1
rm
есть опция -i
, которая спрашивает каждый раз перед удалением файла. Я думаю, это не то, что вы хотите, потому что он спрашиваетКАЖДЫЙвремя перед удалением файла, которое часто приводит к сотням подтверждений, если вы хотите рекурсивно удалить, например, репозиторий git.
Вероятно, вам нужен простой скрипт, который «заменит» rm
вот такой
#!/bin/bash
if [ "$(ls -l $1 | wc -l)" = "1" ]; then
rm $1 $@
else
echo "You are going to delete these ($(ls -l $1 | wc -l)) files/directories via shell globbing"
ls $1
read -p "Do you really want to delete these files? [y/n]" yn
if [ $yn = [Yy] ]; then
rm $1 $@
fi
fi
Примечание: вам необходимо использовать скрипт типа «rm FILE ARGUMENTS».
Этот скрипт проверяет, выбрано ли более одного файла (каталога) с помощью подстановки оболочки, но удаляет файл, если он только один.