GNU的画面:运行脚本,将命令发送到它正在被运行的屏幕会话

StackOverflow https://stackoverflow.com/questions/899609

  •  23-08-2019
  •  | 
  •  

是否有可能写一个脚本更改名称并打开监测当前选项卡假设它是在屏幕正在运行?

感谢。

有帮助吗?

解决方案

我想这样的作品:

if [-n "$STY"]; then
    screen -X title "foo"
    screen -X monitor on
fi

其他提示

从屏幕手册页:

  -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:~$

您还可以将命令发送到特定的会话,即使分离。给定名为屏幕会话“主”:

$ 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(从screen -ls),也代替使用窗口名称(-p oldwindow),可以使用一个窗口号码的:

$ screen -x 2073 -p 0 -X title h

如果只有一个会话,你不必指定会话PID或名称。

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

您希望显示信息或与屏幕会议本身互动? 您可以将消息发送回本:(的 http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html#lbAI

  

消息行   屏幕显示   参考消息等   诊断中的消息线。而   这条线分布出现在   在屏幕的底部,也可以是   定义为出现在的顶部   编译时的屏幕。如果你的   终端具有在所定义的状态行   它的termcap,屏幕将使用此   显示它的消息,否则   当前屏幕的线将是   暂时覆盖和输出   将被暂时中断。该   消息行被自动删除   几秒钟的延迟之后,却能   也可以早期除去(关于终端   没有状态行)的开头   类型。

     

消息行工具可用于   通过在运行的应用程序   由ANSI的装置当前窗口   隐私信息控制序列。对于   例如,从外壳内,尝试   是这样的:

echo '<esc>^Hello world from window '$WINDOW'<esc>\\' 
     

其中,“”被转义,“^”是一个   字面向上箭头,和“\”变成   一个反斜杠。

屏幕透明运行,因此检测所述屏幕会话是困难的。如果您尝试发送按键,将工作,并与垃圾一点点,如果你在一个会话不是将填补你的终端。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top