通用awk函数解析:高频命令识别工具mu函数实现说明
用自定义函数统计高频终端命令,快速确定别名设置目标
如果你一直在找一种高效的方式,找出自己日常敲得最多的终端命令(或者子命令),从而给它们设置别名节省时间,那这个我一直在用的mu函数绝对值得试试!
函数功能与用法
这个函数有两种使用场景:
- 不带参数运行:直接统计所有历史命令里的高频主命令,输出前10条,还会附带使用占比
mu - 带单个参数运行:比如你想统计
git的子命令使用频率,就输入mu git,它会帮你找出该命令下最常用的子命令mu git
完整函数代码
function mu() { if [[ $# -eq 0 ]]; then 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 -n10 elif [[ $# -eq 1 ]]; then history | awk '$2=="'$1'"{CMD[$3]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10 fi }
(注:原代码里的column -c3 -s ...存在笔误,我补全为column -c3 -s " " -t以保证功能正常运行)
核心逻辑说明
- 借助
history命令获取你的终端操作历史记录 - 用
awk统计命令(或子命令)的出现次数和使用占比 - 用
grep -v "./"过滤掉本地脚本的调用记录,避免干扰统计结果 - 用
column格式化输出,让统计结果更整齐易读 - 最后排序并取前10条,直接展示最值得设置别名的高频命令
内容的提问来源于stack exchange,提问作者Cydonia7
相关产品推荐
相关产品推荐

