这里我有一个二进制时钟,它输出16种不同颜色的二进制时钟,我试图让它出现在屏幕的中心,但不能这样做。如果您有任何建议,请告诉我。 感谢
color=("0;30" "0;31" "0;32" "0;33" "0;34" "0;35" "0;36" "0;37" "1;30" "1;31" "1;32" "1;33" "1;34" "1;35" "1;36" "1;37")
color2=${#color[*]}
while true;
do
clear
echo -ne '\e['${color[$((RANDOM%color2))]}m
hour=$(date +%H)
minute=$(date +%M)
second=$(date +%S)
hour_binary=$(echo "ibase=10;obase=2;$hour" | bc)
minute_binary=$(echo "ibase=10;obase=2;$minute" | bc)
second_binary=$(echo "ibase=10;obase=2;$second" | bc)
printf "%06d\n" "$hour_binary"
printf "%06d\n" "$minute_binary"
printf "%06d" "$second_binary"
sleep 1
done
答案 0 :(得分:4)
如果您指的是终端窗口的中心,请使用以下命令获取终端窗口的列和行:
COLS=$(tput cols)
ROWS=$(tput lines)
CLOCKWIDTH=8 #I'm assuming a HH:MM:SS format
CENTERCOL=$((COLS/2))
CENTERCOL=$((CENTERCOL-CLOCKWIDTH))
CENTERROW=((ROWS/2))
然后使用tput命令设置光标位置:
tput cup $CENTERCOL $CENTERROW
有关使用tput和http://www.cyberciti.biz/tips/spice-up-your-unix-linux-shell-scripts.html的示例,请参阅https://www.gnu.org/software/termutils/manual/termutils-2.0/html_chapter/tput_1.html以获取有关tput命令的更多信息。
答案 1 :(得分:2)
我会做什么:
cols=$(tput cols)
lines=$(tput lines)
numcols=$(((cols-6)/2))
numlines=$((lines/2))
while true; do
clear
tput setaf $((RANDOM%8))
hour=$(date +%H)
minute=$(date +%M)
second=$(date +%S)
hour_binary=$(echo "ibase=10;obase=2;$hour" | bc)
minute_binary=$(echo "ibase=10;obase=2;$minute" | bc)
second_binary=$(echo "ibase=10;obase=2;$second" | bc)
tput cup $numlines $numcols
printf "%06d\n" "$hour_binary"
tput cup $((numlines+1)) $numcols
printf "%06d\n" "$minute_binary"
tput cup $((numlines+2)) $numcols
printf "%06d" "$second_binary"
tput cup $((numlines+3)) $numcols
sleep 1
done
我已经用tput替换了硬编码的ansi序列