通过创建新的屏幕窗口附加到"屏幕"会话

Alf*_*lfe 10 linux shell gnu-screen detach

我有一个运行多个窗口的屏幕会话.我想附加它,在其中创建一个新的屏幕窗口并在该新窗口中启动一个shell.

问题:如何从屏幕会话外的命令行执行此操作?

我已经尝试了很多,例如screen -x(但它附加到现有的一个屏幕窗口;它不会创建一个新窗口,也不会启动一个新的shell).任何提示都是受欢迎的.

环境是Linux(Ubuntu 12.04).

Alf*_*lfe 6

我在邮件列表上找到了一些东西,谢谢tuxuday :)

我现在这样做:

#!/bin/bash
screen -X screen -t NEWWINDOW  # create new window (switches existing attached terminal)
sleep 0.1
screen -X other  # switch existing attached terminal back to its old window
sleep 0.1
gnome-terminal -e 'screen -x -p NEWWINDOW'  # connect to new window
Run Code Online (Sandbox Code Playgroud)

我不确定那些睡眠,也许它们在所有环境中都不是必需的,但我可以轻松地等待那些0.2秒.

.bash_aliases正在延迟更改屏幕窗口标题,因此尴尬NEWWINDOW不会长时间坚持(因此不会妨碍对此脚本的进一步调用).

  • 我从邮件列表中获得的技巧是`screen -X other`. (2认同)
  • 看看这个[博客条目](https://rohieb.wordpress.com/2010/07/30/gnu-screen-start-with-multiple-windows-and-commands/)。它建议使用会话命令文件(只是一个包含“screen”、“select”和“other”等所有命令的文件)并运行“screen -X source sessionfile”,而不是多次调用“screen -X”。好方法 (2认同)

zon*_*ndo 6

要选择加入的窗口,请使用-p选项。给予+将创造一个新的,所以你的命令很简单:

screen -x session_name -p +
Run Code Online (Sandbox Code Playgroud)

这在手册页上有记录:

-p n̲u̲m̲b̲e̲r̲_o̲r̲_n̲a̲m̲e̲|̲-̲|̲=̲|̲+̲

screen -x session_name -p +
Run Code Online (Sandbox Code Playgroud)


Yur*_*kha 5

添加新的分离窗口sesion_name并运行command

screen -S sesion_name -x -X screen bash -c 'command; exec bash'
Run Code Online (Sandbox Code Playgroud)