少打断

Ed *_*Man 16 less sigint

我经常通过管道将程序输出减少到更少,例如

produce_output | less
Run Code Online (Sandbox Code Playgroud)

这很好用,直到produce_output产生大量输出。如果我搜索文件深处的某些文本,则报告较少

Calculating line numbers... (interrupt to abort)
Run Code Online (Sandbox Code Playgroud)

如果我用 Control+C 中断,它也会杀死produce_output,这会阻止它产生进一步的输出。有没有办法将中断发送到less,以便produce_output继续运行?

我知道我可以使用kill -INT less_process,但我认为必须有更好的解决方案。

use*_*686 19

通常,管道中的所有进程都在同一个进程组中运行,从而导致所有进程都接收到信号。您可以使用在不同的 pgrp 中setsid foo | less运行foo


Mat*_*teo 10

您可以使用以下命令禁用行号

   -n or --line-numbers
Run Code Online (Sandbox Code Playgroud)

选项。

produce_output | less -n
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,但从不需要的功能开始较少,然后尝试发送信号以禁用您可以使用开关禁用的功能是一种解决方法,而不是解决方案。当然@grawity 解决方案很好(我投了票)但是来吧:在另一个组中启动第一个进程以能够发送信号来中断不需要的任务(行计数)真的有点太很多工作。 (2认同)