问题标签 [bash-completion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - bash的多字命令完成
可能重复:
正确处理 bash 完成中的空格和引号
我想使用多字引用字符串来完成 bash。
例如,我喜欢能够做到这一点
其中“Long String 1”和“Long String 2”是按下选项卡时给出的建议。
我尝试使用它,其中~/strings
包含引用字符串的列表
上面的函数在空格上分割字符串。有没有办法让它返回整个引用的字符串?
例如,如果~/string
有以下几行
它将给出 5 个建议而不是 2 个。
bash - 键入“第一个命令”时的 Bash 可编程完成
有没有办法控制在 bash4 命令提示符上键入的第一个命令的完成?
我可以用完整的 -E 控制“空行”的完成,但是只要键入一些字符,bash(或可能是 readline)就会给我 PATH 中的所有文件名、内置命令(if、then、else...)和函数完成尝试 (TAB)。
我能够通过在 PROMPT_COMMAND 中取消设置 PATH 并通过绑定函数以捕获 DEBUG 来恢复它来避免 PATH 条目,但是摆脱 bash bultin 命令完成没有运气。
有任何想法吗?
bash - 制表符完成时如何防止bash完成替换字符
我正在为一个与 curl 共享文件上传语义的工具构建一个 bash 完成脚本。
使用 curl,您可以执行以下操作:
curl -F var=@文件
上传文件。
我的应用程序具有类似的语义,我希望能够在按下“@”后显示可能的文件。不幸的是,事实证明这很困难:
因此,如果命令(到目前为止)以:
将显示当前目录中的文件。
问题是如果我真的点击标签来完成,'@'就会消失!
所以看起来 bash 用选项卡 COMPREPLY 替换了整个当前单词。
避免这种情况的唯一方法是这样做:
但是现在选项卡完成看起来很奇怪,至少可以说:
无论如何显示正常的文件选项卡完成(没有'@'前缀)但在点击选项卡时保留'@'?
bash - 如何在不影响其他完成脚本的情况下重置 COMP_WORDBREAKS?
当我实现一个 bash 自动完成功能时,有些东西让我感到困惑,我将把它放在/etc/bash_completion.d/
为了实现某些功能,我想:
从变量中删除分词字符冒号()并在开头$COMP_WORDBREAKS
添加一个斜杠( ) 。/
$COMP_WORDBREAKS
但是,我无法COMP_WORDBREAKS
直接重置,因为该值与其他完成脚本共享。到调用完成函数时,变量COMP_WORDS
数组已经被填充,因此本地更改COMP_WORDBREAKS
无效。
是否有任何解决方案可以更改COMP_WORDBREAKS
一个完成脚本而不影响其他脚本?
arrays - Bash Autocompletion - 如何将此数组传递给 compgen 而不会折叠大量空白?
以下 bash 补全将一组可能的单词(即补全)传递给 compgen。
问题是数组元素中的空格没有被保留,也就是说,由于分词,“foo bar”被视为元素。有没有办法保留空白,以便显示 3 个元素,而不是 4 个?
编辑
basenames
包含文件名,即几乎每个字符(除了 / 和 \0)都是允许的。
编辑 2
-W 标志需要一个单词,例如foo bar foobar
. 将多个元素传递给它(这是${basenames[@]}
会做的)将不起作用。
编辑 3
更改了示例 basenames 数组(因此 thefoo
和foo
fromfoo bar
不会被折叠)。
使用换行符分隔单词有效:
使用\0
不会:
linux - 在 shell 中自定义选项卡完成
这可能比“自定义选项卡完成”有更好的名称,但这是场景:
通常,当我在命令行输入一个命令,然后输入两次 {TAB} 时,我会得到当前目录中所有文件和子目录的列表。例如:
但是,我注意到至少有一个程序以某种方式过滤了这个列表:wine
. 考虑:
它有效地将结果过滤到*.exe
.
认为它可能是某种负责过滤的包装脚本,a did awhich
和file
an 结果wine
不是脚本而是可执行文件。
现在,我不知道这个“过滤器”是否以某种方式编码在程序本身中,或者在默认的 wine 安装期间以其他方式指定,所以我不确定这个问题是否更适合 stackoverflow 或超级用户,所以我交叉手指扔到这里。如果我猜错了,我很抱歉。(另外,我检查了一些类似的问题,但大多数都无关紧要或涉及编辑 shell 配置。)
所以我的问题是,这种“过滤”是如何完成的?提前致谢。
bash - 带有文件名的bash自动完成
我无法使用简单的 bash 自动完成功能。我需要从预定义的目录中自动完成文件名,所以它看起来像这样:
文件来自哪里/var/log/app
。
bash - 带有空格和标点符号的字符串的 Bash 补全
我正在尝试编写一个 bash 完成函数,该函数适用于包含空格和标点符号的字符串,甚至引号也可能在其中。
我从文件中提取这些字符串,sed
因此将它们作为多行文本,其中每一行都包含一个用于完成的目标字符串。但是,我尝试将其传递给 的所有方式compgen -W
,我总是只完成单个单词。
bash - 如何激活 FULL $var 完成
在 Debians BASH 下,我可以执行以下操作:
如您所见,我可以通过按 TAB 来自动完成变量 $foo。
在 Ubuntu (11) 下,行为不一样(我在 bashrc 中激活了“/etc/bash_completion”)。
这是有效的:
这个不工作:
谁能给我一个提示,如何让最后一个工作?
tabs - 目录的macosx lion bash选项卡完成需要很长时间
在工作中,我必须等待 1s~5s 才能在 iterm2 中完成 dir。同样的mba,但在家里它可以立即生效。