0

24時間以内に使ったコマンドと回数をワンライナーで

zshのhistoryコマンド使うよりも~/.zsh-history読んだほうが簡単だった

tail -5000 ~/.zsh-history | nkf -u | ruby -lane 'time, cmd = $_.scan(/^: (\d+):\d;(.+)$/)[0]; puts cmd.split(/\s/)[0] if time.to_i > Time.now.to_i-60*60*24' | sort | uniq -c | sort -nr


結果
 156 ruby
66 git
42 tail
40 node
38 ls
18 curl
15 npm
12 cat
11 heroku
10 history
9 cd
8 ssh
8 less
7 echo
6 mount_ramdisk
6 history-all
6 emacs
5 scp
5 mv
5 gem
5 bundle
4 screen
4 rm
3 mkdir
3 irb
3 cp
2 wc
2 tweet
2 touch
2 sh
2 markdown
2 df
1 which
1 wget
1 tw
1 rake
1 p
1 open
1 hostname
1 head
1 gi
1 chmod
1 ../tmp
1 ..

0

gitの各コマンドの使用回数

2010年8月〜現在までのログから

history -E 1 | grep git | ruby -lane 'a=$_.split(/\s+/) rescue next; next unless a[3] == "git"; puts a[5] =~ /^-.+/ ? "#{a[4]} #{a[5]}" : a[4]' | sort | uniq -c | sort -n -r
Ruby1.9.2でやったら invalid byte sequence in UTF-8 (ArgumentError) が出たので1.8.7使った。


gitは難しい、1文字違いで間違えてるの多い
8320 status
3443 add
3425 diff
2244 commit -m
2123 push
629 log
563 add -p
530 branch
524 checkout
360 pull
323 mv
194 commit --amend
185 remote
135 ls-files
120 init
114 clone
110 rm
103 merge
79 grep
63 add -f
49 tag
41 tag -a
33 reset
31 rm --cache
24 cherry-pick
22 checkout -b
21 branch -d
19 log --oneline
18 stta
18 reset --hard
18 dif
14 stat
12 sta
12 log --help
12 idff
10 commit --ammend
8 rm -r
7 tag -m
7 show
7 satt
6 tag -d
6 sat
6 nil
6 log --branches
6 difff
6 commmit -m
5 rm -f
5 instaweb --httpd=thin
5 fetch
4 tag -v
4 rm -rf
4 mv -f
4 ls
4 commit -amend
3 tags
3 instaweb --httpd=webrick
3 config --global
3 commit -ammend
3 commit
3 branch -D
3 -v
3 --version
3 --help
2 tat
2 tag --help
2 sttat
2 statt
2 search
2 reset --head
2 mv -r
2 mv -R
2 mv --cache
2 log --tags
2 log --merges
2 log --branche
2 instaweb --httpd=webric
2 instaweb
2 ini
2 diff -HEAD
2 diff --HEAD
2 dad
2 commit-
2 comit -m
2 chekcout
2 cat
2 branches
1 vm
1 tree
1 tav -a
1 tag -l
1 statq
1 statp
1 stata
1 stash
1 staat
1 server
1 rmeote
1 rm -R
1 rm --cached
1 reset --soft
1 remoteush
1 ranch
1 puh
1 mv -n
1 mori
1 ls-tree
1 ls-file
1 ls --cache
1 log -simple
1 log -oneline
1 log -o
1 log -m
1 log --tree
1 log --tags=v
1 log --tags=^v
1 log --simple
1 log --o
1 log --left-right
1 log --follow
1 log --commit
1 log --comment
1 log --all
1 log --a
1 lod
1 list
1 lgo
1 instaweb --httpd=mongrel
1 init --help
1 iinit
1 iff
1 git
1 filelist
1 file-list
1 diff -p
1 didf
1 dfiff
1 dfif
1 dff
1 cvsserver
1 cp
1 config
1 commit --
1 comimt -m
1 co
1 cloen
1 checktou
1 checkout -f
1 checkout --cache
1 checkoub -b
1 chckout
1 brandh -d
1 branch -b
1 branc
1 brach
1 bracch
1 bnrach
1 barnch
1 ammend
1 addd
1 add -@
1 ad
1 aad
1 --f
1 --cached
1 *

2

\r\nのファイルが混じっているので\nに直すワンライナー

newgemで生成したgemのテンプレートに改行コードが\r\nのものと\nのものが混じっているのが気持ち悪いので、全部\nに統一した。

find * | xargs -n1 ruby -e 'lines = open(ARGV[0]).read.gsub(/\r\n/, "\n"); open(ARGV[0],"w+").write lines'

実行したディレクトリの中のファイルの改行コードが\nになる。