Existem alguns comandos de terminal que são capazes de destruir grandes quantidades de dados com muita eficiência. Como: sudo rm -rf /*
ou rm -rf /*
. Quero configurar um aviso que aparecerá sempre que esses comandos destrutivos forem inseridos. Algo assim:
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]
Como escrever um script que faça isso?
Responder1
rm
tem a opção -i
que pergunta sempre antes de remover um arquivo. Acho que não é isso que você quer porque pedeTODOtempo antes de remover um arquivo que muitas vezes levaria a centenas de confirmações se você deseja excluir recursivamente, por exemplo, um repositório git.
O que você quer é provavelmente um script simples que "substitua" rm
como este
#!/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
Nota: você deve usar o script como "rm FILE ARGUMENTS".
Este script parece se você escolher mais de um arquivo (diretório) com shell globbing, mas remove o arquivo se for apenas um.