gpt4 book ai didi

bash - 在控制台上显示持久状态消息

转载 作者:行者123 更新时间:2023-11-29 08:55:19 24 4
gpt4 key购买 nike

我正在开发一个将大量输出发送到 stdout 的程序,但我希望能够轻松地分辨出该程序在做什么。我见过一些程序显示脚本或程序的输出,但控制台上的最后一行是“保留的”,这意味着命令的输出显示在屏幕上,但最后一行(或两行,或任意多行) ) 保留用于静态或偶尔更改的状态文本(例如 Building <xxxxxx>... )。通过这种方式,人们可以看到脚本/程序的输出以用于调试/故障排除目的,还可以快速浏览并查看程序的状态。 有什么方法可以用 shell 脚本实现吗?我不介意使用内置系统工具,例如 awk , 格式化文本,只要使用的工具在大多数系统上都很常见。如果可能的话,我也想避免 ncurses以及其他图书馆。

如果你还是不明白我在说什么,我会在这里尝试说明:

make -gcc -NOFLAGS -someotherGibberishHere Component1afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component2afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component3afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component4afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component5afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component6afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component7afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component8afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component9afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component10afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component11afdjadfjfadkladfjk.. (etc.).------------------------------------------------------------------------Installing component 11/134...

在这个特定的示例中,即使控制台输出开始滚动,我也希望“正在安装组件 11/134...”这一行保留在那里。最好,我也希望将该线也保持在它的正上方。

那样的话,一旦我们进入程序的核心部分并且通常 shell 会开始滚动,我们仍然会看到:

.. (more lines of output here).make -gcc -NOFLAGS -someotherGibberishHere Component58afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component59afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component60afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component61afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component62afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component63afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component64afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component65afdjadfjfadkladfjkmake -gcc -NOFLAGS -someotherGibberishHere Component66afdjadfjfadkladfjk------------------------------------------------------------------------Installing component 66/134...

最佳答案

可能值得研究一下tput 的功能。

像下面这样的东西可以构成始终在屏幕底部打印状态行的解决方案的开始:

numlines=$(tput lines)
numcols=$(tput cols)
numcols=$(expr $numcols - 1)
separator_line=$(for i in $(seq 0 $numcols);do printf "%s" "-";done;printf "\n")
tput cup $numlines
echo $separator_line
echo <your status line>

这个逻辑的目的是:

  • 算出屏幕上有多少行并移动到底部

  • 算出有多少列并构建分隔线以跨越那么多列

  • 打印分隔线,然后打印状态行

话虽如此,我确信必须有一种更优雅的方式来实现您想要做的...

关于bash - 在控制台上显示持久状态消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com