bash – gnu watch:在终端的左下方进行辩护
发布时间:2020-12-15 21:04:20 所属栏目:安全 来源:网络整理
导读:我想每隔N秒对 mysql查询应用一个watch命令,但希望结果在终端的左下角而不是左上角: watch -n 120 "mysql_query" | column -t" 显示我的结果如下: --------------------------|xxxxxxxxxxx ||xxxxxxxxxxx ||xxxxxxxxxxx || || |--------------------------
我想每隔N秒对
mysql查询应用一个watch命令,但希望结果在终端的左下角而不是左上角:
watch -n 120 "mysql_query" | column -t" 显示我的结果如下: -------------------------- |xxxxxxxxxxx | |xxxxxxxxxxx | |xxxxxxxxxxx | | | | | -------------------------- 虽然我希望他们这样: -------------------------- | | | | |xxxxxxxxxxx | |xxxxxxxxxxx | |xxxxxxxxxxx | -------------------------- 建议? 解决方法
我没有看到这样做的直接方式,但我设法使用以下方法强制它工作.我没有对此进行全面测试,所以我不能保证这在所有情况下都能正常工作.
使用此脚本: #!/bin/bash TERM_HEIGHT=`tput lines` # determine terminal height WATCH_BANNER_HEIGHT=2 # account for the lines taken up by the header of "watch" let VIS_LINES="TERM_HEIGHT - WATCH_BANNER_HEIGHT" # height of visible area (yes " " | head -n $VIS_LINES; cat | head -n $VIS_LINES) | tail -n $VIS_LINES 后处理命令的输出,因为它由watch调用,例如(假设脚本保存为align_bottom,可执行,并存储在$PATH中的某个位置): watch -n 120 "mysql_query | column -t | align_bottom" 脚本的作用: >确定终端的高度(行数) 我不得不承认这似乎有些过时,但希望它能让你更接近你想要实现的目标. 更新: 它也应该可以实现它作为一个函数,只是因为它可以舒适地放在.bashrc中. function align_bottom() { (( VIS = $(tput lines) - 2 )) # height of visible area (yes " " | head -n $VIS; cat | head -n $VIS) | tail -n $VIS } typeset -fx align_bottom # !! make it callable from subshell 用法是一样的: watch -n 120 "mysql_query | column -t | align_bottom" 请注意,watch使用sh -c运行给定的命令,因此,正如Dennis在评论中指出的那样,在没有链接/ bin / sh到/ bin / bash的系统上,上面显示的函数方法将不起作用. 它可以使它工作: watch -n 120 "mysql_query | column -t | bash -c align_bottom" 但是为了便携性和可用性,简单地使用shell脚本方法更简洁. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |