繁体   English   中英

读取bash命令输出的最后一行

[英]Read the last line of output of a bash command

我想读取bash命令的当前输出行。 我知道我可以用cmd | tail -1 cmd | tail -1 ,但我想将其作为单独的命令(tint2可执行文件)作为进度表来运行。

例如:

我有一个python程序,它在下载图像时输出Downloaded x out of y ,我想将输出作为shell变量获取。

要么:

也许我正在运行pacman -Syy ,我想要

extra 420.6 KiB 139K/s 00:09 [#####-----------------] 24%

这可能吗?

编辑:终端中正在运行某些内容。 我想要一个在前一个终端中输出命令最后输出的命令,也许输入了一个pid。

您可以使用tee将内容写入终端和一些日志文件。
可以说您的python程序如下所示

function mypython {
   for i in 10 30 40 50 80 90 120 150 160 180 190 200; do
      (( progress = (100 * i + 50) / 200 ))
      printf "extra   xx Kb, total %-3d of 200 (%d %%)\n" $i ${progress}
      sleep 1
   done
}

您可以重定向或tee输出到一个tmp文件:(mypython> /tmp/robert.out)或(mypython |三通/tmp/robert.out)

在另一个窗口中,您可以获取带有tail -1 /tmp/robert.out的最后一行

当您只想查看进度时,您可能想要使最后一行覆盖上一行。

mypython | while read -r line; do
   printf "Progress of mypython: %s\r" "${line}"
done

当这是您想要的时,您可能想要更改python程序

  printf "...\r" ... 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM