zoukankan      html  css  js  c++  java
  • 【linux问题】怎样获取

    获取终端大小时候的学习

    学习日期:2018/11/3
    问题来源:

    在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠 
    发现for循环会导致执行缓慢
    

    解决方法:

    使用yes 命令
    sed '50q' 显示50行
    tr -d '
    ' 删除 
    
    

    多次重复输入相同字符可用yes

    yes "2" | sed '50q' | tr -d ' '

    想法来自:打印100个连续的符号,不用循环


    stty size (获取终端大小)

    stty size|awk '{print $2}'

    最终命令:

    (指令版)
    shellwidth=`stty size|awk '{print $2}'`
    # 输出横杠
    yes "-" | sed $shellwidth'q' | tr -d '
    '
    ----------------------------------------------------
    (function版)
    function getshellwidth() # 这里可以去掉function
    {
    	echo `stty size|awk '{print $2}'`
    	#return 0 # return是返回 成功或者失败的
    	#调用的时候只需要上面的输出就行,  他会将标准输出return回来
    }
    # 这块有个疑问 就是如下面的写法会报错 Inappropriate ioctl for device
    # yes "-" | sed `getshellwidth`'q' | tr -d '
    '
    ----------------------------------------------------
    # 输出横杠
    shellwidth=`getshellwidth` 
    yes "-" | sed $shellwidth'q' | tr -d '
    '
    
    (直接显示一行横杠)# 推荐使用本方法
    printLine()		
    {
    	# 进行判断
    	if [ ! $1 ]; then
    		# 没有参数则直接输出 -
    		outword='-'
    	else
    		# 将输入的参数1 赋值给outword
    	  	outword=$1
    	fi 
    	shellwidth=`stty size|awk '{print $2}'`
    	yes $outword | sed $shellwidth'q' | tr -d '
    '
    }
    printLine		#  直接调用  后面可以跟参数
    
    

    备注: 获取宽度后最好是将宽度定义为一个新的变量,或者是function 这样获取比较方便

    优雅的判断

    ${COLUMN:-}  
    例如:    ${COLUMN:-1}  
    

    如果COLUMN是空变量,或者变量不存在,返回-后面的内容,如果变量有值返回这个值。

    备注
    $COLUMNS 在linux 也可以显示行宽,但是放在bash 脚本中 则需要使用 source shell.sh 的格式去编写
    因为source 可以直接利用当前环境变量 而bash则是另起一个环境,无法输出(猜想)

    ./script.sh会启动一个新的shell并执行script.sh中的命令

    而source是csh(C Shell)的内置命令,是在当前shell下执行,拥有当前shell的环境变量

  • 相关阅读:
    ABP框架(asp.net core 2.X+Vue)运行前端(转)
    Spring学习指南第3版例子程序导入idea20.02
    Docker运行jar包(转)
    centos7使用docker搭建运行环境并部署jar(转)
    centos7修改docker镜像源的方法(转)
    虚拟机下CentOS7安装Docker(转)
    Virtual Box配置CentOS7网络(图文教程)(转)
    虚拟机docker运行jar程序
    docker安装
    【591】通过 Terminal 直接获取 GitHub 源码
  • 原文地址:https://www.cnblogs.com/SchrodingerDoggy/p/14927408.html
Copyright © 2011-2022 走看看