需求
由于项目需要编写一个脚本中倒计时的功能,思路总体是一个for循环中echo. 但是如何做到优雅还需要使用tput来打磨。
tput 的作用
tput是一个用于操作终端的Linux/Unix shell内置命令,用于设置终端的颜色、大小、位置等属性,以及让用户更加方便地操作终端。如移动光标、清屏、设置颜色等。
倒计时脚本
sleep命令可以延迟脚本执行一段时间(以秒为单位)。下面的脚本使用tput和sleep从0开始计时到40秒:
#!/bin/bash echo Count: tput sc # 循环40秒 for count in `seq 0 40` do tput rc tput ed echo -n $count sleep 1 done
解释
tput sc:tput sc是控制台控制终端的一个命令,用于保存当前控制台的光标位置。
tput rc:tput rc是控制台控制终端的一个命令,用于恢复之前保存的控制台光标位置。
tput ed:tput ed是控制台控制终端的一个命令,用于清除从当前光标位置到屏幕末尾的所有文本。
变量依次使用了由seq命令生成的一系列数字。我们用tput sc存储光标位置。在每次循环中,通过tput rc恢复之前存储的光标位置,在终端中打印出新的count值,然后使用tputs ed清除从当前光标位置到行尾之间的所有内容。行被清空之后,脚本就可以显示出新的值。sleep可以使脚本在每次循环迭代之间延迟1秒钟。