1. 命令简介tput 是一个通过 terminfo 数据库对终端会话进行初始化和操作的命令行工具。它允许用户查询和修改终端功能如移动光标、更改文本属性颜色、粗体、下划线等、清除屏幕区域等。该命令在 shell 脚本和交互式命令行中都非常有用特别适合创建动态的、格式化的终端输出。2. 语法格式plaintexttput [选项] [终端能力名称] [参数...]说明大多数情况下tput 直接接受一个 终端能力名称capability name作为参数。某些能力如 cup、setaf 等需要额外的参数。如果未指定终端类型tput 会使用 $TERM 环境变量来确定当前终端类型并查询对应的 terminfo 数据库。3. 常用选项及说明命令选项表格选项说明-T type指定终端类型。例如tput -T xterm-256color clear-V报告 tput 的版本信息并退出。-S从标准输入读取多个能力名称每行一个。允许在一次调用中执行多个操作。常用终端能力Capabilities光标控制表格能力名称说明clear清除整个屏幕同 CtrlL。sc保存当前光标位置。rc恢复之前保存的光标位置。cup Y X将光标移动到第 Y 行、第 X 列左上角为 0,0。civis隐藏光标。cnorm显示光标恢复正常。home将光标移动到屏幕左上角0,0。cuu N光标向上移动 N 行。cud N光标向下移动 N 行。cuf N光标向右移动 N 列。cub N光标向左移动 N 列。文本属性表格能力名称说明bold开始粗体文本。sgr0关闭所有属性恢复正常文本。smul开始下划线文本。rmul结束下划线文本。rev反显颜色前景色与背景色互换。blink开始闪烁文本部分终端支持。dim开始暗淡半亮度文本。颜色设置表格能力名称说明setaf N设置前景色文本颜色N 为颜色代码0-7 或 0-255取决于终端。setab N设置背景色N 为颜色代码。sgr0重置所有颜色和属性为默认值。常用颜色代码8 色标准0黑色1红色2绿色3黄色4蓝色5洋红色6青色7白色或浅灰色注意许多现代终端支持 256 色此时颜色代码范围为 0-255。终端信息查询表格能力名称说明cols返回终端的列数宽度。lines返回终端的行数高度。colors返回终端支持的颜色数量。longname返回终端的完整描述名称。4. 示例用法示例 1基本光标与屏幕控制plaintext# 清屏 tput clear # 移动光标到第 10 行第 20 列并输出文本 tput cup 10 20 echo Hello at (10,20) # 保存光标位置移动并输出然后恢复 tput sc tput cup 5 30 echo Temporary message tput rc示例 2文本样式与颜色plaintext# 输出粗体红色文本 tput bold tput setaf 1 echo Error: Something went wrong! tput sgr0 # 重置所有属性 # 输出带下划线的绿色文本 tput smul tput setaf 2 echo Important notice tput rmul tput sgr0 # 设置黄色背景、蓝色前景的文本 tput setab 3 # 黄色背景 tput setaf 4 # 蓝色前景 echo Colorful text tput sgr0示例 3在脚本中创建动态菜单bash运行#!/bin/bash # 清屏 tput clear # 设置标题样式并显示 tput cup 2 15 tput rev echo M A I N M E N U tput sgr0 # 显示菜单项 tput cup 4 10 echo 1. System Information tput cup 5 10 echo 2. Disk Usage tput cup 6 10 echo 3. Users Online tput cup 7 10 echo 4. Exit # 高亮提示输入区域 tput cup 9 10 tput bold read -p Enter your choice [1-4]: choice tput sgr0 # 处理选择...示例 4查询终端信息plaintext# 获取终端尺寸 echo Terminal is $(tput cols) columns wide and $(tput lines) lines tall. # 检查颜色支持 if [ $(tput colors) -ge 8 ]; then echo This terminal supports color. fi示例 5使用 -S 选项批量执行plaintext# 通过管道或 heredoc 传递多个命令 { echo clear echo cup 5 10 echo bold echo setaf 3 } | tput -S echo This text is at (5,10), bold and yellow tput sgr05. 注意事项终端能力的支持程度和具体效果因终端类型 ($TERM) 而异。在编写可移植脚本时建议进行特性测试例如先查询 colors 能力。使用 tput 修改文本属性如颜色、粗体后务必在不再需要时使用 tput sgr0 重置以免影响后续命令的输出格式。对于需要多个参数的能力如 cup参数的顺序通常是行号在前列号在后Y X。在脚本中频繁调用 tput 可能会影响性能。对于复杂的界面可以考虑将常用代码如颜色代码存储在变量中。获取更多Linux学习资料请关注“阿成学长工具包”对话框中输入2647获取
Linux 终端美化神器!tput 命令从入门到实战(光标 + 颜色 + 样式全覆盖)
发布时间:2026/7/8 1:50:57
1. 命令简介tput 是一个通过 terminfo 数据库对终端会话进行初始化和操作的命令行工具。它允许用户查询和修改终端功能如移动光标、更改文本属性颜色、粗体、下划线等、清除屏幕区域等。该命令在 shell 脚本和交互式命令行中都非常有用特别适合创建动态的、格式化的终端输出。2. 语法格式plaintexttput [选项] [终端能力名称] [参数...]说明大多数情况下tput 直接接受一个 终端能力名称capability name作为参数。某些能力如 cup、setaf 等需要额外的参数。如果未指定终端类型tput 会使用 $TERM 环境变量来确定当前终端类型并查询对应的 terminfo 数据库。3. 常用选项及说明命令选项表格选项说明-T type指定终端类型。例如tput -T xterm-256color clear-V报告 tput 的版本信息并退出。-S从标准输入读取多个能力名称每行一个。允许在一次调用中执行多个操作。常用终端能力Capabilities光标控制表格能力名称说明clear清除整个屏幕同 CtrlL。sc保存当前光标位置。rc恢复之前保存的光标位置。cup Y X将光标移动到第 Y 行、第 X 列左上角为 0,0。civis隐藏光标。cnorm显示光标恢复正常。home将光标移动到屏幕左上角0,0。cuu N光标向上移动 N 行。cud N光标向下移动 N 行。cuf N光标向右移动 N 列。cub N光标向左移动 N 列。文本属性表格能力名称说明bold开始粗体文本。sgr0关闭所有属性恢复正常文本。smul开始下划线文本。rmul结束下划线文本。rev反显颜色前景色与背景色互换。blink开始闪烁文本部分终端支持。dim开始暗淡半亮度文本。颜色设置表格能力名称说明setaf N设置前景色文本颜色N 为颜色代码0-7 或 0-255取决于终端。setab N设置背景色N 为颜色代码。sgr0重置所有颜色和属性为默认值。常用颜色代码8 色标准0黑色1红色2绿色3黄色4蓝色5洋红色6青色7白色或浅灰色注意许多现代终端支持 256 色此时颜色代码范围为 0-255。终端信息查询表格能力名称说明cols返回终端的列数宽度。lines返回终端的行数高度。colors返回终端支持的颜色数量。longname返回终端的完整描述名称。4. 示例用法示例 1基本光标与屏幕控制plaintext# 清屏 tput clear # 移动光标到第 10 行第 20 列并输出文本 tput cup 10 20 echo Hello at (10,20) # 保存光标位置移动并输出然后恢复 tput sc tput cup 5 30 echo Temporary message tput rc示例 2文本样式与颜色plaintext# 输出粗体红色文本 tput bold tput setaf 1 echo Error: Something went wrong! tput sgr0 # 重置所有属性 # 输出带下划线的绿色文本 tput smul tput setaf 2 echo Important notice tput rmul tput sgr0 # 设置黄色背景、蓝色前景的文本 tput setab 3 # 黄色背景 tput setaf 4 # 蓝色前景 echo Colorful text tput sgr0示例 3在脚本中创建动态菜单bash运行#!/bin/bash # 清屏 tput clear # 设置标题样式并显示 tput cup 2 15 tput rev echo M A I N M E N U tput sgr0 # 显示菜单项 tput cup 4 10 echo 1. System Information tput cup 5 10 echo 2. Disk Usage tput cup 6 10 echo 3. Users Online tput cup 7 10 echo 4. Exit # 高亮提示输入区域 tput cup 9 10 tput bold read -p Enter your choice [1-4]: choice tput sgr0 # 处理选择...示例 4查询终端信息plaintext# 获取终端尺寸 echo Terminal is $(tput cols) columns wide and $(tput lines) lines tall. # 检查颜色支持 if [ $(tput colors) -ge 8 ]; then echo This terminal supports color. fi示例 5使用 -S 选项批量执行plaintext# 通过管道或 heredoc 传递多个命令 { echo clear echo cup 5 10 echo bold echo setaf 3 } | tput -S echo This text is at (5,10), bold and yellow tput sgr05. 注意事项终端能力的支持程度和具体效果因终端类型 ($TERM) 而异。在编写可移植脚本时建议进行特性测试例如先查询 colors 能力。使用 tput 修改文本属性如颜色、粗体后务必在不再需要时使用 tput sgr0 重置以免影响后续命令的输出格式。对于需要多个参数的能力如 cup参数的顺序通常是行号在前列号在后Y X。在脚本中频繁调用 tput 可能会影响性能。对于复杂的界面可以考虑将常用代码如颜色代码存储在变量中。获取更多Linux学习资料请关注“阿成学长工具包”对话框中输入2647获取