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 星期数字
F Flags of the windows(未知其意)
F 表示当此窗口拥有焦点的时候,%?表达式值为真
h 当前窗口的Hardstatus状态
H 系统名,也就是hostname
l 当前的系统负载
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

linux下的screen工具配置(针对 string escape)相关推荐

  1. asf如何在linux运行,Linux下使用ASF工具Steam挂卡的配置使用

    Linux下使用ASF工具 Steam 挂卡的配置使用 简介 既然你都费钱买了游玩,为甚么还要花时间玩呢?这款工具便可以不用下载游玩,主动挂卡,是Steam回血渠道之一.(慈悲包) 1.部署 .Net ...

  2. linux网络驱动rtl8211f,RTL8211F在uboot下使用mii工具配置RJ45网口灯详解

    RTL8211F在uboot下使用mii工具配置RJ45网口灯详解. 首先要明确使用这个工具的目的,类似于i2c-test工具测试i2c,使用这个工具验证测试网口灯的配置.然后再通过软件或者驱动来实现 ...

  3. arm linux下交叉编译valgrind工具进行内存泄露检测和性能分析

    C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.如果crash的地方正是内存使用错误的地方,说明你人品好.如果crash的地方内存明显不是consistent的 ...

  4. Linux下C++开发工具介绍

    概述     就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, an ...

  5. 三十六、rsync通过服务同步、Linux系统日志、screen工具

    三十六.rsync通过服务同步.Linux系统日志.screen工具 一.rsync通过服务同步 该方式可以理解为:在远程主机上建立一个rsync的服务器,在服务器上配置好各种应用,然后本机将作为客户 ...

  6. linux下Java环境的配置

    linux下Java环境的配置 一. 下载jdk5.0 for linux 到sun的主页 [url]http://java.sun.com/j2se/1.5.0/download.jsp[/url] ...

  7. Linux 下的编程工具

    Linux 下的编程工具 BBS水木清华站∶精华区 发信人: Kongming (没日没夜...), 信区: Linux         标  题: Re: 如何学习linux下编程?  发信站: B ...

  8. Linux下使用Google Authenticator配置SSH登录动态验证码

    说明: 1.一般ssh登录服务器,只需要输入账号和密码. 2.本教程的目的:在账号和密码之间再增加一个 验证码,只有输入正确的验证码之后,再输入 密码才能登录.这样就增强了ssh登录的安全性. 3.账 ...

  9. Linux下的samba服务配置详解

    Linux下的samba服务配置详解 一.Samba介绍 二.Samba工具及特性 三.搭建环境介绍 四.Samba配置步骤 1.服务端操作 2.在客户端操作 五.测试用户的权限情况 一.Samba介 ...

  10. LINUX下的APACHE的配置

    今天写一下LINUX下的APACHE的配置方法. APACHE是作为WEB服务器的.它的优点在于用缓存方式来加快网页的搜索速度. APACHE缺省只支持静态网页 LINUX下有APACHE的RPM包 ...

最新文章

  1. ubuntu12.04安装及配置过程详解1
  2. arma模型平稳性和可逆性的条件_时间序列预测模型ARIMA实现
  3. ALBERT、XLNet,NLP技术发展太快,如何才能跟得上节奏?
  4. 对于华为,英特尔与微软表示继续提供支持;亚马逊亲证云计算服务出现宕机;中国移动5G套餐曝光,每月都含200G流量……...
  5. 安全模式 提权_记一次渗透挖洞提权实战
  6. 视频理解新方向:时域语言定位 综述
  7. Object []转换为double []
  8. (一)在Lingo中使用集合
  9. Guava的Optional的操作
  10. 【机器学习 基本概念】马尔可夫链
  11. SURF算法python实现
  12. 敏捷史话系列(一)| 用一半的时间做两倍的事——Jeff Sutherland
  13. 武汉计算机管理学校,武汉这个区优质初中“多校划片”电脑派位入学,有你家娃想上的学校吗?...
  14. POI批量导出Excel ZIP打包下载
  15. 隐藏win10任务栏输入法M图标
  16. Visual Studio 2022调节字体大小
  17. 欧拉计划:第53题 Combinatoric selections
  18. 18 个坏习惯,你一定要抛弃
  19. 平安喜乐 | Python制作圣诞树和词云
  20. html 软键盘 页面高度,深入理解高度,获取屏幕、webview、软键盘高度

热门文章

  1. IS-IS快速收敛调优(一)——IS-IS收敛机制
  2. CLient-Initiated L2TP主机上网问题详解
  3. pip install -r requirements.txt 超时解决方案
  4. 动态路由之OSPF协议综合实验
  5. NYOJ--289--苹果
  6. Apache无法加载PHP模块的解决方案
  7. 关于解决Windows server系统用户无法远程的问题
  8. Debian安装autoconf
  9. WPF中同一窗口下的界面切换
  10. 橙子减肥法:好吃快速成为瘦美人 - 健康程序员,至尚生活!