对于使用 IRC,我通常在屏幕会话中在无头服务器上打开 irssi。然后,有时我会将其分离以等待答案,但有时我不确定服务器上是否已打开带有 irssi 的屏幕。
对于这些时候,我希望能够告诉屏幕:“重新连接到正在运行的屏幕,但如果不存在,请通过运行此命令创建一个新的屏幕”。我尝试这样做:
$ 屏幕-R irssi
但它没有显示所需的行为(相反,当不存在任何屏幕会话时,它会打开一个空的屏幕会话,而不运行 irssi)。
答案1
不确定是否满足你的所有要求
screen -dRq sessionname irssi
如果没有正在运行的屏幕,它会创建一个名为“sessionname”的新会话并启动 irssi。“q”会抑制新屏幕确认。
当您分离时,它会重新连接到运行 irssi 的现有“会话名称”。
不过,我不确定它是否适用于多屏幕会话,也就是说,我还没有尝试过
答案2
如果 irssi 是你几乎总是在屏幕上运行的东西,那么为什么不设置 aa.screenrc
来自动启动 irssi。然后只需运行screen -R
。如果你的会话没有运行,那么它将启动。
# more .screenrc
startup_message off
term linux
screen 0 irssi
如果您不希望屏幕默认启动 irssi,您可以简单地创建一个具有非默认名称的 rc 文件。也许.screenrc-irssi
。然后指向特定的配置文件,如下所示screen -c .screenrc-irssi
。
答案3
嗯,我对现有的答案有点困惑。但如果运行二调用screen
不是一个问题,您可以随时执行以下操作:
screen -xS sessionname || screen -S sessionname irrsi
这将尝试连接到现有屏幕而不分离任何其他屏幕,如果失败,则创建一个具有该名称的新会话。这是我alias
在我的系统中编辑的.bashrc
,它运行良好。
但我正在迁移到一个新系统,并随之迁移到tmux
。您可能也想尝试一下。更方便的配置文件语法、自由格式的拆分以及许多可以绑定到最适合您的快捷方式的选项和命令。