![如何直接在终端上搜索文本](https://linux22.com/image/50483/%E5%A6%82%E4%BD%95%E7%9B%B4%E6%8E%A5%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%8A%E6%90%9C%E7%B4%A2%E6%96%87%E6%9C%AC.png)
我有一个程序将一些数据输出到终端(通过 printf() )。是否可以在终端上输出的文本上搜索文本直接地?
可以通过将文本导入文件然后对其进行搜索然后将结果输出到终端来进行搜索,但这不是我所要求的。
编辑:我所说的“搜索”是什么意思:我想知道是否可以搜索文本,例如如何libgnome-desktop
在下面的终端输出上进行搜索?
答案1
您可以使用终端多路复用器tmux
在任何终端中运行您的程序。然后,您可以通过Ctrl-进入复制模式的窗口进行搜索b [,并根据选择的是 emacs 还是 vi 模式,使用 emacs ( Ctrl- s) 或 vi ( /) 关键字来搜索字符串。
对于不同版本的 ,可用于退出复印模式的键是Esc或。Entertmux
或者,某些终端支持搜索窗口缓冲区,例如带有searchable-scrollback
Perl 扩展的 urxvt。
答案2
如果您正在使用屏幕,然后您可以进入复制模式Ctrl+a [然后输入:
?libgnome-desktop
要继续搜索更多实例,请n按 以搜索下一个实例,然后N按 以搜索上一个实例。要退出复制模式,请按Esc。
另外还有屏幕您可以space在复制模式下按 开始突出显示文本,然后space再次按 复制突出显示的文本。可以将其粘贴在提示符处或使用Ctrl+粘贴到终端输入的任何其他位置a ]。
答案3
你说的是search
什么意思?find
,grep
或者是其他东西?
你能$()
通过语法将 printf 的输出作为参数传递给另一个命令
grep "$(printf "%s" 'foo')" file