如何为终端制作动画bash shell提示符?

时间:2015-04-04 16:15:08

标签: bash animation terminal command-prompt ubuntu-14.04

我想在终端(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字符覆盖。
enter image description here
那么无论如何要做这项工作吗? (IDK,就像将脚本放到另一个进程线程而不是终端正在处理的进程线程上)

2 个答案:

答案 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