Primeiro: entenda o problema:
$ rm() { /bin/rm --interactive=always "$@"; }
$ mkdir -p rmtest && touch rmtest/a rmtest/b rmtest/c rmtest/d && rm -rf rmtest
$ rm() { /bin/rm "$@" --interactive=always; }
$ mkdir -p rmtest && touch rmtest/a rmtest/b rmtest/c rmtest/d && rm -rf rmtest
/bin/rm: descend into directory 'rmtest'? y
/bin/rm: remove regular empty file 'rmtest/b'? y
/bin/rm: remove regular empty file 'rmtest/a'? y
/bin/rm: remove regular empty file 'rmtest/d'? y
/bin/rm: remove regular empty file 'rmtest/c'? y
/bin/rm: remove directory 'rmtest'? y
Essa coisa --interactive=always
(ou -I
ou -i
) pode ser feita pelo menos usando
a) uma função
b) um script de wrapper comum
BTW: Não pode ser feito usando um alias, porque o argumento --interactive
seria o primeiro.
Você terá que verificar cada um deles para se livrar desse comportamento, ou você pode explicitamente ligar, por exemplo /bin/rm
ou /usr/bin/rm
Verifique se existe uma função de shell rm
set | grep "^rm ()"
livre-se dele com
unset rm
Ou modifique-o para ter o argumento interativo primeiro para que possa ser substituído
rm() { /bin/rm --interactive=always "$@"; }
Encontre um script de shell:
which rm
ou
type -p rm
então
file $whatever_path_was_shown
por exemplo,
file /bin/rm
se for um script de shell
$EDITOR /bin/rm
e mova o argumento --interactive
para a frente
Se você não tem acesso root, esconda o shell script usando uma função ou alias apontando para o rm original