首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从bash完成开始的黑名单程序

从bash完成开始的黑名单程序
EN

Stack Overflow用户
提问于 2015-01-30 20:05:59
回答 3查看 597关注 0票数 8

当我试图快速键入git别名时,Fedora附带了"gstack“和一堆"gst-”程序,这些程序一直出现在我的bash完成中。当然,它们安装在/usr/bin和其他上千个程序下,所以我不能直接从我的路径中删除它们的目录。在Linux中有什么办法从出现到完成时就将这些特定的程序列入黑名单吗?

我尝试过FIGNORE和GLOBIGNORE环境变量,但是它们不工作,看起来它们只用于在输入命令后完成文件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-22 12:55:38

2016年,巴斯推出了一种选择。我正在复制这个更新的答案祖佐的文本

这是相当新的,但是在Bash 4.4中可以设置EXECIGNORE变量:

aa。新变量: EXECIGNORE;一个冒号-单独的模式列表,将导致匹配的文件名在搜索命令时被忽略。

来自正式文件

EXECIGNORE 一个以冒号分隔的shell模式列表(请参见模式匹配),它定义了使用路径的命令搜索要忽略的文件名列表。对于通过路径查找完成和命令执行的目的,其完整路径名与这些模式之一匹配的文件不被视为可执行文件。这不影响[、test和[命令]的行为。命令哈希表中的完整路径名不受EXECIGNORE约束。使用此变量可以忽略具有可执行位集但不是可执行文件的共享库文件。模式匹配尊重extglob选项的设置。

例如:

代码语言:javascript
复制
$ EXECIGNORE=$(which pytest)

或者使用模式匹配

代码语言:javascript
复制
$ EXECIGNORE=*/pytest
票数 4
EN

Stack Overflow用户

发布于 2015-02-26 16:25:41

我不知道你是否可以黑名单特定的文件,但它是有可能完成从您的命令历史,而不是路径。要做到这一点,请在~/.inputrc中添加以下行

TAB dynamic-complete-history

票数 1
EN

Stack Overflow用户

发布于 2015-12-14 17:16:46

FIGNORE只适用于后缀。它假定无论出于何种原因,您都想将整个类文件列入黑名单。所以你得把第一封信删掉。

例如,要从自动完成中消除gstack

FIGNORE=stack

将摆脱gstack,但也将摆脱任何其他以stack结尾的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28243760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档