9

Скажем, я хотел убедиться, что я сначала удаляю нужные файлы, поэтому я сделал что-то вроде:

rm -i *

просто чтобы убедиться, что я в порядке с файлами, которые я удаляю. Так что это попросит меня для каждого файла. Предположим, после нескольких файлов я понял, что это именно то, что я хотел удалить. Вместо CTRL+C и просто сделать rm * , есть ли способ, которым я могу просто сказать Да всем?

Этот вопрос больше связан с любопытством, чем с функциональностью.

7 ответов7

8

Ну, это не совсем отвечает на ваш вопрос. Но вместо использования rm -i рассмотрим псевдоним rm для rm -I:

Страница руководства гласит:

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

в вашем ~/.bashrc вставьте:

 alias rm='rm -I'

это на самом деле полезно!

8

Нет.

(Если вы не найдете способ перевернуть «интерактивный» бит с помощью отладчика.)

3

Если вы работаете на экране (хорошая идея в целом), вы можете сделать:

ctrl-a : exec .! yes y

Это заставит screen выполнить команду «yes», где y будет выводом, и направить указанный вывод в работающую программу (rm -i).

3

Есть ли способ, которым я могу просто сказать Да всем?

Ответ - да, используя этот код:

$ yes "yes" | rm -vRI directory

  • v: показать список файлов, которые были удалены
  • R: рекурсивно удалять каталоги и их содержимое
  • Я: согласно рекомендации выше.
3

Просто проверьте сначала с помощью ls *.bla а затем, возможно, rm -f *.bla ?

Будьте осторожны!

2

Это можно сделать, заменив дескрипторы файлов приложения на лету. Вам понадобится промежуточный файл, хотя.

Вы можете использовать gdb и именованный канал следующим образом (при условии, что вы используете больше терминалов, в противном случае вам придется использовать screen или что-то еще):

  • создать именованный канал с помощью "mkfifo myYesYesPipe"
  • запустите интерактивную копию с помощью команды rm -i и найдите ее PID
  • открыть GDB

Затем введите следующие команды в GDB, заменив PID

attach rmPID
call open("/path/to/myYesYesPipe",66,0666)
call dup2(3,0)
call close(3)
detach
quit

Это заменяет клавиатуру именованным каналом для rm.

Теперь вам нужно заполнить именованную трубу

  • запустить да> / путь / к / myYesYesPipe

rm прочитает трубу и все перезапишет.

1
  1. Поместите процесс rm в фоновом режиме с помощью Ctrl+Z
  2. Напомним последнюю команду (команда rm -i * )
  3. Удалить -i
  4. Enter для запуска команды
  5. fg %1
  6. Ctrl+C

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .