Автоматическая команда «да» при исправлении?

#terminal #automation #linux-kernel #patch

#терминал #автоматизация #linux-ядро #исправление

Вопрос:

Я пытаюсь исправить ядро с помощью следующей команды:

 patch -p1 < 0001-Linux-3.4.4.patch
  

Однако я продолжаю получать y / n? такие ответы, как:

 The next patch would create the file arch/arm/mach-at91/pm_slowclock.S,
which already exists!  Assume -R? [n]
  

Я попытался решить эту проблему, автоматизировав ее с помощью этой команды:

 yes | patch -p1 < 0001-Linux-3.4.4.patch
  

Однако терминал все еще запрашивает меня с помощью y / n? ответ.
Кто-нибудь может мне здесь помочь? Спасибо

Ответ №1:

Вы пытаетесь ввести стандартный ввод в patch команду сразу из двух мест: канал ( | ) из выходных данных yes и перенаправление ( < ) из файла исправления. Перенаправление выполняется после настройки конвейера, поэтому стандартный ввод будет поступать из файла исправления, а не из конвейера.

patch не считывает ответы на свои вопросы со стандартного ввода, он считывает их непосредственно с управляющего терминального устройства.

patch есть несколько вариантов, чтобы не задавать вопросы:

  • -f или --force будет предполагать, что исправления не отменены.
  • -t или --batch предположит, что исправления, которые выглядят обратными, отменены.

Существует также опция -R или --reverse , чтобы явно указать, что исправление отменено.