O comando padrão tee
do Unix permite redirecionar a entrada padrão do comando para um ou mais arquivos e também imprimi-lo na saída padrão. Então você pode fazer algo parecido com
myscript.sh|tee mylog.log
desde que o myscript.sh apenas imprima na saída padrão (o que simplificaria isso)
Para abrir as janelas de um terminal ao clicar no ícone, você pode envolvê-lo em outro script:
xterm -e "myscript.sh | tee mylog.log; read -p FINISHED"
A diferença com a sua solução é que você tem a opção de fechar a janela do terminal quando o script terminar ou exibir a mensagem "Pressione qualquer tecla para continuar ..." - com tail -f
o terminal basicamente não tem como saber quando seu script terminar, você terá que interrompê-lo com Ctrl-C.
Além disso, o tail -f deve ser menos eficiente do que imprimir diretamente no terminal, mas isso provavelmente não é muito importante nos dias de hoje.