`alias rm="rm -i"` considerado prejudicial?

`alias rm="rm -i"` considerado prejudicial?

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 de bom senso para esse fato?

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

Responder1

Você tem razão.

É ruim porque você se acostuma. Se você estiver em um sistema que não o possui, rmele imediatamente começará a ser excluído e você estará se perguntando o que está acontecendo.

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

Em vez disso, use eg alias rmi='rm -i'e aprenda a usá-lo. Se isso não estiver configurado em um sistema diferente, você não excluiu arquivos acidentalmente e pode sempre voltar a digitar o comando completo.

Responder2

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

Responder3

Acho que o grande perigo é que as pessoas possam confiar em algo assim para filtrar um globo. 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 globo manualmente, o que seria completamente razoável. Mas, se você tinha um alias e estava usando rme por acaso pousou em um shell sem esse alias e tentou... você acabou de deletar todas as suas fotos, opa!

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

Responder4

Isso émuitomenos prejudicial, com base na 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 caracteres curinga corretamente, não apenas '*' e, em seguida, confiar nos prompts y/n para selecionar arquivos
  • O condicionamento para usar curingas corretos muitas vezes salvava o programa do desastre quando eles eram usados rm​​em algum outro contexto que não tivesse essa função ou o rm -ialias.
  • Passei menos tempo restaurando arquivos onde o usuário digitou 'y' muitas vezes
  • Os usuários só precisam responder uma vez - fornecendo um feedback positivo ao usá-lo
  • Control-c interrompe o trabalho e é relatado como não fazendo nada
  • Não é um script, então o real rmpermanece intocado, deixando outros programas destemidos.

O estilo de código é principalmente compatível com sh (exceto o uso echo .... | tr -d '\012'para shells pré-bash), sinta-se à vontade para tornar o seu próprio estilo mais específico do bash. Não estou postando para compartilhar o código em si, mas para compartilhar oexperiência de usuáriomudança que vem com isso.

informação relacionada