Reproduzir um arquivo de log de tela de forma incremental

Reproduzir um arquivo de log de tela de forma incremental

Executei alguns comandos na tela gnu e usei o C-a Hcomando para gravar a saída em um screenlog.0arquivo. No entanto, agora quero vê-lo. Existem muitas sequências de escape de terminal, então apenas cat- isso me mostrará tudo de uma vez.

Eu sei que não há informações de tempo neste arquivo, e tudo bem. Mas é possível responder de forma incremental ao arquivo? Uma sequência de caracteres/escape por vez? Existe algum comando que pegue um arquivo como este e apenas "imprima" cada sequência de caracteres/escape, um de cada vez, enquanto eu pressiono botões/permite-me avançar?

ATUALIZAR: Se eu usar lessou more, posso ver o arquivo e ver coisas, mas isso me mostra o conteúdo bruto, incluindo códigos de controle. Se eu inseri um comando pela metade e pressionei tab, ele mostra a tecla tab. Então não consigo copiar/colar

Responder1

Você pode usar um pager como lessou more:

less screenlog.0

Ou

more screenlog.0

Não tenho certeza de quais códigos de escape de terminal você possui, mas se eles não forem exibidos corretamente, use

less -R screenlog.0

Responder2

Aqui está um script POC Bash simples para reproduzir screenlog.0enquanto é possível alterar a velocidade de reprodução pressionando 0, 1, ... 9onde 0 significa velocidade total. Pressione spacepara pausar/retomar.

exec 6< screenlog.0
sleep=2 # initial speed where 2 means 0.2s pauses between "lines"
while read -r line <&6 ; do
  printf '%b\n' "$line"
  read -s -N 1 -t .$sleep
  case "$REPLY" in [0-9]) sleep="$REPLY";; " ") read -s -d " ";; esac
done

informação relacionada