当我试图快速键入git别名时,Fedora附带了"gstack“和一堆"gst-”程序,这些程序一直出现在我的bash完成中。当然,它们安装在/usr/bin和其他上千个程序下,所以我不能直接从我的路径中删除它们的目录。在Linux中有什么办法从出现到完成时就将这些特定的程序列入黑名单吗?
我尝试过FIGNORE和GLOBIGNORE环境变量,但是它们不工作,看起来它们只用于在输入命令后完成文件。
发布于 2018-11-22 12:55:38
2016年,巴斯推出了一种选择。我正在复制这个更新的答案的祖佐的文本
这是相当新的,但是在Bash 4.4中可以设置EXECIGNORE变量:
aa。新变量: EXECIGNORE;一个冒号-单独的模式列表,将导致匹配的文件名在搜索命令时被忽略。
来自正式文件
EXECIGNORE 一个以冒号分隔的shell模式列表(请参见模式匹配),它定义了使用路径的命令搜索要忽略的文件名列表。对于通过路径查找完成和命令执行的目的,其完整路径名与这些模式之一匹配的文件不被视为可执行文件。这不影响[、test和[命令]的行为。命令哈希表中的完整路径名不受EXECIGNORE约束。使用此变量可以忽略具有可执行位集但不是可执行文件的共享库文件。模式匹配尊重extglob选项的设置。
例如:
$ EXECIGNORE=$(which pytest)或者使用模式匹配
$ EXECIGNORE=*/pytest发布于 2015-02-26 16:25:41
我不知道你是否可以黑名单特定的文件,但它是有可能完成从您的命令历史,而不是路径。要做到这一点,请在~/.inputrc中添加以下行
TAB dynamic-complete-history
发布于 2015-12-14 17:16:46
FIGNORE只适用于后缀。它假定无论出于何种原因,您都想将整个类文件列入黑名单。所以你得把第一封信删掉。
例如,要从自动完成中消除gstack:
FIGNORE=stack
将摆脱gstack,但也将摆脱任何其他以stack结尾的东西。
https://stackoverflow.com/questions/28243760
复制相似问题