0

すべてのコマンドの後に履歴ファイルの重複レコードが削除されるようにkshの.kshrcに設定するにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

ksh93履歴を書き換えるオプションをサポートしたことはありません。

一部のシェルは、終了時または要求時にのみ履歴ファイルを書き込みます。 ksh93すべてのコマンドの後に書き込むため、多くの同期 I/O が生成されます。

一部の環境 (NFS など) では、これがインタラクティブなエクスペリエンスに影響を与え、シェルが各コマンドの後に待機する原因となる可能性があります。

于 2013-05-20T16:58:08.670 に答える
1

私は ksh バフではないので、履歴の重複を無視するシェル オプションがあるかどうかはわかりません。とにかく、次のような小さな perl スクリプトを使用して、いつでも重複をトリミングできます。

#!/usr/bin/env perl

my $history = ".history";
open (HIST, '<', $history) or die "cannot read $history: $!";
my @oldhist = <HIST>;
close HIST;

my @newhist = ();
my %seen = ();
while (my $cmd = pop @oldhist) {
    next if defined $seen{$cmd};
    ++$seen{$cmd};
    unshift @newhist, $cmd;
}

open (HIST, '>', $history) or die "cannot write $history: $!";
print HIST @newhist;
close HIST;

これが回る

A
B
C
D
C

の中へ

A
B
D
C
于 2013-05-19T16:36:31.427 に答える