Я часто перенаправляю вывод программы на меньшее, например
produce_output | less
Это прекрасно работает, пока не произведет produce_output
большое количество продукции. Если я ищу какой-то текст, который находится глубоко в файле, меньше отчетов
Calculating line numbers... (interrupt to abort)
Если я прерываю работу с Control + C, это также убивает produce_output
, что останавливает его от дальнейшего вывода. Есть ли способ отправить прерывание на меньшее, чтобы оно produce_output
продолжалось?
Я знаю, что мог бы использовать kill -INT less_process
, но я думаю, что должно быть лучшее решение.
kill
.select
ждать ввода одновременно из файла / канала и терминала.F
работает режим (follow). Трубы и т. П. Одинаково.Вы можете отключить номера строк с помощью
вариант.
источник
Работая с большими объемами вывода, я нашел очень полезным отправить вывод в файл и использовать
tail -f
илиless +F
для просмотра, например:2>&1
Синтаксис убеждается , что и стандартный вывод и стандартный поток ошибок перейти кout
--- удалить , что если вы хотите только стандартный вывод собирается в файл. Таким образом, вы можете проверять вывод различными способами (даже с другой машины) без необходимости связываться с программой, производящей вывод.Обратите внимание, что это
2>&1
может быть связано с Bash (я не уверен). Убедитесь, что у вас достаточно места на диске для выходного файла :-)источник
2>&1
это POSIX, голый>&
это башизм.less +F
в моем примере; Я только что обновил свой ответ.less +F
(посколькуless +F
данные обрабатываются так, как они генерируются). Пример, который я привел, не имеет той же проблемы, что и первоначально опубликованный: Ctrl + C не будет прерыватьprocess_output
. Если один не заботится о функциональности «следовать», один может работатьproduce_output > out 2>&1
, а затемless out
. Проблема вproduce_output | less
том, что если что-то сломает канал (например, случайно нажмет 'q'less
), тоproduce_output
умрет (без специальной обработки SIGPIPE).Вы также можете просто сделать это:
источник