假设它正在屏幕中运行,是否可以编写脚本来更改名称并打开对当前选项卡的监视?
谢谢。
从屏幕手册页:
-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
-x main
您可以使用进程 ID(from )代替使用,也可以使用窗口编号screen -ls
代替窗口名称( ):-p oldwindow
$ screen -x 2073 -p 0 -X title h
如果只有一个会话,则不必指定会话 PID 或名称。
我认为这有效:
if [-n "$STY"]; then
screen -X title "foo"
screen -X monitor on
fi
screen 声明$STY
了环境变量,你可以尝试使用它。
您是否希望显示信息或与屏幕会话本身进行交互?你可以用这个发回消息:(http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html#lbAI)
消息行屏幕在消息行中显示信息性消息和其他诊断信息。虽然该行分布在屏幕底部,但可以定义为在编译期间出现在屏幕顶部。如果您的终端在其 termcap 中定义了状态行,屏幕将使用它来显示其消息,否则当前屏幕的一行将被暂时覆盖,并且输出将暂时中断。消息行会在几秒钟延迟后自动删除,但也可以通过开始键入提前删除(在没有状态行的终端上)。
在当前窗口中运行的应用程序可以通过 ANSI 隐私消息控制序列使用消息行工具。例如,在 shell 中,尝试以下操作:
echo '<esc>^Hello world from window '$WINDOW'<esc>\\'
其中 '
<esc>
' 是转义符, '^
' 是文字向上箭头, '\\
' 变成单个反斜杠。
屏幕透明运行,因此很难检测屏幕会话。如果您尝试发送按键,那将起作用,并且如果您不在会话中,则会在您的终端中填充一点垃圾。