linux - 如何使用 bash 脚本显示 "setup" screen

标签 linux bash gnu-screen

我正在尝试编写一个 bash 脚本来创建与一组特定窗口的 screen (软件) session ,并 cd 到每个窗口上的特定目录。

这是我目前的脚本:

#!/bin/bash

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

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

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

最佳答案

尝试以下操作,它将打开一个带有 bash 的新 screen session ,这将更改目录并打开一个新的 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 个 screen 的分离 screen ,每个 screen 运行 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 - 会让您回到原来的工作目录。

最后只需使用 screen -r work 附加您正在运行的 screen session 。

关于linux - 如何使用 bash 脚本显示 "setup" screen ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068502/

相关文章:

bash - shell 脚本语法错误 'var=$' 意外

c - 使用 CRIU 工具迁移特定的 TCP 连接

linux - puppet linux yum 安装

bash - shell脚本中的 "for i"和 "for i in 1 2 3 4"有什么区别?

linux - 多次重复文本

linux - 在 node.js 服务器长进程期间 screen 关闭并退出

linux - 如何通过脚本进入和离开现有 screen ?

jupyter-notebook - 从远程服务器持续使用 Jupyter Notebook

linux - 在特定字母/符号后将文件 2 中的行插入文件 1

linux - 在 Linux 上持久化需要什么?