题
某些程序如何编辑终端上显示的内容(随机选择一个例子,程序“sl”)?我在这里考虑的是 Linux 终端,它也可能发生在其他操作系统中,我不知道。我一直认为一旦显示一些文本,它就会保留在那里。如何在不重新绘制整个屏幕的情况下更改它?
其他提示
根据您发送控制序列的终端。常见的序列例如 esc[;H 将光标发送到特定位置(例如在 Ansi、Xterm、Linux、VT100 上)。但是,这会根据用户拥有的类型或终端而有所不同......curses(与 terminfo 文件一起)将为您包装该信息。
试试这个shell脚本
#!/bin/bash
i=1
while [ true ]
do
echo -e -n "\r $i"
i=$((i+1))
done
-n 选项防止换行符... 表示回车...你一次又一次地在同一行中写入 - 没有滚动或其他什么
如果使用回车符(' ')而不是换行符(' ')终止发送到终端的行,它将把光标移动到当前行的开头,允许程序打印更多文本超出了之前打印的内容。我偶尔会用它来显示长任务的进度消息。
如果您需要进行更多的终端编辑,请使用 恩诅咒 或其变体。
可以发送到终端的字符将光标向后移动。然后可以覆盖文本。
有一个清单 这里. 。请注意“将光标移至某处”行。
NCurses 是一个跨平台库,可让您在智能终端上绘制用户界面。
塔奇下士回答了最低级别是如何做到这一点的。为了更容易开发 诅咒库 比简单地向终端发送字符提供更高级别的控制。
为了以@Corporal Touchy的答案为基础,有一些可用的库可以为您处理其中一些功能,例如 诅咒/ncurses
我同意 danio 的观点,ncurses 是正确的选择。这是一个很好的教程:
不隶属于 StackOverflow