2011-10-12 19:28:12 +0000 2011-10-12 19:28:12 +0000
94
94

Remover ficheiro sem perguntar

Como posso remover ficheiro sem perguntar ao utilizador se ele concorda em eliminar ficheiro? Estou a escrever um script da shell e uso a função rm, mas pede “remover ficheiro normal?” e eu não preciso mesmo disto. Obrigado.

Respostas (12)

107
107
107
2011-10-12 19:30:00 +0000

Pode ter o rm alias para rm -i, por isso experimente isto:

/bin/rm -f file.log

Para ver os seus alias pode correr o alias.

61
61
61
2011-10-12 19:30:22 +0000

A bandeira de força remove todos os avisos;

rm -f {file}

34
34
34
2011-10-12 19:30:10 +0000

Que a força esteja convosco - rm -f

6
6
6
2011-10-12 20:52:48 +0000

o programa yes responde repetidamente sim a qualquer solicitação. por isso pode canalizá-lo para o programa interactivo rm para obter também o efeito desejado.

yes | rm <filename>

, pelo contrário, se não quiser fazer algo interactivo, pode fazer

yes n | <something interactive>

e isso irá repetir ‘n’ no fluxo de entrada (respondendo efectivamente não a perguntas)

5
5
5
2016-07-28 12:15:27 +0000
\rm file

Backslash ` \rm file

Backslash bypasses aliases.

5
5
5
2011-10-12 20:13:31 +0000

Dentro de um script de shell, você gostaria de usar rm -f <filename> mas também tem a opção de se livrar da opção implícita -i para o seu ambiente, inserindo unalias rm no seu shell (ou perfil).

5
5
5
2011-10-12 19:31:52 +0000

Se tiver as permissões necessárias para apagar o ficheiro e não quiser ser solicitado, faça o seguinte (-f = força):

rm -f file

Se não tiver as permissões necessárias para apagar o ficheiro, terá de utilizar:

sudo rm -f file
1
1
1
2017-03-26 13:45:49 +0000

Além de utilizar o parâmetro -f, em alternativa pode utilizar o comando find, por exemplo

find -name file.log -delete
0
0
0
2018-03-29 14:28:49 +0000

Se o seu rm é aliado a rm -i, então use unalias rm;

Não use rm -f directamente, a menos que queira realmente remover muitos ficheiros protegidos contra escrita. Deve haver uma boa razão para usar o -f.

No entanto, se tem muitos ficheiros protegidos contra escrita, pode preferir o rsync -r --delete empty/ removed_dir/ para uma maior velocidade.

0
0
0
2019-09-02 14:37:41 +0000
rm -Rf <folder-to-be-deleted>

-R: Recursivo f: Força, sem prontidão

0
0
0
2015-02-25 12:18:42 +0000

Actualmente estou a trabalhar num sistema, onde a shell bash recebeu a definição do comando rm como função num dos ficheiros de configuração global:

rm () { /bin/rm -i ${1+"$@"}; }

Assim, nenhuma das respostas acima relativas a pseudónimos funcionou. Para contrariar o comportamento irritante eu desajustei a função rm no meu ficheiro .bashrc

unset -f rm

Tive um problema semelhante ao do abridor. No entanto não encontrei nenhuma resposta que mencionasse a possibilidade de o rm estar escondido por uma função shell. Por isso acrescentei a resposta aqui na esperança de que fosse de ajuda para alguém que enfrenta o mesmo tipo de problema.

Digitar /bin/rm ou rm -f o tempo todo é inconveniente e pode ter más consequências (no caso do rm -f).

0
0
0
2019-08-12 07:47:40 +0000

A minha forma preferida de o fazer é simplesmente usar o comando command em bash, da mesma forma que você usa o sudo. Isto irá executar o seu comando sem apelidos, tal como executá-lo por /bin/rm (provavelmente rm é apelidado de rm -i).

Exemplo:

command rm -f /tmp/file.txt