Eu não acho que haja alguma opção para isso - além de procurar na lista de processos:
screen -r $(pgrep -f '\<SCREEN.* -t name\>')
Em * BSD é necessário algo diferente:
screen -r $(pgrep -t- -f '\<screen.* -t name\>')
A opção -t-
de pgrep
direciona-a para corresponder apenas aos processos sem terminal de controle, neste caso apenas o processo backend screen
, não a primeira exibição anexada ( screen
altera a argv[0]
de o processo de back-end para "SCREEN"
em todos os lugares, mas no * BSD, as alterações nas cadeias argv
não são espelhadas na lista de processos, como no Linux).
No FreeBSD, a opção -a
('também coincide com ancestrais do processo de chamada') também pode ser necessária. Infelizmente, pgrep -t-
não é suportado no Linux e pgrep -a
faz algo completamente diferente.
Então, colocando tudo em uma função:
# usage tscreen title [args ...]
tscreen(){
title=$1; shift
screen -r $(
pgrep -f "\<SCREEN.* -t $title\>" ||
pgrep -t- -f "\<screen.* -t $title\>" ||
pgrep -at- -if "\<screen.* -t $title\>" ||
echo "title=$title"
) "$@"
}