shell脚本学习总结04--终端信息的获取和设置
tput
tput 命令将通过 terminfo 数据库对您的终端会话进行初始化和操作。通过使用 tput,您可以更改几项终端功能,如移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域。
文本属性
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
运行结果:
例2,输出格式控制函数
#!/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) 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" 3 1 1 1 exit 0
运行结果:
光标属性
tput clear # 清屏 tput sc # 保存当前光标位置 tput cup 10 13 # 将光标移动到 row col tput civis # 光标不可见 tput cnorm # 光标可见 tput rc # 显示输出
例一
#!/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
运行结果:
例2:
#/bin/bash echo -n Count: tput sc count=0 while true;do if [ $count -lt 40 ];then let let count++ sleep 1 tput rc tput ed echo -n $count; else exit o fi done
运行结果:
1.获取终端的行数和列数
# tput cols 98 # tput lines 26
2. 移动光标
[root@IHS ~]# tput cup 10 0 [root@IHS ~]#
stty
使输入的密码不在屏幕上显示
#/bin/bash echo -e "Enter password:" stty -echo read passwd stty echo