8

假设它正在屏幕中运行,是否可以编写脚本来更改名称并打开对当前选项卡的监视?

谢谢。

4

5 回答 5

10

从屏幕手册页:

  -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 或名称。

于 2009-05-22T20:44:48.127 回答
7

我认为这有效:

if [-n "$STY"]; then
    screen -X title "foo"
    screen -X monitor on
fi
于 2009-05-22T20:23:44.643 回答
2

screen 声明$STY了环境变量,你可以尝试使用它。

于 2009-05-22T19:49:03.170 回答
1

您是否希望显示信息或与屏幕会话本身进行交互?你可以用这个发回消息:(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>' 是转义符, ' ^' 是文字向上箭头, ' \\' 变成单个反斜杠。

于 2009-05-22T19:35:26.207 回答
0

屏幕透明运行,因此很难检测屏幕会话。如果您尝试发送按键,那将起作用,并且如果您不在会话中,则会在您的终端中填充一点垃圾。

于 2009-05-22T19:34:10.843 回答