【问题标题】:How to attach screen seesion or create it?如何附加屏幕会话或创建它?
【发布时间】:2013-05-16 15:22:09
【问题描述】:

我目前正在使用它来启动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

有人有解决办法吗?

【问题讨论】:

  • 嗯,这不是答案,而是建议,TMUX 比屏幕好得多。我同时使用过 screen 和 TMUX,而且 TMUX 更加用户友好并且具有更多的灵活性
  • 你有例子吗?
  • 我有 tmux,在 .bashrc 中,alias t='tmux attach || tmux new' 这有助于附加到现有会话或创建新会话。在 tmux 会话中,您可以有多个窗口,每个窗口都运行单独的程序。所以只需用你想要的替换tmux newstackoverflow.com/questions/5609192/…此链接将向您展示如何做到这一点
  • 这很酷,我一定会尝试的。

标签: bash gnu-screen


【解决方案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}

【讨论】:

  • 您必须使用 urxvt 的 -e 选项来启动命令。谢谢
  • @JacobIlyane 你是对的......我只是复制粘贴了 OP 的命令......现在修复它。
【解决方案2】:

您可以使用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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多