Acho que, enquanto a tela não interpreta caracteres nomeados, como \n
, ela cuida das fugas octal. Então, em vez de stuff 'echo "The array has of elements."\n'
, você poderia usar:
stuff 'echo "The array has of elements."'2
Meu objetivo é escrever um script zsh
para criar várias sessões screen
e executar comandos separados em cada uma delas. Também gostaria de verificar no início do meu script se existem telas com tarefas em execução e finalizar todas elas que estão ociosas. Além disso, se possível, gostaria de ter uma maneira de gravar o stdout da tela individual e obter seu número de ID. Até agora eu tentei o seguinte:
### Script for running everything in screens ###
killall -15 screen ## We make sure that no screens are running for now
#bkg_array = ("TopJets" "BosonJets" "DiBoson" "TTbar")
screen -dmS "MYSCREEN"
screen -S "MYSCREEN" -p 0 -X stuff 'echo "The array has of elements."\n'
No entanto, parece que não consigo enviar o pressionamento de tecla para pressionar Enter
; Como posso conseguir esse efeito? Além disso, sem a opção -p
, o comando não é enviado para a tela. Depois de pressionar Ctrl + V + Enter , os caracteres ^M
foram colados na tela e ele pressionou entrar na sessão de tela, mas não tenho ideia de por que isso funcionou.
Obrigado pela sua ajuda, sinta-se à vontade para apontar quaisquer ambiguidades.
Acho que, enquanto a tela não interpreta caracteres nomeados, como \n
, ela cuida das fugas octal. Então, em vez de stuff 'echo "The array has of elements."\n'
, você poderia usar:
stuff 'echo "The array has of elements."'2
Então, o que eu faço é isso:
screen -dmS SCREEN_SESSION_NAME -t TAB_NAME ~/bin/my_first_prog.sh ; screen -S SCREEN_SESSION_NAME -X screen -t TAB_NAME2 ~/bin/my_second_prog.sh
No site, você terá uma sessão de tela chamada SCREEN_SESSION_NAME, com duas guias. Para sair de tudo Eu mato os programas graciosamente (mata -1) e a execução
screen -S SCREEN_SESSION_NAME -X quit
Tags gnu-screen zsh shell-script