我有一些用 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;
}