当我在控制台中按下 Tab 键时,我得到这个输出
显示全部 2957 种可能性?(是或否)
有什么方法可以利用grep
这 2957 种可能性吗?我想搜索所有包含单词“svn”的命令。
答案1
解决方案是 bash 内置的compgen
。要从所有可用命令和可通过访问的命令别名中 grep 'svn' $PATH
,请键入。
compgen -ac | grep svn
想要根据某个前缀进行搜索(例如所有以 开头的命令ecrypt
)?使用常用表达。。
compgen -ac | grep "^ecrypt"
答案2
您可以尝试使用compgen
。
例如:
compgen -ac | grep "svn"
答案3
这应该是等价的:
for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done
答案4
也许{,.}*svn*
在这里有帮助,例如ls -l /usr/bin/{,.}*svn*<tab>
。
但是,看看 Zsh!这里:http://www.jukie.net/bart/blog/zsh-tab-completion有一些很好的例子,说明它如何帮助减少制表符补全结果。这还包括否定,例如,如果您想要所有不带单词“foobar”的制表符补全结果,或者所有结果首先是偶数,子目录制表符补全等等。我改用 zsh 的原因是所有打开的终端之间共享历史记录。