Toca as sessões de terminal da tela GNU e reduz a velocidade delas

1

Eu tenho alguns arquivos de log feitos com a tela GNU que eu gostaria de assistir. Estes usam elinks e vim, não é simples texto bash.

Se eu uso cat, quase funciona, salvo que seja muito rápido. Existe uma maneira de desacelerar? Pensei em escrever um programa C simples como o gato, mas dormindo uma fração de segundo entre a saída de cada caracter, a menos que haja uma maneira mais simples.

Como parece que a tela GNU não é a ferramenta certa para compartilhar, gravar e reproduzir o terminal Linux, estou aberto a sugestões sobre como usar ferramentas melhores na próxima vez, então não voltarei a ter esse problema.

    
por Antonio Bonifati 'Farmboy' 01.02.2015 / 10:44

1 resposta

0

Eu fiz o seguinte programa C para cat (1) um arquivo pausando um certo número de microssegundos após cada caractere. Exemplo de uso:

$ ./slowcat screenlog.0 2000

se eu quiser parar enquanto assisto, apenas envio o sinal SIGSTOP do meu teclado (Ctrl-S). Eu então envio SIGCONT (Ctrl-Q) para continuar. Ctrl-C para sair.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

int main(int argc, char *argv[]) {
  int c, ms_wait;
  FILE *fp;
  char *prog = argv[0]; /* program name for errors */

  if (argc == 3) {
    ms_wait = atoi(argv[2]);
  } else if (argc != 2) {
    fprintf(stderr, "Usage: %s file [ms_wait]\n", prog);
    exit(1);
  } else {
    ms_wait = 1000;
  }

  if ((fp = fopen(argv[1], "r")) == NULL) {
    fprintf(stderr, "%s: can't open %s\n", prog, *argv);
    exit(1);
  }

  while ((c = fgetc(fp)) != EOF) {
    putchar(c);
    usleep(ms_wait);
  }

  return 0;
}
    
por 01.02.2015 / 20:38