问题标签 [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.

0 投票
1 回答
17701 浏览

bash - 在 Bash 脚本中调用“读取”时获取自动完成

在我的 Bash 脚本中,我正在读取用户输入的一些变量read

现在我希望用户在必须输入目录时获得自动完成功能,例如当您在 Bash shell 上时。因此,当他输入目录的第一个字母时,他可以通过按 TAB 来自动完成它。那可能吗?

0 投票
3 回答
2459 浏览

bash - 没有变量扩展的bash选项卡完成?

假设我在我的中定义了这些变量bashrc

当我在命令行上使用变量时,vim $i/edit_TAB它将扩展变量并且命令行上的输入变为vim /www/productX/subdomain_x/cgi-bin/internal/edit_(无论我在哪个站点),然后我TABTAB得到可能的完成。

没关系,功能不是问题。只是每次看到完整路径而不仅仅是变量的值会很烦人。

有没有办法在不影响功能的情况下不扩展命令行上的 bash 变量?
是 bash 完成吗?

期望的结果$i不会扩展到它的值(视觉上)或$i扩展到相对路径而不是完整路径。

0 投票
2 回答
1201 浏览

bash - 带有等号和可枚举标志值的 Bash 补全

我正在尝试构建一个 bash 完成例程,它将建议命令行标志和合适的标志值。例如,在下面的fstcompose命令中,我希望比赛例程首先建议compose_filter=标志,然后建议来自 [alt_sequence, auto, match, sequence] 的可能值。

对于没有一组关联值的任何标志,我希望竞争回退到建议路径或文件的默认模式。

我面临的一个问题是将 = 等号视为单独的标记,并设置为 prev COMP_WORD。是否有一种技术可以在前一个 = 字符之前(包括前一个 = 字符)检测整个标志?或者有没有更好的方法来实现这种带有可枚举值的标志完成?下面是我正在使用的完成例程的示例。

0 投票
1 回答
1010 浏览

macos - OSX 终端波浪号 bash 完成

在我的 Linux 机器上,当我输入

它完成到~/Desktop/

但在 OSX 终端做同样的事情扩展到/Users/username/Desktop/.

这对我来说似乎很烦人,因为它会“跳跃”并且占用更多空间。我能以某种方式得到以前的行为吗?

0 投票
2 回答
5996 浏览

bash - 多级 Bash 完成

我目前有一个 Bash 完成文件,它从脚本的允许命令列表(称为“pbt”)中完成单个参数。这是有效的 Bash 完成文件:

所以如果我打电话

Bash 完成所有允许的命令(asadmin、clean、deploy),这没关系。

现在我想为完成添加一个“第二”级别。例如,如果我输入

它应该完成仅在 asadmin-“环境”中可用的所有选项(我还将在 bash 完成文件中定义),例如pbt asadmin [start-domain|stop-domain]但是如果我输入

它应该完成另一组选项,例如pbt deploy [all|current]. 所以第二个命令的选项应该总是依赖于第一个命令。我怎样才能在完成文件中做到这一点?

0 投票
3 回答
1692 浏览

bash - 如何缓存当前会话的 Bash 完成脚本中使用的变量

在我的 Bash 完成文件中,我正在通过外部脚本查找完成字符串,这需要一些时间(1-2 秒)。由于这些字符串在当前 shell 运行的其余时间大部分保持不变,我想缓存它们,并且当下次触发 Bash 完成时,它应该使用缓存的字符串而不是昂贵的查找,以便它完成当它第二次运行时立即。

要通过完成文件来感受一下,这里是完成文件的重要部分:

如何为 shell 会话的其余部分缓存 getdeployablefiles 的输出?我在这里需要某种全局变量,或者其他一些技巧。

解决方案:

只需要制作goals非本地并询问它是否已设置。最终脚本:

0 投票
2 回答
5879 浏览

bash - 带有 bash 大括号扩展的 cp 复制命令

在 bash 提示符下,我可以执行此复制

cp file.txt test1.txt

但是如果我尝试将 file.txt 复制到这样的几个文件中

我收到错误

cp:目标“test4.txt”不是目录

0 投票
1 回答
449 浏览

bash - 使用现有完成功能的多级 Bash 完成?

我创建了一个简单的 bash 函数:http ://shr.im/ionyse-notify

我想添加一个小完成文件。

我发现了两个有趣的功能:

  • _known_hosts
  • _user_at_host

我怎么能说对于第一个参数,它应该使用 _known_hosts 完成,第二个使用 _user_at_host

这是我所拥有的,但它不起作用。怎么了 ?

0 投票
4 回答
2485 浏览

git - "${1-}" 与 "$1"

git bash 完成的代码,特别是 function __gitcomp,使用参数扩展,如"${1-}". 这似乎类似于"$1"。有什么区别?

另外:这在bash手册中的哪里记录?

0 投票
1 回答
270 浏览

bash - 为自定义命令前置的所有命令保留 Bash 完成

我有一个允许在后台执行 Bash 进程的脚本,我称之为“backy”。我想在后台运行的程序我这样调用:

现在的问题是,long-running-script如果我预先添加另一个脚本,我会丢失 Bash 完成。

我想编写一个 Bash 完成文件,它不仅保留 Bash 完成long-running-script及其所有参数,还保留我想用 backy 调用的所有其他脚本。

我对 Bash 完成有一些经验,但我只是缺少可以插入到我的 Bash 完成脚本中的命令,以便它完成要调用的脚本的完成。有任何想法吗?

到目前为止我的完成:

编辑 - 解决方案:

感谢 Lekensteyn,我将现有 bash 完成脚本的内容替换为以下行: