IT序号网

tput知识解答

xmjava 2021年05月25日 程序员 216 0
什么是 tput?
tput 命令将通过 terminfo 数据库对您的终端会话进行初始化和操作。通过使用 tput,您可以更改几项终端功能,如移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域。
 
什么是 terminfo 数据库?
UNIX 系统上的 terminfo 数据库用于定义终端和打印机的属性及功能,包括各设备(例如,终端和打印机)的行数和列数以及要发送至该设备的文本的属性。UNIX 中的几个常用程序都依赖 terminfo 数据库提供这些属性以及许多其他内容,其中包括 vi 和 emacs 编辑器以及 curses 和 man 程序。
 
命令行使用说明:
1.文本属性
tput Color Capabilities: 
tput setab [0-7] – Set a background color using ANSI escape 
tput setb [0-7] – Set a background color
tput setaf [0-7] – Set a foreground color using ANSI escape
tput setf [0-7] – Set a foreground color
Color Code for tput:
0 – Black 1 – Red 2 – Green 3 – Yellow 4 – Blue 5 – Magenta 6 – Cyan 7 – White
 
tput Text Mode Capabilities: 
tput bold – Set bold mode 
tput dim – turn on half
-bright mode
tput smul – begin underline mode
tput rmul – exit underline mode
tput rev – Turn on reverse mode
tput smso – Enter standout mode (bold on rxvt)
tput rmso – Exit standout mode
tput sgr0 – Turn off all attributes
 
例子:使输出的字符串有颜色,底色,加粗
#!/bin/bash 
printf $(tput setaf 2; tput bold)'color show\n\n'$(tput sgr0)

for((i=0; i<=7; i++));
do echo $(tput setaf $i)"show me the money"$(tput sgr0)
done
printf '\n'$(tput setaf 2; tput setab 0; tput bold)'background color show'$(tput sgr0)'\n\n'

for((i=0,j=7; i<=7; i++,j--));
do echo $(tput setaf $i; tput setab $j; tput bold)"show me the money"$(tput sgr0)
done

exit 0
 
输出格式控制函数#!/bin/bash 
# $1 str print string 
# $2 color 0-7 设置颜色
# $3 bgcolor 0-7 设置背景颜色
# $4 bold 0-1 设置粗体
# $5 underline 0-1 设置下划线

function format_output(){
  str=$1
  color=$2
  bgcolor=$3
  bold=$4
  underline=$5
  normal=$(tput sgr0)

  case "$color" in
    0|1|2|3|4|5|6|7) setcolor=$(tput setaf $color;) ;;
    *) setcolor="" ;;
esac

case "$bgcolor" in
0|1|2|3|4|5|6|7)
setbgcolor=$(tput setab $bgcolor;) ;;
   *) 
  setbgcolor="" ;;
  esac

  if [ "$bold" = "1" ];
  then
    setbold=$(tput bold;)
  else
    setbold=""
  fi

  if [ "$underline" = "1" ];
  then
    setunderline=$(tput smul;)
  else
    setunderline=""
  fi
  printf "$setcolor$setbgcolor$setbold$setunderline$str$normal\n"
}
format_output "Yesterday Once More" 2 5 1 1 exit 0
 
2.光标属性
#!/bin/bash 
tput clear # 清屏
tput sc # 保存当前光标位置
tput cup 10 13 # 将光标移动到 row col
tput civis # 光标不可见
tput cnorm # 光标可见
tput rc # 显示输出
exit 0
例子: 
#!/bin/bash # clear the screen 
tput clear # Move cursor to screen location X,Y (top left is 0,0)
tput cup 3 15 # Set a foreground colour using ANSI escape
tput setaf 3
echo "XYX Corp LTD."
tput sgr0 tput cup 5 17 # Set reverse video mode
tput rev
echo "M A I N - M E N U"
tput sgr0
tput cup 7 15
echo "1. User Management"
tput cup 8 15
echo "2. Service Management"
tput cup 9 15
echo "3. Process Management"
tput cup 10 15
echo "4. Backup" # Set bold mode tput bold
tput cup 12 15
read -p "Enter your choice [1-4] " choice
tput clear
tput sgr0
tput rc

exit 0
 


发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Linux软连接和硬链接知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。