Não é possível rm sem confirmação no linux

0

Então, eu tenho uma pasta chamada Bar no diretório Foo, que é um link simbólico para outra pasta localizada em outro lugar.

Estou no diretório Foo. Agora eu quero excluir a pasta de compilação recursivamente.

Se eu faço rm -rf Bar, então o link simbólico é removido, mas o conteúdo real não é removido. Se eu faço rm -rf Bar / *, então o conteúdo da barra é removido da localização original (que é o que eu quero), mas não escuta a opção -f. Sempre confirma antes de remover. Existe uma maneira de contornar isso?

    
por user855 24.11.2014 / 06:40

1 resposta

2

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

    
por 24.11.2014 / 07:22

Tags