history
我可以获得按最常用顺序排序的输出吗?
我知道如何使用编程语言来做到这一点,但不知道如何从 shell 中做到这一点。我使用的是 macOS 上的 zsh。
我知道我可以使用uniq
和sort
某些东西来删除history
输出中的初始数字字段。但这只会删除重复数据,而不会考虑“重复频率”。
这在 shell 中可行吗?还是我应该求助于编程语言?
history
我可以获得按最常用顺序排序的输出吗?
我知道如何使用编程语言来做到这一点,但不知道如何从 shell 中做到这一点。我使用的是 macOS 上的 zsh。
我知道我可以使用uniq
和sort
某些东西来删除history
输出中的初始数字字段。但这只会删除重复数据,而不会考虑“重复频率”。
这在 shell 中可行吗?还是我应该求助于编程语言?
-n flag
您可以通过调用将 传递给history
或来删除初始数字fc
。要按频率排序,请使用标志
-c
,uniq
然后按该值再次排序。以下代码片段显示了您最常用的 20 个命令。
sed
如果您想保留重复次数,请删除该步骤。tail
如果您想要整个列表,请删除该步骤。当然,这假设您不启用诸如这样的选项
hist_ignore_dups
,否则信息将会丢失。只需分叉 Giles 的出色答案即可展示如何在实践中扩展和使用它。我决定根据我的用例和个人喜好,以这种方式使用它:
| grep git
- 让我只看到我感兴趣的命令子集。这里是 git 命令。| sort -k1n | tail -n20
→| sort -k1nr | head -n20
- 我更喜欢首先看到最常用的,所以我添加了r
反向排序,这需要查看head
而不是tail
。然后我可以像这样将其转换为新命令
alias
:在这种情况下,我调用了新命令
most
。