不懂就问:如何对 cat abc | fzf 出来的结果按照 Frequency 自动进行排序?

2021-12-26 10:59:58 +08:00
 hcsu
我把一些常用的命令写在文件 abc 里,想用 fzf 做成交互式的选项,希望 fzf 之后这些选项可以自动根据使用频率进行排序,把常用的排到前面(像 z.lua )。请问有什么比较简单的方法可以实现吗?
(似乎 sort 只能针对固定的顺序排序,不能自己学习以后自动调整顺序)

先谢谢!🙏
1243 次点击
所在节点    问与答
5 条回复
mcfog
2021-12-26 11:30:53 +08:00
1.每次执行命令前把命令本身记录到一个 history 文件
2.cat abc history | sort | uniq -c | sort -n2k 后(按次数排序)再喂给 fzf
3. 得到的结果也会后面多个次数自己处理掉
Kobayashi
2021-12-26 11:36:01 +08:00
做不到。fzf 只是一个交互式选择器,负责匹配并处罚动作。
kidonng
2021-12-26 13:49:15 +08:00
一个简单的办法:
1. 设置环境变量 $HISTCONTROL 为 erasedups ( fish 不用)
2. 设置环境变量 $HISTFILE 为单独用来放常用命令的文件( fish 是 $fish_history )
3. 开一个使用上述环境的新 shell ,启动 fzf 搜索 shell 命令历史
Jooooooooo
2021-12-26 16:47:52 +08:00
直接把 "word 频率" 输出到另外一个文件里然后对这个新的文件的第二列频率排序就行
hcsu
2021-12-27 11:37:58 +08:00
@mcfog @Kobayashi @kidonng @Jooooooooo
谢谢各位大佬提供的思路,很受用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/824462

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX