Как отменить команду rm?

Как отменить команду rm?

Есть много вопросов о том, какотменить законченное rmкоманда. В моем случае мой rm начал спрашивать: «Вы уверены, что хотите удалить этот файл?»

И мне нужно подтвердить для каждого из них. Вместо того, чтобы вручную подтверждать "y/n":

  1. Могу ли я установить «да» для оставшейся части, когда меня спрашивают y/n для n-го файла? (эквивалентно флажку «Да для всех» в Windows) (я знаю этот yes | rmтрюк еще до того, как начал)

  2. Могу ли я прервать операцию, пока меня спрашивают y/n для n-го файла? (кроме выключения машины :))

решение1

Для выполнения запроса 1 вам понадобится более сложная программа, чем yesотправлять yN раз и затем передавать ввод с клавиатуры сверх этого. Вы не можете сделать это с помощью rmexcept to always ask ( rm -i) или to never ask ( rm -f).

Вы всегда можете прервать операцию rm,

  • нажатие Control-C, чтобы прервать его (отправляет SIGINT),
  • нажать Control-Z, чтобы остановить его (отправляет SIGSTOP), а затем убить его,
  • отправка SIGTERM ( kill), или
  • отправив ему сигнал SIGKILL ( kill -9).

Это не отменит rmуже выполненные операции с файлами, но предотвратит выполнение дальнейших операций с файлами. Если процесс rmв данный момент запрашивает ввод данных пользователем, он не отсоединяет никакие файлы, поэтому его завершение просто предотвратит его продолжение.

решение2

GNU rm поддерживает -i, что, как я полагаю, и есть то, о чем вы говорите, и запрашивает подтверждение для каждого файла, но также -I, что немного отличается:

-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

Что касается возможности остановить взаимодействие с rm после его начала, то нажатие Ctrl- Cдолжно это сделать.

решение3

с помощью Ctrl+ cвы сможете отменить операцию.

Но если вы посмотрите в свой .bashrcфайл, вы можете закомментировать псевдоним, который принудительно подтверждается, он использует -iпараметр, как описано в dhag.

у вас .bashrcвы найдете такую ​​запись:

alias rm='rm -i'

если вы прокомментируете это, ваша rm -fволя будет работать напрямую

решение4

В разделе bash, вы можете обойти псевдоним, добавив \к команде префикс a, например:

rm filename

становится

\rm filename

Связанный контент