我已尝试过FIGNORE和GLOBIGNORE环境变量,但它们不起作用,看起来它们只是在您输入命令后才能完成文件。
答案 0 :(得分:1)
我不知道您是否可以将特定文件列入黑名单,但可以从命令历史记录而不是路径中完成。为此,请将以下行添加到~/.inputrc
:
TAB dynamic-complete-history
答案 1 :(得分:1)
2016年,Bash为此引入了一个选项。我正在复制this newer answer的zuazo中的文本:
这是相当新的东西,但是您可以在Bash 4.4中设置EXECIGNORE
变量:
aa。新变量:EXECIGNORE;用冒号分隔的模式列表 搜索命令时将导致匹配的文件名被忽略。
EXECIGNORE
用冒号分隔的外壳模式列表(请参见Pattern Matching),定义了使用以下命令搜索将忽略的文件名列表 路径。完整路径名与这些模式之一匹配的文件不是 出于完成和命令目的考虑的可执行文件 通过PATH查找执行。这不会影响[, 测试和[[命令。命令哈希表中的完整路径名是 不受EXECIGNORE约束。使用此变量忽略共享库 具有可执行位的文件,但不是可执行文件。 模式匹配采用extglob shell选项的设置。
例如:
$ EXECIGNORE=$(which pytest)
或使用Pattern Matching:
$ EXECIGNORE=*/pytest
答案 2 :(得分:0)
FIGNORE仅适用于SUFFIXES。无论出于何种原因,它都假定您要将整个类文件列入黑名单。所以你需要敲掉第一个字母。
E.g。要从自动完成中消除gstack
:
FIGNORE=stack
将摆脱gstack
,但也删除以stack
结尾的任何其他内容。