2

現在、これを使用して起動muttまたはirssi

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またはを使用screen -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 に答える
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 に答える