Desativar saída de tela “[tela está terminando]”

1

Como faço para desativar a saída quando você terminar com uma tela do comando screen ?

Exemplo:

function foo()
{
    echo "Testing..."
    sleep 2
    echo "Done!"
}
export -f foo
screen -q bash -c "foo" &> /dev/null

Tudo funciona como esperado, no entanto, não consigo descobrir como desativar o "[screen is terminal]".

    
por Tyilo 31.12.2011 / 04:21

3 respostas

3

Existem apenas duas soluções em que posso pensar. O primeiro é modificar o próprio código de tela e recompilar. A segunda é ter algo como um wrapper expect em torno do programa (não testado):

#!/usr/bin/expect -f
spawn screen -q bash -c foo
interact {
    "\[screen is terminating]" exit
}
    
por 31.12.2011 / 23:48
1

A tela está usando seu tty para escrever esse texto, então você não pode parar a tela para escrever esse texto apenas redirecionando stdout ou stderr para o /dev/null .

Eu tenho a maneira mais simples de remover essa linha de uma saída.

Nesta abordagem, você precisa mover o cursor para cima e limpar essa linha. Caracteres de escape podem ajudá-lo com isso, por exemplo, para executar o comando screen com o comando cat , você precisa executar da seguinte forma:

screen cat;echo -en '\e[A\e[K'

Isso removerá a linha [screen is terminating] , espero que isso ajude você.

    
por 05.05.2017 / 13:41
0

Simples: D

offset=$(tr -c '[[:print:]]' '\n' <'which screen'|grep -b "screen is terminating" | cut -d ":" -f 1)
printf "\x00" | dd of='which screen' obs=1 seek=$offset conv=notrunc

divirta-se!

    
por 12.12.2018 / 14:18

Tags