linux下的screen工具配置(针对 string escape)

来源:互联网 发布:留学费用排名 知乎 编辑:程序博客网 时间:2024/05/12 22:45

GNU的screen工具是一个很好的工具.如果需要经常或者大量的登录服务器进行操作,screen或许还是一个不可或缺的好工具.
本文主要想探讨的主要问题是screen的配置脚本中如何自由定制状态栏的内容.也即hardstatus的内容定制.
本文所讨论的问题,对于screen工具的使用来说,基本没有什么指导作用,甚至可以认为是一个很无聊的问题,所以如果你是想找如何入门使用screen的话,那么,没有必要继续往下看了,可以参考网上很多同志的其他的介绍文档.


对于使用putty来连接服务器的同志来说,一般而言,如果需要得到多个shell的方法有三种:



  1. 最直接也是最简单的,就是多开几个putyy连接终端.这是最普遍使用的一种方法吧.

  2. 本地安装X-window服务器.一般是Xming或者是Xwin Server.使用一个putty登录系统,然后使用xterm.可以打开"无限"个终端.

  3. 使用scrren工具,在每次putty登录时,最多能同时打开10个终端.


从上面的描述来看,screen没有体现出什么优势,主要原因是没有展开来说,具体的到网上一搜一大把screen如何如何好的文章,此点不是本文探讨重点,略去.


我想说的是,在使用screen工具的时候,她象图形化界面的程序一样,在窗口的最底端,能够显示一个status 栏或者caption栏.如下图所示:




此status bar能够用来显示很多的东西,内容可以自己定制.本文主要讨论如何自己来定制下面的这样一个hardstatus栏或者caption栏.


首先有一点需要说明,就是为什么需要caption栏或者是hardstatus栏.没有不行么?


没有完全行.有跟没有在使用上没有什么大的区别,有这一栏的话,反而占了一点显示的面积,使得显示的区域变小了.


那么,为什么还要呢?


主要是因为用起来有方便的地方.因为我们使用putty登录的的界面,跟我们登入了screen之后的界面,如果没有这一栏的话,显示是一样的.


这样就不方便我们判断我们到底是在putty的登录界面下呢?还是其实已经是在screen的控制下了呢?


如果我们在screen下工作的时候,有一个地方提醒一下"你现在是在screen下啦,CTL+A不要随便乱用了阿",那改多好呢?


这就是我研究hardstatus栏的写法的目的,或者说是出发点也行.


到底怎么写呢?


主要是原来我自己也不是很清楚应该怎么弄,然后中文的各种介绍就是估计只是复制粘贴了一些现成的示例,所以导致认为设置hardstatus栏很难.


但是看了英文的原文的参考资料,就发现,其实没什么的.也蛮简单的,只是稍稍有一些麻烦.


比如说网上比较流行的一个配置是这样的:


caption always "%?%F%{-b 4w}%:%{-b bb}%? %H | %l | %m-%d %c |%?%F%{-b 4w}%?%L=%-Lw%45>%{-b w4}%n%f* %t%{-}%+Lw%-0<"


上面这一行鸟东西看起来还不把人眼睛看花了?脑子看坏掉了?


但是一般网上的介绍也就到此为止,往下继续讲的中文的帖子基本上就没有了.这也难怪,中国人的习惯是实用主义的,这个东西用处有限,有人已经整理好了,拿来用就行了,干嘛还要研究呢?


搜了搜英文的介绍,发现有不少介绍caption或者hardstatus的写法的.主要的依据还是screen自己的文档.现把文档中关于"string escape"部分的内容总结如下,这部分的内容主要就是解释如何写的语法的.


一般来说,参考下面的这两个表,什么样的hardstatus栏或者caption栏都能够写出来了,也不会被别人的语句给吓到了.:

















































































































%转义字符标记本身,所有的有特殊含义的标记都是以此%开始的.a字符”am”或者”pm”A字符”AM”或者”PM”C当前的时间HH:MM(24小时制)C当前的时间HH:MM(12小时制)d日期数字D星期数字FFlags of the windows(未知其意)F表示当此窗口拥有焦点的时候,%?表达式值为真h当前窗口的Hardstatus状态H系统名,也就是hostnamel当前的系统负载M月份数字M月份名字(Jan?)N窗口的编号(从0开始),如果是%3n这样的表达式表示窗口编号占3位S时间表示中的秒数字S秒名字U在当前窗口上的所有的其他的用户W所有的窗口的编号以及窗口的名字,如果是-w,则表示从0窗口到当前窗口之前的所有窗口,如果是+w表示当前窗口的下一个窗口到最后的所有窗口W所有的窗口的编号以及名字,除了当前的窗口y年份数字的最后的两位Y年份的全称?条件判断一般的表达式是%?xxxxx%?:yyyyy.如果xxxxx不是空字串的话,则显示xxxxx,否则显示yyyyy=%=表示填充之前的字符串hardstatus栏的最右端,如果是%50=这种表达方式的话,则表示填充到hardstatus栏的50%处.注意填充的字符是空格.


也可以使用%+20=以及%-30=这样的表达式,这两个表达式分别表示从上一个填充的结束位置开始填充20%的空格,


然后显示之后的字串(如果之前不存在填充的话,则跟%20=没有任何的区别),以及填充空格到距离右边30%的地方.


关于这个,特别需要注意的地方就是,象”%n:%t%5=%H”这个表达式,很明显%n:%t的输出应该大于hardstatus栏长度的%5,


但是填充到%5,后面的%H就从栏长度的%5开始写起,所以会引起前面的内容被后面的内容所覆盖的情况.也就是所谓的截断

<这个转义符一般用在hardstatus的string的最后,起的作用主要跟下面的%>一样,


是用来进行滚动的,所起的作用是,如果显示的内容超过了hardstatus栏本身的长度,那么会将整个显示的内容往前滚动,确保最后的内容能够被显示,


很显然,这样的话,显示内容的最前面的一部分就被滚动到显示区域之外而不能显示了.


一般而言,不需要仔细的琢磨这个转义符的意义,它主要和下面的%>配合使用的.而且当和%>一起使用的时候,滚动的特性就 变掉了,


不再是单纯的%<那样的让最末尾总是能够显示,而是变成了%>式的,让特定的部分滚动到特定的比例处.


那为什么不只用%>而是要和%<结合起来用呢?主要是%>的定义是,


如果存在滚动的话,则改变滚动的属性为将特定的部分滚动到特定的比例处,但是如果不存在滚动,则%>不起作用,而%<的作用,就是提供了滚动属性.

>这个是一个很有用的功能,举个例子来说,有一个非常好的配置是这样的:


hardstatus string "%-w%{= BW}%50>%n %t%{-}%+w%<"


其中有一个%50>,前面是%-w表示的是从0到当前窗口之前的窗口number加title.
在%-w显示完了之后再添加一个%n %t.也就是说把本窗口的number和title也显示出来.
但是在中间就插了一个这样的%50>.这表示什么呢?
因为,我们可能创建了很多的window,以至于光%-w的显示已经超出了整个hardstatus的范围,
那么,当我们再显示%n %t的时候,就超出了整个bar的显示范围,
也就需要进行截断了.%50>所起的作用其实是一个滚动hardsatus栏的作用.
想象一下就能够明白了,当hardstatus栏已经被%-w填满了,
但是还要再继续显示%n %t,那么%n %t就已经在显示范围之外了,看不见了.
这时候,我们应用%50>将%-w滚动到hardstatus栏50%的地方.
显然,%-w的最前面的部分有一部分被截掉了.但是从%50开始显示%n %t.
明白了吧,这个符号的作用,文字很难描述,但是视觉上,很容易懂的.就是滚动harstatus栏的作用.就是滚动而已.
可以使用如%50L>这样的表达式,这表示,
如果存在滚动,则如果有内容因为滚动而未被显示,那么以...来表示有内容未显示.左边右边均有可能有此显示

{xx}大括号中的内容是设置属性或者配置颜色之类的.具体的内容参见下面的一个新表

下面的一个表是关于属性的设置的,其实也就是文字的颜色相关的一些设置













































































































{+}增加此属性{-}减少此属性,单独用时,表示回复到上次属性改变之前的设置值{!}反转现在的属性{=}改变当前属性,应用此处指定的属性d昏暗效果u下划线b黑体r反转s突出显示B闪烁效果k黑色r红色g绿色y黄色b蓝色m品红c蓝绿w白色d默认颜色.不改变颜色注意,颜色的设置有前景色和背景色之分,也就是字体的颜色和背景的颜色.


%{= bm},这样的表达式表达的是背景色被改为b,前景色被改为m.(就是这样的顺序),如果只指定一个颜色而非两个颜色的话,那么改变的是前景色,如果使用了!,那么改变的将是背景色.也可以使用’.’来表示不改变颜色,如%{= b.}表示改变背景色而不改变前景色

几个例子:%{+b r}表示设置背景色为黑体的红色.就是加重的红色%{= yd}表示设置背景色为黄色,前景色为默认色%{=  y.}背景色设置为黄色,前景色不变

上面的两个表应该已经很详细了,对于绝大多数的设置应该都没有问题了.


最后,有个示例.


我觉得比较好的一个就是:


hardstatus string "%-w%{= BW}%50>%n %t%{-}%+w%<"


上面的这个很简单,也很实用,没有多少什么系统负载信息之类的东东,只显示了系统中所有的窗口名并且高亮当前的窗口名.但我觉得这个是很好的了,简洁而实用.


效果图如下所示:



参考文档:


http://www.gnu.org/software/screen/manual/screen.html#Message-Line

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 王者荣耀太卡了怎么办 想卖王者号qq怎么办 小米4电视发热严重怎么办 三星玩王者荣耀卡怎么办 华为麦芒5网络差怎么办 华为麦芒无线信号不好怎么办 华为麦芒6网络不好怎么办 华为麦芒6信号差怎么办 华为手机无线网信号差怎么办 华为麦芒6数据信号差怎么办 华为麦芒54g信号差怎么办 华为手机wifi信号差怎么办 华为手机导航信号弱怎么办 华为手机gps信号弱怎么办 麦芒5指纹消失了怎么办 华为应用锁密码忘了怎么办 华为麦芒5密码忘了怎么办 华为卡1无服务怎么办 经常卡1无服务怎么办 华为手机进水无服务怎么办 苹果手机进水后无服务怎么办 苹果6进水无服务怎么办 华为手机突然无服务怎么办 sim卡显示无服务怎么办 华为麦芒进水无限开关机怎么办 华为麦芒5进水黑屏怎么办 华为麦芒6进水了怎么办 4g手机开不开机怎么办 全屏钢化膜总是翘边怎么办 华为麦芒屏幕触屏失灵怎么办 华为麦芒5运行慢怎么办 手机屏保密码忘记了怎么办 麦芒5密码锁忘了怎么办 超薄手机壳松了怎么办 华为麦芒5声音小怎么办 笔记本外壳a面裂了怎么办 苹果手机外壳摔坏了怎么办 挂衣服肩膀出包怎么办 摩拜单车手机号注销了怎么办 摩拜单车手机号码换了怎么办 摩拜单车换手机号码打不开怎么办