1

У меня есть некоторые файлы журналов, сделанные с экрана GNU, которые я хотел бы посмотреть. Они используют elinks и vim, это не просто bash текст.

Если я использую cat, это почти работает, за исключением того, что это слишком быстро. Есть ли способ замедлить это? Я думал о том, чтобы написать простую программу на C, похожую на cat, но спящую долю секунды между выводом каждого символа, если нет более простого способа.

Поскольку кажется, что экран GNU не подходит для совместного использования, записи и воспроизведения терминала Linux, я открыт для предложений по использованию более качественных инструментов в следующий раз, поэтому у меня больше не будет этой проблемы.

1 ответ1

0

Я сделал следующую C-программу для cat(1) файла, который приостанавливал определенное количество микросекунд после каждого символа. Пример использования:

$ ./slowcat screenlog.0 2000

если я хочу остановиться во время просмотра, я просто посылаю сигнал SIGSTOP с клавиатуры (Ctrl-S). Затем я отправляю SIGCONT (Ctrl-Q) для возобновления. Ctrl-C, чтобы выйти.

#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;
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .