如何使用bash脚本“设置”屏幕

时间:2016-12-09 20:38:07

标签: linux bash gnu-screen

我正在尝试编写一个bash脚本来创建一个具有一组特定窗口的屏幕(软件)会话,并cd创建每个窗口上的特定目录。

这是我到目前为止的脚本:

#!/bin/bash

killall screen;
screen -AmdS work;
screen -S work bash -c "cd myDir";

问题是我似乎无法更改该会话上的目录。运行此脚本后,我运行$ screen -r,当前目录仍然是我的默认目录(〜/)。

(我尝试将cd命令更改为touch myFile,运行脚本后文件就在那里了)

2 个答案:

答案 0 :(得分:2)

尝试以下操作,它将打开一个带有bash的新屏幕会话,该会话将更改目录并使用此目录打开一个新的bash作为当前:

screen -S work bash -c 'cd myDir && exec bash'

添加-d -m以在分离模式下运行它。重新连接后,您将进入myDir

screen -S work -d -m bash -c 'cd myDir && exec bash'

更好的解决方案

以下代码将创建一个分离的屏幕,其中包含3个屏幕,每个屏幕在目录myCommand1/2/3中运行myDir1/2/3

cd myDir1
screen -S work -d -m
screen -S work -X exec myCommand1
screen -S work -X chdir myDir2
screen -S work -X screen
screen -S work -X exec myCommand2
screen -S work -X chdir myDir3
screen -S work -X screen
screen -S work -X exec myCommand3
cd -

请注意最后cd -将返回原始工作目录。

最后,只需使用screen -r work附加正在运行的屏幕会话。

答案 1 :(得分:2)

您可以将要运行的命令行(包括最终换行符)保存到寄存器中并将其粘贴到屏幕输入中:

screen -S work -X register c $'cd myDir\n'
screen -S work -X paste c