LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 715|回复: 9

【脚本】来看看自己用得最多的命令

[复制链接]
发表于 2010-7-5 21:34:15 | 显示全部楼层 |阅读模式
突然想到 .bash_histroy不是存了一堆用过的命令么 统计一下看哪个出场较高
代码写得较粗糙  比如ls|grep什么的都没识别  只认出从开头到第一个空格的命令
而我的historysize设得比较大 所以比较有统计效能 hh

也附上俺的结果 ls cd pacman 坐居前三





  1. #!/usr/bin/perl
  2. #20100705 kar
  3. use strict;
  4. use warnings;

  5. my $his_file         = shift || "~/.bash_history";
  6. my $n                        = 10;
  7. my @l                         = `cat $his_file`;
  8. my $all                 = `wc -l $his_file`;
  9. my $total;
  10. my %b;
  11. my $i;
  12. my $p;
  13. my @so;

  14. $all =~ /(\d*) /;
  15. $total = $1;

  16. foreach $i (@l){
  17.         if($i!~/ /){
  18.                 $p=$i;
  19.         } else {
  20.                 $i=~/(.*?) /;
  21.                 $p=$1;
  22.         }
  23.         chomp($p);
  24.         if (!defined($b{$p})){
  25.                 $b{$p}=1;
  26.         } else {
  27.                         $b{$p}++;
  28.         }
  29. }

  30. @so = ();

  31. foreach $i(keys(%b)){
  32.         unshift @so,$i."\t".$b{$i}."\t".$b{$i}/$total*100;
  33. }

  34. print "Total:$all\n";
  35. @so=sort {
  36.         my $ta=$a;
  37.         my $tb=$b;
  38.         if ($ta=~/\t(\d*)\t/){
  39.                 $ta=$1;}
  40.         if ($tb=~/\t(\d*)\t/){
  41.                 $tb=$1;}
  42.         $ta <=> $tb;
  43. } @so;

  44. @so=reverse(@so);

  45. $i = 0;
  46. while($i<$n){
  47.         print $i+1,".";
  48.         $p = $so[$i];
  49.         $p =~ /(^.*\.\d\d)\d*/;
  50.         print $1."%\n";
  51.         $i++;       
  52. }



复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2010-7-6 08:41:36 | 显示全部楼层
眼下手头没机器试,但估计前五位肯定是ll,cd,vim,man,gcc吧...还有make ./a.out mount rm用的也很多
回复 支持 反对

使用道具 举报

发表于 2010-7-6 09:49:00 | 显示全部楼层
字符补丁……

alias fav='history | awk "{CMD[\$2]++;count++;} END { for(a in CMD) print CMD[a] \" \" CMD[a]/count*100 \"% \" a;}" | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n20'
回复 支持 反对

使用道具 举报

发表于 2010-7-6 10:40:42 | 显示全部楼层
1.sudo  336     49.12%
2.yaourt        68      9.94%
3.cd    51      7.45%
4.ls    38      5.55%
5.htop  35      5.11%
6.pacman        17      2.48%
7.sensors       16      2.33%
8.glxgears      13      1.90%
9.leafpad       12      1.75%
10.find 11      1.60%
回复 支持 反对

使用道具 举报

发表于 2010-7-6 10:47:59 | 显示全部楼层
脚本思路不错
不过常年在vim中使用!命令
发现不记录到history中
soso 统计对我来说不准确
回复 支持 反对

使用道具 举报

发表于 2010-7-6 18:04:44 | 显示全部楼层
1.sudo        89        24.65%
2.pacman        26        7.20%
3.echo        25        6.92%
4.yaourt        21        5.81%
5.cp        20        5.54%
6.exit        17        4.70%
7.ls        17        4.70%
8.vim        15        4.15%
9.cat        15        4.15%
10.rm        12        3.32%
回复 支持 反对

使用道具 举报

发表于 2010-7-6 19:02:06 | 显示全部楼层
1.git   267     18.78%
2.cd    197     13.86%
3.exec  146     10.27%
4.ll    85      5.98%
5.gvim  50      3.51%
6.grep  42      2.95%
7.make  35      2.46%
8.svn   32      2.25%
9.less  31      2.18%
10.pstree       31      2.18%
回复 支持 反对

使用道具 举报

发表于 2010-7-6 21:10:53 | 显示全部楼层
这个还是要试试的,估计ls cd 很多。make也不少
回复 支持 反对

使用道具 举报

发表于 2010-7-7 08:48:18 | 显示全部楼层
粗略的写了一个,发现是 sodu ……

history | awk '{print $2}' | sort | uniq -c | sort -g -r -k1

去sodu版


history | awk '{if ($2=="sudo") {print $3} else {print $2}  }' | sort | uniq -c | sort -g -r -k1

这次是pacman,刚装系统。
回复 支持 反对

使用道具 举报

发表于 2010-7-7 12:49:11 | 显示全部楼层
$ ls .bash*
.bash_history  .bash_logout  .bashrc

$ cat .bash_logout
# ~/.bash_logout
rm .bash_history
hcc

$ alias hcc
alias hcc='history -c ; clear'
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表