如何使用脚本重放?

如何使用脚本重放?

我知道我可以通过以下方式重播终端操作:

scriptreplay /path/to/$STARTTIME-timing.txt /path/to/$STARTTIME-log.txt

但是我如何重播例如从第 2 分钟第 3分钟的动作?scriptreplay只提供“加速/减速”选项吗?

答案1

有一个scriptreplay属于公共领域的 Perl 版本,由 Joey Hess 提供:剧本重播

您可以对其进行调整以添加开始/结束功能(作者将该实现置于公共领域)。

下面是对该代码的快速修改,它需要两个附加参数 - 开始时间(以秒为单位,默认为 0)和结束时间(可选,如果未指定,则运行到结束)。适应您的需求:

#!/usr/bin/perl -w
use strict;
$|=1;
open (TIMING, shift)
        or die "cannot read timing info: $!";
open (TYPESCRIPT, shift || 'typescript')
        or die "cannot read typescript: $!";
my $divisor=shift || 1;
my $start_sec=shift || 0;
my $end_sec=shift;
# Read starting timestamp line and ignore.
<TYPESCRIPT>;
my $printing = ($start_sec > 0 ? 0 : 1);
my $elapsed = 0;
my $block;
my $oldblock='';
while (<TIMING>) {
        my ($delay, $blocksize)=split ' ', $_, 2;
        if ($printing && ($delay / $divisor > 0.0001)) {
                select(undef, undef, undef, $delay / $divisor - 0.0001);
        }
        read(TYPESCRIPT, $block, $blocksize) or die "read failure: $!";
        print $oldblock if ($printing);

        $elapsed += $delay;
        exit if ((defined $end_sec) && ($elapsed > $end_sec));
        $printing = ($elapsed > $start_sec);

        $oldblock=$block;
}
print $oldblock;

相关内容