键入“时Bash可编程完成”;“第一命令”;

键入“时Bash可编程完成”;“第一命令”;,bash,command,bash-completion,Bash,Command,Bash Completion,有没有办法控制在bash4命令提示符下键入的第一个命令的完成 我可以用complete-E控制“空行”的完成,但只要输入了一些字符,bash(或者可能是readline)就会给出PATH、内置命令(if、then、else…)和完成尝试时的函数(TAB)中的所有文件名 我能够通过在PROMPT_命令中取消路径设置并通过将函数绑定到trap DEBUG来恢复它来避免路径条目,但没有成功地摆脱bash bultin命令的完成 有什么想法吗?bash补全存储在/etc/bash\u completio

有没有办法控制在bash4命令提示符下键入的第一个命令的完成

我可以用complete-E控制“空行”的完成,但只要输入了一些字符,bash(或者可能是readline)就会给出PATH、内置命令(if、then、else…)和完成尝试时的函数(TAB)中的所有文件名

我能够通过在PROMPT_命令中取消路径设置并通过将函数绑定到trap DEBUG来恢复它来避免路径条目,但没有成功地摆脱bash bultin命令的完成


有什么想法吗?

bash补全存储在/etc/bash\u completion.d中/ 如果您具有root访问权限,则可以在那里编辑/删除文件

如果您想在用户级别控制事情,那么可以创建和编辑~/.inputrc。看看/etc/inputrc,它会让你知道从哪里开始

~/.inputrc覆盖/etc/inputrc中的任何内容,因此您可以更改bash_completion查找完成文件的位置。您可以创建一个本地完成目录,只在其中完成您想要完成的项目。我相信您也可以消除bash内置

还有一些关于bash在线完成的非常好的教程。
这是bash可编程完井设施设计中的一个明显弱点。即使“默认”命令完成
-D
仅对空行上的命令生效(前提是未指定
complete-E
)。缺少类似于
complete-I
(用于输入的命令不完整)的内容。

从5.0开始,bash内置
complete
支持
-I
选项:

I选项表示其他提供的选项和操作应 应用于行中首个非赋值词的补全,或 在诸如“;”之类的命令分隔符之后或“|”,通常是命令 姓名填写


我能够在ubuntu docker映像上毫无问题地运行,并使用它来模拟工具环境shell。Bash 5.

对不起,这不是一个编程问题,投票移动到R你可以“标记”它并要求主持人移动i。(我没有否决你的问题)。祝你好运。在什么方面这不是编程问题?这绝对与编程有关,也许我应该更清楚地描述我的问题。它与环境密切相关。我正在为bash4中的集成框架开发CLI,需要控制bash4的完成以过滤不需要的建议。在我看来,这是关于使用编辑器的,它直接放在superuser.com中。无论如何,你可能会在S.O.上得到回复,祝你好运!颠簸;)有没有bash4黑客来帮我解决这个问题?我觉得很奇怪,我可以控制空白行的补全,但是一旦我开始输入字符,那些“空白行”的补全就丢失了……他特别要求控制命令行上第一个单词的补全。这就是我要说的。他想建立一个受控制的环境,限制对选项卡扩展的访问。我回答了这个问题。这里引用了“需要控制bash4完成以过滤不需要的建议”的话。问题是似乎没有控制第一个单词扩展的机制。您可以使用“complete-E”为完全空的行设置补全;否则,补全是基于一个完整的第一个单词。很抱歉把它拖出来,但这只是部分正确。如果我有一个空的命令行,我键入b-完成的第一件事是“bluetooth agent”,它位于我路径中的“/usr/bin”中。现在,假设OP将用户的路径限制为只包含他希望用户运行的链接或文件的目录。然后,按照他的要求完成第一个单词。除非我误解了这个问题。如果我这样做,请纠正我。我认为bash-r或者chroot监狱应该完成这两项任务中的任何一项。如果你读了他的问题,他已经为避免完成这些命令扫清了道路。他正在寻找的一个具体问题是如何避免完成
bash
内置程序。