Existe uma maneira de configurar um aviso antes de executar alguns comandos no terminal?

Existe uma maneira de configurar um aviso antes de executar alguns comandos no terminal?

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

rmtem a opção -ique 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" rmcomo 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.

informação relacionada