模糊搜索 Shell 命令?

Fuzzy search Shell command?

以下情况: 我在另一个 mac(没有命令历史记录)上使用终端(bash)只记住命令的一部分,例如搜索其中包含 util 的命令。不记得是mdutil.

如何在不创建新文件的情况下完全在终端中以高效的方式模糊搜索命令?


我现在的典型做法:

要找到该命令,我可以 google,并不总是有效,需要互联网连接和浏览器。

Tab Tab,查看所有命令并滚动浏览它们,直到我认出正确的命令。

或者将所有命令输出到文本文件并在其中搜索。

我猜你可以这样做:

oldIFS="$IFS"
IFS=:
for dir in $PATH; do
    ls $dir/*util* 2> /dev/null
done
IFS="$oldIFS"

这将遍历 $PATH 中的所有目录,寻找包含 util.

的命令

如何从 man -k 开始并精炼,像这样:

man -k util | grep -i meta
Moose::Util::MetaRole(3pm) - Apply roles to any metaclass, as well as the object base class
mdutil(1)                - manage the metadata stores used by Spotlight
compgen -ca | grep util

做到了最好。您可以搜索命令的任何部分,而不是 util

gniourf_gniourf所说,更好的解决方案是

compgen -caX '!*util*'