当我运行一个qemu
命令时,我在底行看到一条消息,它给了我一个 IP:PORT for vncviewer 命令。
[mahmood@com[mahmood@compute-0-0 ~] qemu-system-x86_64 -m 4096 -hda win7_x64_snap.img -boot c -usbdevice tablet -enable-kvm -device e1000,netdev=host_files -netdev user,net=10.0.2.0/24,id=host_files,restrict=off
qemu-sqemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000001H:ECX.tbm [bit 21]
VNC server running on 127.0.0.1:5900
我怎样才能得到屏幕上打印的最后一行?,所以我提取了最后一部分是127.0.0.1:5900
.
由于 qemu 是一个长时间运行的程序并且它不会返回到提示符,因此打开另一个终端并检查 qemu 正在使用哪个 IP:PORT 会更容易。所以,命令是
感谢您的建议。
我会使用
tail
andsed
,或者只是sed
例如
测试中的位
()
以查看它是否提供了您想要的。$(cmd)
是一个替换,它采用 的标准输出,cmd
并用这个输出替换自己。然后重新解析该行。注意:如果程序正在运行/继续运行,则无法知道当前行是否为最后一行。幸运的是,我认为您不必知道,这是最后一行。
grep
和的组合在cut
这里会很有用。您可以提取最后一行
该
-m1
标志意味着 grep 将在第一次匹配后停止读取,因为这可能是一个长时间运行的过程。然后你可以用
如果您希望将输出通过管道传输到另一个进程,您可能希望
qemu
在后台启动,如下所示:这应该有效:
<( your-qemu-command 2>&1 )
是一个进程替换,它qemu
使用重定向到匿名管道或 FIFO 的 stdout/stderr 启动;grep
从管道/FIFO 中读取,大致寻找模式 IP:PORT,其中 IP 指的是 IPv4 地址。确保它只打印匹配行的 IP:PORT 组合的选项-o
;grep
该-m1
选项确保grep
一旦找到它正在寻找的内容(即在第一次匹配时退出),它将返回到提示符。该-P
选项指示使用 Perl 正则表达式语法。qemu
一直在后台运行,直到完成。qemu
命令终止后stdout/stderr 上的任何输出grep
都将丢失,但由于 IP:PORT 组合应该是最后一个输出,因此不必担心。如果要捕获上述命令的输出,只需将其包装在命令替换中
$(...)
,如下所示: