Shell GNU屏幕:如果没有';不存在?

Shell GNU屏幕:如果没有';不存在?,shell,gnu-screen,Shell,Gnu Screen,“screen-R-D-S test”将创建一个名为test的会话(如果不存在),或者连接到它(如果存在) “screen-d-m-S test”将创建一个名为test的新分离会话,无论它是否存在,可能会导致多个名为test的会话: There are several suitable screens on: 9705.test (06/18/2012 06:42:58 PM) (Detached) 9639.test (06/18/2012 06:42:57 PM

“screen-R-D-S test”将创建一个名为test的会话(如果不存在),或者连接到它(如果存在)

“screen-d-m-S test”将创建一个名为test的新分离会话,无论它是否存在,可能会导致多个名为test的会话:

There are several suitable screens on:
    9705.test   (06/18/2012 06:42:58 PM)    (Detached)
    9639.test   (06/18/2012 06:42:57 PM)    (Detached)

如何创建名为test的分离会话,但前提是该会话尚未存在?

我相信您正在寻找
-d-R
组合:

screen -d -R -S test
人工屏幕

      -d -R   Reattach a session and if necessary detach or  even  create  it
              first
编辑

如果您只想在背景屏幕不存在的情况下创建背景屏幕,则~/.bashrc或~/.zshrc中的一个小shell函数将起作用:

function bgsc { 
  if screen -list | awk '{print $1}' | grep -q "$1$"; then
    echo "screen $1 already exists" > &2
  else
    screen -d -m -S $1
  fi
}

然后只需调用
bgsc test

,但我不想重新连接,我只想创建分离的,而不是附加到它。@user939259:啊,我误解了。我在手册中没有看到任何内容,但我已经用一个简短的shell函数更新了我的答案,以创建一个新的分离屏幕(如果它不存在的话)。