玩命加载中 . . .

Linux下tput更改终端设置


Overview

闲着没事,feel bored, 水一篇…

tput命令用于更改终端设置,如设置文本颜色,移动光标位置。

设置颜色

for i in `seq 1 10`; do tput setaf $i; echo "This is in color $i"; done

效果图如下所示:

移动光标

tput 是一个终端操作实用程序,它利用 terminfo 数据库操纵终端。你可以使用它来移动光标,清除屏幕或部分区域,以及改变字体样式等。光标移动是 tput 的基本功能之一。移动光标的tput命令:

  • tput cup Y X: 移动光标到屏幕上的位置(Y,X),其中 Y 是行号,X 是列号,计数从0开始。

  • tput home: 移动光标到左上角(同0 0)。

  • tput cuf N: 将光标向前(右)移动 N 个位置。

  • tput cub N: 将光标向后(左)移动 N 个位置。

  • tput cuu N: 将光标向上移动 N 行。

  • tput cud N: 将光标向下移动 N 行。

示例

  • 移动光标到特定位置

# 移动光标到第5行第10列
tput cup 4 9
  • 将光标移至屏幕左上角(通常认为是0 0,但使用tput时不需要指定0 0)

tput home
  • 将光标向右移动5个位置

tput cuf 5
  • 将光标向上移动3行

tput cuu 3

使用tput移动光标的脚本示例

以下是一个简单的bash脚本示例,演示如何使用tput在屏幕上绘制一个静态的文本框。脚本使用tput来定位光标并画出框的四个角:

#!/bin/bash
# 定义文本框的大小
width=50
height=10

# 定位到屏幕中央
tput cup $(( ( $(tput lines) - height ) / 2 )) $(( ( $(tput cols) - width ) / 2 ))

# 画上边界
printf '┌'
for (( i = 1; i <= width - 2; i++ )); do
    printf '─'
done
printf '┐'

# 画中间内容
for (( i = 1; i <= height - 2; i++ )); do
    tput cud 1
    tput cub $((width - 1))
    printf '│'
    tput cuf $((width - 2))
    printf '│'
done

# 画下边界
tput cud 1
tput cub $((width - 1))
printf '└'
for (( i = 1; i <= width - 2; i++ )); do
    printf '─'
done
printf '┘'

# 将光标移回原位
tput cup $(( $(tput lines) - 1 )) 0

上述代码运行效果如下图所示:

进阶示例

我们可以结合使用tput和echo命令,在终端中绘制一个框。此示例展示了如何利用tput进行光标控制和绘图:

# 清屏
clear
# 移动到左上角
tput cup 0 0
echo -n "+"; for i in {1..20}; do echo -n "-"; done; echo "+"
for i in {1..10}
do
    tput cup $i 0
    echo -n "|"
    tput cup $i 22
    echo "|"
done
tput cup 11 0
echo -n "+"; for i in {1..20}; do echo -n "-"; done; echo "+"

上述代码运行效果如下图所示:

注意:

  • 上述示例假定你的终端支持某些Unicode字符来绘制边界。如果终端不支持,你可以选择ASCII字符(如-和|)替代。

  • 不仅可以用tput改变光标的位置,但也可以用于其他高级终端操作,比如设置前后景色,使文本加粗、下划线、闪烁等特效。了解这些命令可以帮你设计动态的输出或交互式的脚本。


文章作者: Gavin Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gavin Wang !
  目录