Posso registrar a entrada do usuário e a saída do programa separadamente para uma sessão de terminal?

0

Eu gostaria de poder fazer o script funcionar assim:

❯ script --user=call.log --prog=response.log
    Script started

❯ echo foo
    foo

❯ exit
    Script done

❯ cat call.log
    echo foo

❯ cat response.log
    foo

Como isso não acontece, estou procurando alternativas.

Visualizar a saída real de script mostra algo assim:

^M^[[35m❯ ^[[Ke^Hecho foo#[[?1l^[>^?2004l^M^M
^[]0;tmp: echo foo^Gfoo^M

Eu considerei escrever um analisador para extrair o que eu quero de lá - mas isso parece frágil, especialmente porque parece depender da configuração do shell do usuário.

Existe uma maneira melhor de registrar os detalhes de uma sessão separadamente?

    
por MatrixManAtYrService 09.09.2018 / 20:09

1 resposta

1

Sem conhecer os componentes internos dos vários aplicativos, você não pode dizer quais caracteres foram ecoados pelo driver do terminal (em nome de um aplicativo) e quais foram emitidos por um determinado aplicativo.

Eu uso script para capturar a saída para aplicativos linha de comando como seu exemplo e, em seguida, uso um script para filtrar as seqüências de escape (veja por exemplo Posso programaticamente “gravar” códigos de controle ANSI em um arquivo usando utilitários unix? ).

Isso não funcionaria tão bem para aplicativos de tela inteira, como um editor (porque não pode mostrar claramente o que acontece quando o cursor se move pela tela, atualizando o texto). Para isso, é (geralmente) bom o suficiente para reproduzir a sessão em câmera lenta (por exemplo, slowcat ).

    
por 09.09.2018 / 20:23

Tags