如何使用 bash 脚本 "setup" 筛选

How to "setup" screen using a bash script

我正在尝试编写一个 bash 脚本来创建一个屏幕(软件)会话,其中包含一组特定的 windows,并且 cd 到每个目录的特定目录。

这是我目前的脚本:

#!/bin/bash

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

问题是我似乎无法更改该会话的目录。 运行安装这个脚本后,我运行 $ screen -r 并且当前目录仍然是我的默认目录(~/)。

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

尝试以下操作,它将打开一个带有 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'

更好的解决方案

以下代码将在目录 myDir1/2/3.

中创建一个分离屏幕,每个屏幕有 3 个屏幕 运行ning myCommand1/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 -,它将 return 您返回到原始工作目录。

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

你可以将你想要运行的命令行(包括最后的换行符)保存到一个寄存器中并粘贴到屏幕输入:

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