linux - 如何重定向在运行 'tail -f' 和 'grep' 的终端中键入的输入?

标签 linux bash grep serial-port

我有一个使用串行线与用户交互的设备,它接受输入并打印跟踪作为返回。然而,这些痕迹非常冗长,大部分时间我都是通过另一个运行命令的终端来观察它们

tail -f serial.log | grep <myfilter>

但是,当我需要输入数据时,我必须切换回正在读取(和记录)来自设备的串行输出的终端。

有没有办法在同一个终端上做到这一点?我想输入我的“grepped”终端,让这些字符到达设备。

最佳答案

您可以在后台运行您的 tail 命令:

{ tail --pid=$! -f serial.log | grep <myfilter>; } &

这将跟踪日志并将匹配项打印到您的终端,但您仍然可以像往常一样输入命令(要返回 PS1 提示符,请按回车键)。要停止命令,只需运行:

kill -9 $!

只要您还没有启动任何其他后台任务!如果您有其他后台任务要运行,您可以在启动 tail 命令后立即存储 $! 的值,稍后使用它来终止它。

关于linux - 如何重定向在运行 'tail -f' 和 'grep' 的终端中键入的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541188/

相关文章:

linux - 如何去掉文档的一些新行

linux - 动态创建 proc 目录条目?

linux - 将每个目录的内容移动到一个新的子目录

json - 将 JSON 解析为 shell 脚本中的数组

bash - 如何将 palettegen 和 paletteuse 过滤器与 FFmpeg 一起用于图像序列?

python - 从 python 控制台使用 grep

grep - 使用 grep 搜索标签

linux - 高级 while 控制语句

linux - Java操作系统

c - 为什么 fseek 使用 read() 系统调用?