gnu 屏幕自动化

myk*_*hal 4 script shell automation gnu-screen

我想启动 GNU 屏幕,其中包含一些 shell 命令,然后使用不同的命令打开新的屏幕窗口 - 所有这些都是自动的,来自脚本。是否可以?

更新

执行命令后不应关闭屏幕窗口,我只想保留屏幕会话(和分离)

gar*_*ohn 5

你可以把你的命令放在一个文件中,例如myscreenrc,像这样:

screen command1
screen command2
screen command3
Run Code Online (Sandbox Code Playgroud)

然后screen使用-c后跟该文件名的选项执行,例如,

screen -c myscreenrc
Run Code Online (Sandbox Code Playgroud)

更新

回应更新的问题。我用于测试的命令是screen vim fooand screen vim bar,所以我没有看到屏幕关闭问题。下面解决了屏幕关闭问题,但似乎有点杂乱无章。

screen bash -c 'ls foo; exec bash -i'
screen bash -c 'ls bar; exec bash -i'
Run Code Online (Sandbox Code Playgroud)

ls 只是测试这个问题的一个方便的命令。

更新 #2

另一种方法是从 shell 的 rc 文件而不是从 screen 的 rc 文件启动命令。但是,每个命令都需要另一个文件。例如,要top在一个screen窗口中运行以便退出top将使您返回到bash同一窗口中的提示,请创建一个文件,将其命名为runtop,其中包含以下内容:

. ~/.bashrc
top
Run Code Online (Sandbox Code Playgroud)

然后将此行放在我们正在调用的文件中screenrc

screen bash --rcfile ~/runtop -i
Run Code Online (Sandbox Code Playgroud)

并开始screen

screen -c screenrc
Run Code Online (Sandbox Code Playgroud)