2

我目前正在使用它来启动muttirssi

urxvt -name Irssi/Mutt screen -r Irssi/Mutt

目前,在使用启动器之前,我必须执行以下操作:

screen -S Irssi/Mutt irssi/mutt + Ctrl-a-d

我想做的是:

if [ test_to_see_if_the_screen_exit ]  # I need a way to the test
then
  urxvt -name Irssi/Mutt -e screen -r Irssi/Mutt
else
  create_the_screen_named_Irssi/Mutt_and_detach_it # I need a way to create it
  urxvt -name Irssi/Mutt -e screen -r Irssi/Mutt
endif

有没有人有办法解决吗?

4

2 回答 2

1

您可以使用screen -list | grep Irssi/Mutt来查看您的会话是否已经存在。

但是更容易screen弄清楚会话是否存在:

screen -r Irssi/Mutt || screen -S Irssi/Mutt irssi/mutt

这将尝试附加到现有会话,并在附加失败时创建一个新会话(您无需立即分离和重新连接,只需留在会话中即可)。

urxvt运行它,您必须sh明确指定:

urxvt -name Irssi/Mutt -e sh -c 'screen -r Irssi/Mutt || screen -S Irssi/Mutt irssi/mutt'
于 2013-05-16T15:44:53.270 回答
1

使用screen -listscreen -ls显示您现有的屏幕。

不过,我可能会这样做if...endif

screen_opts=""
case $(screen -list Irssi/Mutt | awk '/Irssi/{print $NF}') in
  *Attached*) ;; # not sure what you would want here,
                 # but I would probably do 'screen_opts="-x"'...
  *Detached*) screen_opts="-r" ;;
  *) screen -wipe # if session is dead, clean it up
     screen_opts="-S Irssi/Mutt";;
esac
urxvt -name Irssi/Mutt -e screen ${screen_opts}
于 2013-05-16T15:50:34.007 回答