我为不同的项目使用不同的屏幕会话。启动画面如screen -S project1。现在,我想在 hardstatus 行中提及“project1”。
会话名称可以从环境变量 STY: 中获得STY=13539.project1。
但是如何把它放到屏幕上呢?我在 hardstatus 中尝试过反引号命令和 %`,但我似乎无法正确使用。
我做了什么:
.screenrc:
hardstatus string '%H:%`'
backtick 0 30 30 echo $STY
Run Code Online (Sandbox Code Playgroud)
没有运气,空 %`。
backtick 0 30 30 sessionname
Run Code Online (Sandbox Code Playgroud)
仍然没有运气,会话名称:未找到
Den*_*son 18
您可以在您的$PS1:
\[\e]0;$STY\007
Run Code Online (Sandbox Code Playgroud)
在单引号内以延迟变量的评估。然后将此添加到您的~/.screenrc:
hardstatus string '%H:%h'
Run Code Online (Sandbox Code Playgroud)
不幸的是,screen没有$STY在它为该backtick功能生成的命令的环境中设置。
另一种选择,而不是上面的那个:
hardstatus string '%H:%`'
backtick 0 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'
Run Code Online (Sandbox Code Playgroud)
这个的优点是它遵循使用sessionname命令所做的更改。第一个选项没有。
编辑:
从这里:
由于 $STY 在屏幕来源 .screenrc 时尚未设置,因此您可以在 .screenrc 中使用此技巧:
screen
screen $SHELL -c 'screen -X caption always "$STY"'
Run Code Online (Sandbox Code Playgroud)
即发送屏幕命令到第一个窗口。
对我来说,这很容易与插入%Shardstatus 一起使用。
MWE (.screenrc):
hardstatus on
hardstatus alwayslastline
hardstatus string "%S"
Run Code Online (Sandbox Code Playgroud)
但是,这会显示没有ID的会话名称(如${STY#*.});在你的榜样:project1。
| 归档时间: |
|
| 查看次数: |
8615 次 |
| 最近记录: |