Come annullare un comando rm?


9

Ci sono molte domande su come annullare un rm comando finito . Nel mio caso, il mio rm ha iniziato a chiedere: "Sei sicuro di voler eliminare questo file?"

E devo confermare per ognuno di loro. Invece di confermare manualmente "y / n":

  1. Posso impostare "yes" sul resto mentre mi viene chiesto y / n per l'ennesimo file? (equivalente alla casella "Sì a tutti" su Windows) (Conosco il yes | rmtrucco prima di iniziare)

  2. Posso interrompere l'operazione mentre mi viene chiesto di sì / no per l'ennesimo file? (tranne per lo spegnimento della macchina :))


10
Basta premere ctrl-c e ricominciare? A proposito, con -f non dovrebbe chiederti nulla - questo è un po 'il punto di -f.
user253751

Hai ragione, rimosso "-f" dal titolo della mia domanda.
Andrejs,

Risposte:


19

Per soddisfare la richiesta 1 sarà necessario utilizzare un programma più sofisticato rispetto yesall'invio di yN numero di volte e quindi oltre l'input da tastiera. Non puoi farlo se rmnon per chiedere sempre ( rm -i) o non chiedere mai ( rm -f).

Si può sempre abortire rmda

  • premendo Control-C per interromperlo (invia SIGINT),
  • premendo Control-Z per fermarlo (invia SIGSTOP) e poi uccidendolo,
  • invio di un SIGTERM ( kill) o
  • inviandolo a SIGKILL ( kill -9).

Ciò non annullerà le operazioni sui file rmgià eseguite, ma impedirà di eseguire ulteriori operazioni sui file. Se il rmprocesso richiede attualmente l'input dell'utente, non sta scollegando attivamente alcun file, quindi ucciderlo impedirà semplicemente che continui.


Che ne dici yes | head -9 | rm...di ottenere 9 (per esempio) sì?
Jeff Schaller

2
@JeffSchaller Sarebbe arrivato al 9 ° y / n senza input ma non saresti in grado di rispondere y / n al 10 °.
Casey,

1
Si potrebbe usare { yes | head -n9; yes n; } | rm -i …per cancellare i primi 9 file, quindi rispondere, "no" per tutti i file rimanenti (e ovviamente la { … }parte potrebbe essere espansa per coprire qualsiasi possibile combinazione di numeri).
zrajm,

4
... anche se non vedo a cosa possa essere utile. Se sai a quali file desideri che non piacciano / non siano collegati, perché non passare gli argomenti corretti rminvece di creare comandi distorti e inaffidabili?
extra il

10

GNU rm supporta -i, che presumo sia quello a cui ti riferisci e chiede conferma per ogni file, ma anche -I, che è un po 'diverso:

-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

Se è possibile interrompere un'interazione con rm dopo che è iniziata, colpire Ctrl- Cdovrebbe farlo.


2

con Ctrl+ csarai in grado di annullare l'operazione.

Ma se guardi nel tuo .bashrcfile, puoi commentare l'alias che forza la conferma, usa il -iparametro come dhag espulso.

in te .bashrctroverai una voce come questa:

alias rm='rm -i'

se lo commenti, la tua rm -fvolontà funziona direttamente


1

Sotto bash, puoi bypassare un alias anteponendo \a al comando, quindi

rm filename

diventa

\rm filename

2
Non vedo come questo abbia a che fare con la mia domanda su "come interrompere il processo rm"
Andrejs

@AndreyDoronin Risolve il tuo utilizzo di approcci come quello che conosco il yes | rmtrucco prima di iniziare
Andrew Henle

@AndreyDoronin> dice come non finire per dover chiedere come interrompere il processo rm per i motivi che hai indicato nella tua domanda.
extra il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.