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.
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:
Além do script em perl aqui:
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?
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.