Não sei exatamente o que você quer que aconteça - você quer um script que crie a sessão de tela com duas janelas para dois comandos ou deseja executar um script em uma janela de tela que execute um comando e, em seguida, cria uma nova janela para o segundo?
O segundo é fácil, então vamos começar com isso:
#!/bin/bash
command1
screen command2
A "tela" em execução na tela cria uma nova janela na sessão atual, não inicia uma nova. Mas ele retornará imediatamente, portanto, após a última linha, o script sairá enquanto o comando 2 ainda estiver em execução. E quando o comando2 terminar, sua janela será fechada.
A primeira interpretação da sua pergunta é um pouco mais difícil, então vamos em frente e resolver o problema acima:
#!/bin/bash
# Need to positively identify the session name:
SESSION=mysession.$$
echo "TO ATTACH TO SESSION: screen -r ${SESSION}"
# For signalling and stuff
FLAGDIR=$(mktemp -d)
# To keep the windows around after the commands are done,
# set the "zombie" option (see the man-page)
echo "source $HOME/.screenrc" > ${FLAGDIR}/screenrc
echo "zombie xy" >> ${FLAGDIR}/screenrc
# Use that temporary screenrc; create a detached session:
screen \
-c ${FLAGDIR}/screenrc \
-d -m \
-S ${SESSION} \
bash -c "command1 ; touch ${FLAGDIR}/done"
# Wait for command1 to terminate
while [[ ! -f ${FLAGDIR}/done ]] ; do sleep 1 ; done
# Now start command2 in a new window, by sending a remote command:
screen -S $SESSION -X screen command2
# Don't need this any more:
rm -rf ${FLAGDIR}
O script iniciará command1
, espere até que seja concluído, depois lance command2
e saia. Como se você estivesse executando command1 ; command2 &
, mas com a saída em outro lugar. Tenho certeza de que você pode descobrir como executar command1
no plano de fundo.