如何读取linux程序屏幕上最近的一行?

如何读取linux程序屏幕上最近的一行?,linux,text,grep,gnu-screen,Linux,Text,Grep,Gnu Screen,我使用screen运行一个minecraft服务器.jar,我想编写一个bash脚本,看看最近的一行是否每五分钟左右就改变一次。如果有,那么脚本将从头开始,并在五分钟后再次进行检查。如果没有,它应该终止java进程 如何通过bash脚本从屏幕获取最后一行文本?如果我理解,您可以将程序的输出重定向到文件中,并使用操作符>。 尝试运行: ls-l>myoutput.txt 然后打开创建的文件。要使用tail命令tail-n1将为您提供文件的最后一行或重定向的标准输出,而tail-f将保持tail程序

我使用screen运行一个minecraft服务器.jar,我想编写一个bash脚本,看看最近的一行是否每五分钟左右就改变一次。如果有,那么脚本将从头开始,并在五分钟后再次进行检查。如果没有,它应该终止java进程


如何通过bash脚本从屏幕获取最后一行文本?

如果我理解,您可以将程序的输出重定向到文件中,并使用操作符>。 尝试运行:

ls-l>myoutput.txt


然后打开创建的文件。

要使用
tail
命令
tail-n1
将为您提供文件的最后一行或重定向的标准输出,而
tail-f
将保持
tail
程序运行,直到您自己取消它

例如:

echo -e "Jello\nPudding\nSkittles" | tail -n 1 | if grep -q Skittles ; then echo yes; fi
第一部分仅打印三行文本:

Jello
Pudding
Skittles
tail-n1
查找最后一行文本(“
Skittles
”),并将其传递到下一节

grep-q
如果您的模式被发现,则简单地返回TRUE,如果没有,则返回FALSE,而不实际转储或输出任何内容到屏幕

因此,
if grep-q Skittles
部分将检查
grep-q Skittles
模式的结果,如果找到
Skittles
,则在屏幕上打印“
yes
”。如果没有,则不会打印任何内容(尝试将
Skittles
替换为
Pudding
,即使它在原始输入中,它也不会从
tail-n1
调用的另一端打印出来)

也许您可以使用该逻辑将.jar输出到标准输出,然后每5分钟搜索一次输出