播放 GNU screen 终端会话并减慢其速度

播放 GNU screen 终端会话并减慢其速度

我有一些用 GNU screen 制作的日志文件,我想查看一下。这些日志文件使用 elinks 和 vim,不是简单的 bash 文本。

如果我使用 cat,它几乎可以正常工作,只是速度太快了。有没有办法减慢它的速度?我考虑编写一个像 cat 一样的简单 C 程序,但在输出每个字符之间休眠一小段时间,除非有更简单的方法。

由于 GNU screen 看起来并不是用于共享、记录和播放 Linux 终端的正确工具,因此我愿意接受有关下次使用更好工具的建议,这样我就不会再遇到这个问题了。

答案1

我编写了以下 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;
}

相关内容