是否可以像下图中那样在 Linux 控制台上覆盖彩色文本?

是否可以像下图中那样在 Linux 控制台上覆盖彩色文本?

我编写了很多 bash 脚本来满足各种需求。最近我开始感受到在它们之上实施各种指标的冲动。

在自动无人值守安装脚本中知道正在执行哪个操作会很酷。

另外..最好有一个状态栏显示实际进度的百分比。

Linux(最好是 Debian)中有一些像我的模型那样的库和命令用于操作终端输出?

(以下命令是假模型,只是为了让读者理解)

txtoverlay -k head -c azure“所有命令之上的 MyString”

或者

txtovelay -k tail -c green -a right "[ 完成度: 57 % ]"

或者

txtovelay -k 画布 -c 天蓝色 -b 深蓝 -l 2 -t 5 -w 68 -h 50

要生成类似以下图形模型的东西?

在此输入图像描述

在此输入图像描述

在此输入图像描述

或者甚至一些更复杂的叠加层..

基本上,这个概念在 HTML 中可能是相同的,在主网页上有一些 DIV,其位置:固定

<div id="MyDiv1" style="position:fixed; color: #00ffff; top: 0px; left: 0px; padding: 10px"></div>

<div id="MyDiv2" style="position:fixed; color: #00ff00; bottom: 0px; right: 0px; padding: 10px; text-align: right"></div>

并在脚本执行过程中时不时地执行各种命令,例如:

document.getElementById("MyDiv1").innerHTML = "Step 5: Installing NET-TOOLS package in progress..<br>-------------------------"

document.getElementById("MyDiv2").innerHTML = "[Completition: 57 % ]"

答案1

是的,你可以做这些事情。只关注如何将彩色文本放置在特定位置的问题,一种直接但有点低级的途径是使用该tput实用程序。tput有许多命令可以在数据库的帮助terminfo下操作终端屏幕。例如,tput cup 23 4将光标移动到终端的第 23 行、第 4 列。其他一些例子:

tput ed  # clear to end of screen

tput setaf 2  # set foreground color to bright green

tput cubl  # move cursor left one space

tput rev  # turn on reverse video mode

tput sc  # save the cursor position
tput rc  # restore the cursor position

您可能还会发现该stty实用程序的用途。例如,如果您想确定当前屏幕的尺寸,您可以这样做stty size

我之前为我的一些实用程序构建了一个粗略的“GUI”,将屏幕分为两个部分。顶部是固定高度的标题。底部包含(滚动)命令输出。我仅使用 Bash 脚本和tput+来完成此操作stty。我通过反复试验发现了很多,但是网上有一些很好的资源,例如http://linuxcommand.org/lc3_adv_tput.php

参见man tputman 5 terminfo。对于后者,您需要向下滚动到预定义功能特别是部分。

可能有更高级别的抽象术语信息基于屏幕操作,但如果你有相对简单的要求tput是一个不错的选择。 (我相信tput这是恩诅咒另一个答案中提到的软件包。)

编辑:我应该补充一点,因为听起来您希望所有屏幕上都有这些功能,所以您可以通过编写一个 shell 脚本来实现这一点,该脚本使用tput如上所述的方法并将环境变量指向PROMPT_COMMAND该脚本,以便每次提示时都会调用它神清气爽。如果您想要更频繁的刷新,那么您必须让一些进程在后台运行,同时仍然连接到屏幕。这超出了我在这个答案中试图咬住的内容。

答案2

据我了解你正在寻找像这样的图书馆恩诅咒或蟒蛇的乌尔维德

相关内容