是否有可能编写一个脚本来更改名称并启用当前选项卡的监控,假设它正在屏幕上运行?
感谢。
答案 0 :(得分:9)
从屏幕联系方式:
-X Send the specified command to a running screen session. You can use the -d or -r option to tell screen to look only for attached or detached screen sessions. Note that this command doesn't work if the session is password protected.
基本上,运行
screen -X title mynewtitle
screen -X monitor on
如果终端未在屏幕内运行,则会无声地出现错误:
notinscreen:~$ screen -X title mynewtitle
notinscreen:~$
您也可以将命令发送到特定会话,即使在分离时也是如此。给定名为“main”的屏幕会话:
$ screen -S main
[detach from screen session]
$ screen -ls
There is a screen on:
2073.main (Detached)
1 Socket in /tmp/uscreens/S-dbr.
..您可以将最后活动窗口的标题发送到blah
:
$ screen -x main -X title blah
..或特定窗口(在此示例中名为oldwindow
):
$ screen -x main -p oldwindow -X title blah
您可以使用进程ID(来自-x main
),而不是使用窗口名称(screen -ls
),而不是使用-p oldwindow
,您可以使用窗口编号:
$ screen -x 2073 -p 0 -X title h
如果只有一个会话,则不必指定会话PID或名称。
答案 1 :(得分:7)
我认为这有效:
if [-n "$STY"]; then
screen -X title "foo"
screen -X monitor on
fi
答案 2 :(得分:2)
屏幕声明$STY
环境变量,您可以尝试使用它。
答案 3 :(得分:1)
您是否希望显示信息或与屏幕会话本身进行交互? 您可以使用以下方式发回消息:(http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html#lbAI)
消息行 屏幕显示 信息性消息和其他 消息行中的诊断。而 这条线被分发出来 屏幕的底部,它可以 定义为出现在顶部 编辑期间的屏幕。如果你的 终端有一个定义的状态行 它的termcap,屏幕将使用它 显示其消息,否则a 当前屏幕的行将是 暂时覆盖并输出 会暂时中断。该 消息行被自动删除 几秒钟后延迟,但它可以 也可以提前删除(在终端上 没有状态线)开始 类型。
可以使用消息行设施 由运行在中的应用程序 当前窗口通过ANSI 隐私消息控制序列。对于 例如,从shell中,尝试 类似的东西:
echo '<esc>^Hello world from window '$WINDOW'<esc>\\'
其中''是逃避,'^'是 字面向上箭头,'\'变成了 一个反斜杠。
答案 4 :(得分:0)
屏幕透明地运行,因此检测屏幕会话很难。如果您尝试发送按键,那将会起作用,并且如果您不在会话中,则会在终端上填充一点垃圾。