'alias rm = “rm -i”' considerado nocivo?

17

Eu li há algum tempo (não consigo encontrar a referência) que usar um alias como alias rm="rm -i" era muito ruim.

Existe evidência histórica ou explicação do senso comum para esse fato?

Eu imagino que isso dá ao usuário um mau hábito de confiar no prompt de confirmação para checar seu comando, o que pode levar a desastres se ele o fizer em outro perfil que não tenha o alias.

    
por Dunaril 01.02.2012 / 16:02

5 respostas

36

Você está certo.

É ruim porque você se acostuma. Se você está em um sistema que não tem, e você rm , ele imediatamente começa a deletar e você está se perguntando o que está acontecendo.

Muitos usuários estão acostumados com o SSH em diferentes sistemas; portanto, usar vários sistemas diferentes, às vezes sem contas de usuário personalizadas (incluindo aliases), é bastante comum.

Em vez disso, use, por exemplo alias rmi='rm -i' e aprenda a usar esse. Se isso não estiver configurado em um sistema diferente, você não excluirá acidentalmente os arquivos e poderá sempre voltar a digitar o comando completo.

    
por 01.02.2012 / 16:07
4

Como @Daniel disse, não é perigoso por si só, além de treiná-lo para esperar que ele esteja lá. Na verdade, é a configuração padrão no CentOS (e por extensão o RHEL, eu presumo - já faz muito tempo desde que usei uma) máquinas, e é uma grande dor no tuchus . Para o resto do meu tempo naquele show, digitei / bin / rm para evitar a configuração "Linux para pessoas que não deveriam ter acesso root".

    
por 01.02.2012 / 16:13
4

Eu acho que o grande perigo é que as pessoas podem confiar em algo assim para filtrar um glob. Imagine que você deseja excluir algumas imagens de um diretório, mas não todas:

rm -i pics/*.jpg

Você poderia usar isso para filtrar o glob manualmente, o que seria completamente razoável. Mas, se você tivesse um alias e estivesse usando rm e tivesse pousado em um shell sem esse alias e tente ... você acabou de excluir todas as suas imagens, oops!

Pessoalmente, também acho que esse pseudônimo é prejudicial à minha pressão arterial;). Mas isso sou só eu.

    
por 01.02.2012 / 16:16
2

Além do que Daniel Beck disse, encontrei-me usando -f para ignorar o -i , o que é potencialmente perigoso, pois resulta em usar rm -f e rm -rf desnecessariamente. De alguma forma relacionada: uma maneira de prevenir rm -rf issues é criar um arquivo chamado "-i" como duscissed em resposta a essa pergunta: Como faço para evitar acidental rm -rf / *? .

Mas, novamente, se esse alias não estivesse lá, eu não usaria -f, e a coisa toda não seria um problema.

    
por 01.02.2012 / 16:19
0

Isso é muito menos prejudicial, com base em minha experiência de trabalho com centenas de usuários no passado:

rm ()  # must be a function, must require single answer for all targets
{
    ls -FCsd "$@"
    local reply ; echo -n 'remove[ny]? ' ; read reply
    if [ "_$reply" = "_y" ] ; then
        /bin/rm -rf "$@" ; else echo '(cancelled)'
    fi
}
  • Os usuários são treinados para usar curingas corretamente, não apenas '*' e depois confiar nos prompts y / n para selecionar arquivos
  • O condicionamento para usar curingas corretos geralmente salvava o desastre quando eles usavam rm em algum outro contexto que não possuísse essa função ou o rm -i alias.
  • Passei menos tempo restaurando arquivos em que o usuário digitasse 'y' muitas vezes
  • Os usuários só precisam responder uma vez - fornecendo um feedback positivo e preciso ao uso deles
  • Control-c interrompe o trabalho e são relatórios como não fazendo nada
  • Não é um script, então o verdadeiro rm é intocado, deixando outros programas destemidos.

O estilo de código é na maioria das vezes compatível com sh (exceto o uso de echo .... | tr -d '2' para shells pré-bash), sinta-se livre para fazer o seu próprio mais específico para o bash. Não estou postando para compartilhar o código em si, mas para compartilhar a alteração da experiência do usuário que vem com ele.

    
por 12.06.2018 / 18:23

Tags