スクリプトの再生を使用するには?

スクリプトの再生を使用するには?

次の方法で端末操作を再生できることを知っています。

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

しかし、たとえば、2分から3までの作業をどのように再び再生できますか?scriptreplay「加速/減速」オプションのみ使用できますか?

ベストアンサー1

scriptreplayJoey Hessが提供するパブリックドメインバージョンのPerlがあります。スクリプトの再生

開始/終了機能を追加するように調整できます(作成者がパブリックドメインに実装を配置しました)。

以下は、2つの追加パラメータ、つまり開始時間(秒単位、デフォルトは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;

おすすめ記事