zoukankan      html  css  js  c++  java
  • 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
    
    '$(tput sgr0)
    
        for((i=0; i<=7; i++)); do
            echo $(tput setaf $i)"show me the money"$(tput sgr0)  
        done
    
        printf '
    '$(tput setaf 2; tput setab 0; tput bold)'background color show'$(tput sgr0)'
    
    '
    
        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
    "
        }
    
        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
  • 相关阅读:
    julia文件合并排序.jl
    julia生成指定格式的字符串.jl
    Julia中文教程资源.txt
    python socket发送魔法包网络唤醒开机.py
    julia与python中的列表解析.jl
    python利用or在列表解析中调用多个函数.py
    Django Admin流程
    meeting
    会议
    数据库
  • 原文地址:https://www.cnblogs.com/zydev/p/5726027.html
Copyright © 2011-2022 走看看