Патч на стандартный вывод с заменой процесса

Я пытаюсь сделать что-то вроде:

patch <( zcat data.201301.gz ) patch_file.diff -o /dev/stdout

результат, который я получаю:

File /dev/fd/63 is not a regular file -- refusing to patch
4504 out of 4504 hunks ignored -- saving rejects to file /dev/stdout.rej

Как я могу создать пропатченный файл с заменой процесса?

2 ответа

Глядя на исходный код патча, это не представляется возможным.

Файл для исправления должен быть стандартным файлом, любые другие типы файлов отклоняются.

К сожалению, символические ссылки, каналы, дескрипторы и т. Д. Не работают.

Чтобы обработать возможные символические ссылки внутри скриптов, это помогает:

patch -o "$out" "$(readlink "$in")" "$diff"
Другие вопросы по тегам