Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在脚本期间将光标隐藏在终端中,并在命令中断时将其恢复到正常状态?_Linux_Bash_Shell - Fatal编程技术网

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

Linux 如何在脚本期间将光标隐藏在终端中,并在命令中断时将其恢复到正常状态?,linux,bash,shell,Linux,Bash,Shell,假设我有一个脚本,它显示了一点动画: while[条件] 做 echo-ne“\r已完成ᕙ( ᐕ )ᕓ " 睡眠0.3 echo-ne“\r已完成ᕕ( ᐛ )ᕗ " 睡眠0.3 完成 问题是,光标在跳舞的小家伙旁边闪烁,这对我来说是一个(轻微的)不便,我希望光标是隐藏的 因此,我尝试了tput civis,它确实隐藏了光标。问题是您需要运行tput cnorm,使其恢复正常。在我的示例中,如果我尝试: tput civis while[条件] 做 echo-ne“\r已完成ᕙ( ᐕ )ᕓ "

假设我有一个脚本,它显示了一点动画:

while[条件]
做
echo-ne“\r已完成ᕙ( ᐕ )ᕓ "
睡眠0.3
echo-ne“\r已完成ᕕ( ᐛ )ᕗ "
睡眠0.3
完成
问题是,光标在跳舞的小家伙旁边闪烁,这对我来说是一个(轻微的)不便,我希望光标是隐藏的

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

tput civis
while[条件]
做
echo-ne“\r已完成ᕙ( ᐕ )ᕓ "
睡眠0.3
echo-ne“\r已完成ᕕ( ᐛ )ᕗ "
睡眠0.3
完成
tput cnorm
这很好,除非用户
Ctrl-C
s退出我的程序,这将导致他们有一个不可见的光标,这真的很烦人

我试着像这样运行脚本:

/script | | tput cnorm
但是它没有帮助。(我更希望能够使用
/script
)运行脚本)

这开始是一个愚蠢的问题,但现在我真的很想知道如何解决它

那么,这个问题有解决办法吗?或者我必须容忍动画旁边的小光标闪烁吗?

你能用吗

function cleanup() {
    tput cnorm
}

trap cleanup EXIT

tput civis
while [ condition ]
...