Registrando entrada e saída interativas sem capturar todos os caracteres digitados de entrada e controle

4

Estou tentando registrar a saída de um programa de linha de comando interativo; units , especificamente.

Eu tentei usar tee assim:

units | tee units.log

ou script como este:

script -c units units.log

mas eles registram todos os backspaces e conclusões de tabulações como caracteres especiais como este:

You have: 55 horsepower ^G/^H^[[K^M
You want: wat^Gt ^M
    * 41013.493^M
    / 2.438222e-05^M

A página de manual de script menciona esse problema.

BUGS
     Script places everything in the log file, including linefeeds and backspaces.  This is not what the naive user expects.

Estou ciente da solução alternativa de visualizar o arquivo usando cat e more ou de remover os caracteres de escape com col , conforme mencionado aqui:

link

Além do script em perl aqui:

link

Mas eu não quero especialmente corrigir um arquivo de log existente: eu quero evitar a criação de novos arquivos de log ilegíveis com caracteres de controle e entrada excluídos.

Eu pensei que tinha corrigido o problema usando rlwrap , mas ele entra em conflito com a funcionalidade units readline, para que ele não capture a saída ou com rlwrap -a captura a saída, mas nega a capacidade de units para usar a conclusão de tabulação. rlwrap -a -N não ajuda. Isso está bem documentado na página man:

BUGS and LIMITATIONS
       Though  it  is  flexible, delivers the goods (readline functionality), and adheres to the Unix "many small tools" paradigm, rlwrap  is a kludge. It
       cannot know anything about command's internal state, which makes context-sensitive completion impossible. Using the readline  library  from  within
   command is still the best option.

Existe alguma maneira de registrar de forma limpa entradas e saídas interativas que não mexam com a funcionalidade readline existente?

Atualização: ficaria feliz com algo como

units | col -b | tee units.log

mas que trava enquanto aguarda a entrada interativa. Isso pode ser corrigido?

    
por Nathaniel M. Beaver 15.11.2013 / 05:30

1 resposta

1

As Unidades GNU adicionaram recentemente este recurso na versão 2.10.

The --log option allows you to save the results of calculations in a file; this can be useful if you need a permanent record of your work.

link

    
por 25.04.2014 / 00:31