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

0

Existem alguns comandos de terminal que são proficientes em destruir grandes faixas de dados de forma muito eficiente. Como: sudo rm -rf /* ou rm -rf /* . Quero configurar um aviso que será exibido sempre que esses comandos destrutivos forem inseridos. Algo parecido com isto:

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 faz isso?

    
por LostSoul 28.01.2016 / 15:20

1 resposta

0

rm tem a opção -i que pede todas as vezes antes de remover um arquivo. Eu acho que não é isso que você quer, porque ele pede CADA tempo antes de remover um arquivo que muitas vezes iria para muitas centenas de confirmações se você quiser excluir recursivamente, por exemplo, um repositório git.

O que você deseja é 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ê tem que usar o script como "rm FILE ARGUMENTS".

Esse script é exibido se você escolher mais de um arquivo (diretório) com o shell globbing, mas removerá o arquivo se for apenas um.

    
por 28.01.2016 / 15:49