如何在脚本执行期间将光标隐藏在终端中,并在命令中断时将其恢复为正常状态?

因此,假设我有一个显示一些动画的脚本:

while [ condition ]
do
    echo -ne "\rfinished ᕙ( ᐕ )ᕓ "
    sleep 0.3
    echo -ne "\rfinished ᕕ( ᐛ )ᕗ "
    sleep 0.3
done

问题是光标在跳舞的小家伙旁边闪烁,这对我来说是一个(次要的)麻烦,我希望隐藏光标。

所以我尝试了tput civis,它确实隐藏了光标。问题是您需要运行tput cnorm才能恢复正常。在我的示例中,如果我尝试:

tput civis
while [ condition ]
do
    echo -ne "\rfinished ᕙ( ᐕ )ᕓ "
    sleep 0.3
    echo -ne "\rfinished ᕕ( ᐛ )ᕗ "
    sleep 0.3
done
tput cnorm

这很好用,除非用户Ctrl-C从我的程序中退出,这将导致他们的光标不可见,这确实很烦人。

我试图这样运行脚本:

./script || tput cnorm

但是没有帮助。 (同样,我更希望能够仅使用./script运行脚本)

这最初是一个愚蠢的问题,但现在我真的很想知道如何解决这个问题。

那么,有没有解决这个问题的方法,还是我必须忍受动画旁边这个闪烁的小光标?

nuaadoudou 回答:如何在脚本执行期间将光标隐藏在终端中,并在命令中断时将其恢复为正常状态?

您可以使用trap吗?

function cleanup() {
    tput cnorm
}

trap cleanup EXIT

tput civis
while [ condition ]
...
本文链接:https://www.f2er.com/3159114.html

大家都在问