123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/usr/bin/env perl
- use strict;
- use warnings;
- our %cds;
- open(HISTORY, "$ENV{HOME}/.histfile") || die "Cannot open history file: $!\n";
- sub hashValueDescendingNum {
- $cds{$b} <=> $cds{$a};
- }
- while (<HISTORY>) {
- my $command = $_;
- if ($command =~ m/^$/) {
- next;
- }
- my @comm = split(' ', $command);
- if ($comm[0] eq "sudo") {
- shift @comm;
- }
- if (not $comm[0] eq "cd") {
- next;
- }
- if (exists $comm[1]) {
- if (not exists($cds{$comm[1]})) {
- $cds{$comm[1]} = 0;
- }
- $cds{$comm[1]}++;
- } else {
- if (not exists($cds{"HOME"})) {
- $cds{"HOME"} = 0
- }
- $cds{"HOME"}++;
- }
- }
- foreach my $key (sort hashValueDescendingNum (keys(%cds))) {
- my $value = sprintf "%8s", $cds{$key};
- print "$value\t$key\n";
- }
|