Linux下使用Shell脚本获取终端宽度的解决方法
linux  /  管理员 发布于 7年前   212
获取终端大小时候的学习
在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠
发现for循环会导致执行缓慢
解决方法:
使用yes 命令
sed '50q' 显示50行
tr -d '\n' 删除 \n
多次重复输入相同字符可用yes
yes "2" | sed '50q' | tr -d '\n'
想法来自:打印100个连续的符号,不用循环
--------------------------------------------------------------------------------
stty size (获取终端大小)
stty size|awk '{print $2}'
最终命令:
(指令版)shellwidth=`stty size|awk '{print $2}'`# 输出横杠yes "-" | sed $shellwidth'q' | tr -d '\n'----------------------------------------------------(function版)function getshellwidth() # 这里可以去掉function{ echo `stty size|awk '{print $2}'` #return 0 # return是返回 成功或者失败的 #调用的时候只需要上面的输出就行, 他会将标准输出return回来}# 这块有个疑问 就是如下面的写法会报错 Inappropriate ioctl for device# yes "-" | sed `getshellwidth`'q' | tr -d '\n'----------------------------------------------------# 输出横杠shellwidth=`getshellwidth` yes "-" | sed $shellwidth'q' | tr -d '\n'(直接显示一行横杠)# 推荐使用本方法printLine() { # 进行判断 if [ ! $1 ]; then # 没有参数则直接输出 - outword='-' else # 将输入的参数1 赋值给outword outword=$1 fi shellwidth=`stty size|awk '{print $2}'` yes $outword | sed $shellwidth'q' | tr -d '\n'}printLine # 直接调用 后面可以跟参数
备注: 获取宽度后最好是将宽度定义为一个新的变量,或者是function 这样获取比较方便
优雅的判断
${COLUMN:-}
例如: ${COLUMN:-1}
如果COLUMN是空变量,或者变量不存在,返回-后面的内容,如果变量有值返回这个值。
备注:
$COLUMNS 在linux 也可以显示行宽,但是放在bash 脚本中 则需要使用 source shell.sh 的格式去编写
因为source 可以直接利用当前环境变量 而bash则是另起一个环境,无法输出(猜想)
总结
以上所述是小编给大家介绍的Linux下使用Shell脚本获取终端宽度的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号