Shell 一个终端是如何实现的;ASCII动画“;工作
我称之为ASCII动画,因为没有更好的词。我指的是一个加载条,比如说像在<代码>pacman(arch package manager)中,它是这样开始的Shell 一个终端是如何实现的;ASCII动画“;工作,shell,command-line,Shell,Command Line,我称之为ASCII动画,因为没有更好的词。我指的是一个加载条,比如说像在pacman(arch package manager)中,它是这样开始的 [ ] 随着时间的推移,这 [#### ] 从我对stdout的理解来看,我似乎无法理解这个看似简单的功能。我希望 [ ] [# ] [### ] ... 我不明白的是,它如何能够在标准输出上打印(如果它真的这样做的话)。我们有时认为终端只是显示文本,但它们实际上更像浏览
[ ]
随着时间的推移,这
[#### ]
从我对stdout的理解来看,我似乎无法理解这个看似简单的功能。我希望
[ ]
[# ]
[### ]
...
我不明白的是,它如何能够在标准输出上打印(如果它真的这样做的话)。我们有时认为终端只是显示文本,但它们实际上更像浏览器,以控制字符和ANSI终端转义码的形式呈现自己的小标记 简单的单行动画通常使用回车控制字符完成。通过写入回车符,光标将返回到最左边的空白处,因此您可以在该行上重复写入任意次数 显然,您会使用循环,但为了清晰起见,这里有一个示例:
{
printf '[## ]'
sleep 1
printf '\r[### ]'
sleep 1
printf '\r[#### ]'
}
对于更高级的动画,例如,您可以通过将特殊ANSI转义序列写入文本来任意定位光标。tput
工具在shell脚本中对此很有帮助,并且tput cup 4 50
将输出一个ANSI序列,以将光标移动到第4行第50列。这相当于printf'\x1B[4;50H'
,只需向终端写入一段魔法文本
以下是用于starfield动画的功能(ctrl-c退出):
甚至像
top
和nano
这样的工具也会通过仔细编写文本和控制字符来创建颜色、线条、刷新列表等来显示它们所显示的内容。我们有时认为终端只是显示文本,但实际上它们更像浏览器,以控制字符和SI终端转义码
简单的单行动画通常使用回车符控制字符来完成。通过写入回车符,光标将返回到最左侧的边距,因此您可以根据需要在该行上再次写入
显然,您会使用循环,但为了清晰起见,这里有一个示例:
{
printf '[## ]'
sleep 1
printf '\r[### ]'
sleep 1
printf '\r[#### ]'
}
对于更高级的动画,例如,您可以通过将特殊的ANSI转义序列写入文本来任意定位光标。tput
工具在shell脚本中对此很有帮助,并且tput cup 4 50
将输出ANSI序列以将光标移动到第4行第50列。这相当于printf'\x1B[4;50H'
,只需向终端写入一段魔法文本
以下是用于starfield动画的功能(ctrl-c退出):
甚至像top
和nano
这样的工具也通过仔细编写文本和控制字符来创建颜色、线条、刷新列表等来显示它们所显示的内容