C 在不使用诅咒的情况下设置控制台图形的动画

C 在不使用诅咒的情况下设置控制台图形的动画,c,console,ncurses,curses,sox,C,Console,Ncurses,Curses,Sox,我一直在使用play命令行工具从控制台播放音频文件,并注意到有一个很好的时间信息和左/右级别的小屏幕,随着音频源的实时更新 然而,克隆之后,我找不到任何关于Ncurses的提及。有人知道SoX是如何做到这一点的吗?我不知道该查找什么,也不知道该查找哪个文件来查看它是如何实现的。我怀疑它仅仅使用了\b字符。我猜想它使用的是终端,这是一组由许多(但不是所有)Linux终端支持的转义序列 您甚至可以直接从命令行使用echo。例如: $ s=($(stty size)); echo -en "\e[

我一直在使用
play
命令行工具从控制台播放音频文件,并注意到有一个很好的时间信息和左/右级别的小屏幕,随着音频源的实时更新


然而,克隆之后,我找不到任何关于Ncurses的提及。有人知道SoX是如何做到这一点的吗?我不知道该查找什么,也不知道该查找哪个文件来查看它是如何实现的。

我怀疑它仅仅使用了
\b
字符。我猜想它使用的是终端,这是一组由许多(但不是所有)Linux终端支持的转义序列

您甚至可以直接从命令行使用
echo
。例如:

$ s=($(stty size)); echo -en "\e[2J\e[$((s[0]/2));$((s[1]/2-6))HHello world.\e[${s[0]};0H"

这会给你一个空白的屏幕,除了在屏幕中部打印的“hello World”消息和最下面的提示。

它可能只打印没有换行符的状态,然后发送一堆回退字符(<代码> \ b′< /代码>)。将光标移回行首以覆盖它。@pat doh。我想回车(
\r
)也同样有效。是否有任何方法可以通过编程方式查询控制台,以查看其是否能够执行光标移动命令。这样,如果控制台不理解,就可以调用回退方法。据我所知不是这样。但到目前为止,我还没有发现任何现代终端不支持这一点。再说一次,我确实倾向于使用给定发行版上的默认终端,我主要使用主流发行版,如RedHat、Debian、Ubuntu等。所以我不能确定,但我怀疑你会发现很多终端至少不支持基本的光标定位转义序列,除非你运行的是非常旧的操作系统,比如20年前的SunOS或HPuX版本,等等。无论如何,这是我的猜测。