在shell提示中显示GNU屏幕会话名称和窗口标题


11

有没有一种方法可以在shell提示中显示GNU Screen会话名称和窗口标题(让我们说,由定义的Bash提示PS1)?

Answers:


14

屏幕提供了一些环境变量(来自screen(1)联机帮助页):

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

“创建时”表示如果您重新编号窗口(使用屏幕的number命令),则不会告知外壳更改,并且$ WINDOW仍与第一个窗口号相同。

您可以使用类似:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '

1
完善!这就是我想要的。顺便说一句,有没有一种方法可以获取窗口标题而不是窗口编号?
brandizzi 2011年

据我所知,屏幕上没有api,发出命令时也没有输出-它会转到屏幕中的当前窗口。例如screen -xr 2466 -X windows
Arcege 2011年

尽管它可能属于重新编号的情况,但是如果将其设置为,是否可以访问该窗口的名称Ctrl-a A
塔利斯K.15年

1
如果screen已经使用-Q(query)选项编译了GNU ,那么您可以运行某些命令,例如titlewindows,并且将数据显示到stdout,但是没有尾随换行符。
Arcege 2015年

3

我总是使用精确的屏幕会话名称。然后,我可以将屏幕的STY env var(其中去除了数字id)(感谢dimo414)添加到PS1中。我不使用花括号或其他任何东西来装饰它,因为我并不总是在会话中。简单的例子:

PS1='\u@\h ${STY#[0-9]*.} \w$ '

1

我用这个:

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

${STY}
包含窗口号(如“创建时”所述)中删除进程号,包括
窗口标题(由返回screen -Q title

笔记:

  • 第一次运行时,screen -Q等待返回击键
  • 我用Ca CA设置了窗口标题,然后获取我的.profile文件以更新提示

5
使用${STY#[0-9]*.}避免需要通过管道sed
dimo414 '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.