Como cancelar um comando rm?

8

Há muitas perguntas sobre como desfazer um comando rm concluído. No meu caso, minha empresa começou perguntando: "Tem certeza de que deseja excluir este arquivo?"

E eu preciso confirmar para cada um deles. Em vez de confirmar manualmente "y / n":

  1. Posso definir "sim" para o restante enquanto me pedem y / n para o n'th arquivo? (equivalente à caixa de seleção "Sim para todos" no Windows) (eu sei o truque yes | rm antes de começar)

  2. Posso anular a operação enquanto me pedem y / n pela n'th Arquivo? (exceto para desligar a máquina:))

por Andrejs 04.11.2015 / 21:04

4 respostas

19

Para realizar a solicitação 1, você precisará usar um programa mais sofisticado do que yes para enviar y N número de vezes e, em seguida, passar a entrada do teclado além disso. Você não pode fazer isso com rm , exceto para perguntar sempre ( rm -i ) ou nunca perguntar ( rm -f ).

Você sempre pode cancelar rm por

  • pressionando Control-C para interrompê-lo (envia SIGINT),
  • pressionando Control-Z para pará-lo (envia SIGSTOP) e depois o mata,
  • enviando um SIGTERM ( kill ) ou
  • enviando um SIGKILL ( kill -9 ).

Isso não irá desfazer quaisquer operações de arquivo que rm já tenha executado, mas evitará que ele realize qualquer outra operação de arquivo. Se o processo rm estiver atualmente solicitando a entrada do usuário, ele não está ativamente desvinculando nenhum arquivo, portanto, matá-lo simplesmente impedirá que ele continue.

    
por 04.11.2015 / 21:12
10

GNU rm suporta -i , que eu assumo é o que você está se referindo e pede confirmação para cada arquivo, mas também -I , que é um pouco diferente:

-I     prompt once before removing  more  than  three  files,  or  when
       removing  recursively.  Less intrusive than -i, while still giv‐
       ing protection against most mistakes

Para saber se é possível interromper uma interação com rm depois disso começou, pressionando Ctrl - C deve fazê-lo.

    
por 04.11.2015 / 21:16
2

com Ctrl + c você poderá cancelar a operação.

Mas se você olhar no seu arquivo .bashrc , você pode comentar o alias que forçou a confirmação, use o -i param como dhag.

em você .bashrc você encontrará uma entrada como esta:

alias rm='rm -i'

se você comentar, seu rm -f funcionará diretamente

    
por 04.11.2015 / 21:12
1

Em bash , você pode ignorar um alias adicionando um \ ao comando, então

rm filename

torna-se

\rm filename
    
por 04.11.2015 / 21:20

Tags