
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, rm
ele 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 rm
e 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 orm -i
alias. - 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
rm
permanece 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.