Sempre que eu rm
multiplico itens de uma só vez com o shell globbing e há a menor possibilidade de que o padrão se expanda para mais do que eu esperava, sempre tento me lembrar de adicionar -i
, mas (é claro) eu poderia esquecer e acidentalmente afastar algo útil. Algumas pessoas tentam resolver esse problema com um pseudônimo, como, por exemplo, alias rm='rm -i'
mas eu odeio a idéia de tornar a rm sempre interativa, porque, assim, adquirirei o hábito de usar -f
o tempo todo, o que obviamente derrotará todo o propósito.
O que eu gostaria de fazer é rm
usar somente -i
quando uso globbing e, é -f
claro -i
, substituir , para que eu ainda possa explodir diretórios inteiros com o habitual rm -rf junk
.
Portanto, rm *blah*
seria realmente, rm -i *blah*
mas rm blah
funcionaria exatamente como digitado.
Caso haja uma diferença em como isso pode ser feito em diferentes shells, escolherei uma resposta que forneça métodos para o bash e o zsh em vez de respostas que cobrem apenas uma ou outra.
Nota : Na verdade, não estou convencido de que isso seja necessariamente uma boa ideia; Só estou perguntando se é possível. Se você acha que essa é uma idéia estúpida, eu ficaria muito feliz em ouvir o raciocínio por trás da sua opinião, mas não publique esses comentários no campo de resposta . Respostas reais me dizem como fazer isso ou explicam isso / por que não é possível (ou possivelmente oferecem um método alternativo para obter um resultado semelhante). Mas se você quiser me dizer por que isso é idiota, poste como comentário. Vou votar comentários bem fundamentados, mesmo que eu discorde da conclusão.
noglob
por exemplo, aliasing rm to noglob my-rm
e, em seguida, fazer com que my-rm seja um script que verifique se há um glob, o expande e passa -i ou não. Não tenho certeza, não sei zsh.
myrm
e deixar esse script fazer as coisas maravilhosas que você gosta.
rm -I
é assim-i
que só é acionado quando mais de três arquivos ou-r
são passados. Embash
, use oCtrl-x *
atalho de teclado para expandir a glob e inspecionar você mesmo.