我想在终端(Ubuntu 14.04)中制作一个动画光标提示符,
所以我制作这个剧本:
while [ : ] do echo -ne '|\r' sleep 0.3 echo -ne '/\r' sleep 0.3 echo -ne '一\r' sleep 0.3 echo -ne '\\ \r' sleep 0.3 echo -ne '|\r' sleep 0.3 echo -ne '$\r' sleep 0.3 done
但是当我把它放在.bashrc ps1 ~/animated-prompt.sh &
中时,它会导致文本失真,我写的每一个东西都会被\r
字符覆盖。
那么无论如何要做这项工作吗?
(IDK,就像将脚本放到另一个进程线程而不是终端正在处理的进程线程上)
答案 0 :(得分:2)
保存并恢复光标位置而不是\ r \ n。移动到需要保存和恢复光标位置之间动画的所需列位置。
对于光标移动,请参阅http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html
修改后的脚本:
s="\033[s"
u="\033[u"
# Position of column
# As per my command prompt, i want 15th column( so 14C)
pos="\033[1000D\033[14C"
while [ : ]
do
eval echo -ne '$s$pos\|$u'
sleep 0.3
eval echo -ne '$s$pos/$u'
sleep 0.3
eval echo -ne '$s$pos一$u'
sleep 0.3
eval echo -ne '$s$pos\\\\$u'
sleep 0.3
eval echo -ne '$s$pos\|$u'
sleep 0.3
eval echo -ne '$s$pos\$$u'
sleep 0.3
done
[root@hello ~]|
正如您使用的那样,它适用于.bashrc中的最后一行
由于
答案 1 :(得分:0)
echo -ne '一\r'
# ^
# |
# \--- problem
这个角色应该是hyphen,但实际上是一个叫做的东西 CJK Ideograph, First