如何读取linux程序屏幕上最近的一行?
我使用screen运行一个minecraft服务器.jar,我想编写一个bash脚本,看看最近的一行是否每五分钟左右就改变一次。如果有,那么脚本将从头开始,并在五分钟后再次进行检查。如果没有,它应该终止java进程如何读取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程序
如何通过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分钟搜索一次输出