Is there any way to exit “less” follow mode without ^C?
Да, , начиная с версии 569, можно выйти из режима отслеживания с помощью CTRL + X , что не останавливает другие процессы в канале.
Для более ранних версий less (с поддержкой только CTRL + C)можно настроить так, чтобы сигнал SIGINT, отправляемый при нажатии CTRL + C не влияет на другие процессы в канале, что позволяет им продолжать работу. Этого можно добиться, выполнив любое из следующих действий:
- предотвращение доступа SIGINT к другим процессам в канале путем перемещения этих процессов в отдельную группу процессов с помощью утилиты setsid :
(setsid seq 10000000) | less +F
- обработка(перехват)SIGINT, чтобы он не доставлялся другим процессам в канале:
(trap '' INT; seq 10000000) | less +F
- с использованием подстановки процессов (несовместимая с POSIX функция, реализованная в Bash, Zsh и Ksh, но не в, например,. Тире):
less -f +F <(seq 10000000)
- отправка процессов в фоновый режим (с использованием того факта, что оболочки игнорируют SIGINT и SIGQUIT в фоновых процессах):
(seq 10000000 &) | less +F
Для наблюдения за влиянием вышеперечисленных команд на группы процессов и обработку сигналов я предлагаю использовать команду
ps -O ppid,pgrp,sid,ignored --forest -C bash,less,seq
в отдельном терминале.
Ваш первый патч и то, как вы его применяете, просит patch
создать файл с именем Upd/create_me.txt
, а не Org/create_me.txt
:, полный путь имеет значение. Когда patch
видит запись, датированную эпохой (170 -01 -01 00 :00 :00 UTC ), он знает, что это представляет несуществующий -файл; если это «начальная» запись, он знает, что должен создать файл, а если это «конечная» запись, он знает, что должен удалить файл. Имя создаваемого или удаляемого файла берется из другой записи .
Второй патч работает так же, :он указывает patch
удалить Org/delete_me.txt
.
Ваш третий подход работает, потому что вы указываете patch
игнорировать первую часть пути, , то естьOrg
или Upd
. Таким образом, он создает файл с именем create_me.txt
в текущем каталоге Org
.
Чтобы ваш первый пример заработал, вы можете заменить Upd/create_me.txt
на Org/create_me.txt
в патче.