问题标签 [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 脚本中,我正在读取用户输入的一些变量read
:
现在我希望用户在必须输入目录时获得自动完成功能,例如当您在 Bash shell 上时。因此,当他输入目录的第一个字母时,他可以通过按 TAB 来自动完成它。那可能吗?
bash - 没有变量扩展的bash选项卡完成?
假设我在我的中定义了这些变量bashrc
:
当我在命令行上使用变量时,vim $i/edit_
TAB它将扩展变量并且命令行上的输入变为vim /www/productX/subdomain_x/cgi-bin/internal/edit_
(无论我在哪个站点),然后我TABTAB得到可能的完成。
没关系,功能不是问题。只是每次看到完整路径而不仅仅是变量的值会很烦人。
有没有办法在不影响功能的情况下不扩展命令行上的 bash 变量?
是 bash 完成吗?
期望的结果$i
不会扩展到它的值(视觉上)或$i
扩展到相对路径而不是完整路径。
bash - 带有等号和可枚举标志值的 Bash 补全
我正在尝试构建一个 bash 完成例程,它将建议命令行标志和合适的标志值。例如,在下面的fstcompose命令中,我希望比赛例程首先建议compose_filter=标志,然后建议来自 [alt_sequence, auto, match, sequence] 的可能值。
对于没有一组关联值的任何标志,我希望竞争回退到建议路径或文件的默认模式。
我面临的一个问题是将 = 等号视为单独的标记,并设置为 prev COMP_WORD。是否有一种技术可以在前一个 = 字符之前(包括前一个 = 字符)检测整个标志?或者有没有更好的方法来实现这种带有可枚举值的标志完成?下面是我正在使用的完成例程的示例。
macos - OSX 终端波浪号 bash 完成
在我的 Linux 机器上,当我输入
它完成到~/Desktop/
。
但在 OSX 终端做同样的事情扩展到/Users/username/Desktop/
.
这对我来说似乎很烦人,因为它会“跳跃”并且占用更多空间。我能以某种方式得到以前的行为吗?
bash - 多级 Bash 完成
我目前有一个 Bash 完成文件,它从脚本的允许命令列表(称为“pbt”)中完成单个参数。这是有效的 Bash 完成文件:
所以如果我打电话
Bash 完成所有允许的命令(asadmin、clean、deploy),这没关系。
现在我想为完成添加一个“第二”级别。例如,如果我输入
它应该完成仅在 asadmin-“环境”中可用的所有选项(我还将在 bash 完成文件中定义),例如pbt asadmin [start-domain|stop-domain]
但是如果我输入
它应该完成另一组选项,例如pbt deploy [all|current]
. 所以第二个命令的选项应该总是依赖于第一个命令。我怎样才能在完成文件中做到这一点?
bash - 如何缓存当前会话的 Bash 完成脚本中使用的变量
在我的 Bash 完成文件中,我正在通过外部脚本查找完成字符串,这需要一些时间(1-2 秒)。由于这些字符串在当前 shell 运行的其余时间大部分保持不变,我想缓存它们,并且当下次触发 Bash 完成时,它应该使用缓存的字符串而不是昂贵的查找,以便它完成当它第二次运行时立即。
要通过完成文件来感受一下,这里是完成文件的重要部分:
如何为 shell 会话的其余部分缓存 getdeployablefiles 的输出?我在这里需要某种全局变量,或者其他一些技巧。
解决方案:
只需要制作goals
非本地并询问它是否已设置。最终脚本:
bash - 带有 bash 大括号扩展的 cp 复制命令
在 bash 提示符下,我可以执行此复制
cp file.txt test1.txt
但是如果我尝试将 file.txt 复制到这样的几个文件中
我收到错误
cp:目标“test4.txt”不是目录
bash - 使用现有完成功能的多级 Bash 完成?
我创建了一个简单的 bash 函数:http ://shr.im/ionyse-notify
我想添加一个小完成文件。
我发现了两个有趣的功能:
- _known_hosts
- _user_at_host
我怎么能说对于第一个参数,它应该使用 _known_hosts 完成,第二个使用 _user_at_host
这是我所拥有的,但它不起作用。怎么了 ?
git - "${1-}" 与 "$1"
git bash 完成的代码,特别是 function __gitcomp
,使用参数扩展,如"${1-}"
. 这似乎类似于"$1"
。有什么区别?
另外:这在bash
手册中的哪里记录?
bash - 为自定义命令前置的所有命令保留 Bash 完成
我有一个允许在后台执行 Bash 进程的脚本,我称之为“backy”。我想在后台运行的程序我这样调用:
现在的问题是,long-running-script
如果我预先添加另一个脚本,我会丢失 Bash 完成。
我想编写一个 Bash 完成文件,它不仅保留 Bash 完成long-running-script
及其所有参数,还保留我想用 backy 调用的所有其他脚本。
我对 Bash 完成有一些经验,但我只是缺少可以插入到我的 Bash 完成脚本中的命令,以便它完成要调用的脚本的完成。有任何想法吗?
到目前为止我的完成:
编辑 - 解决方案:
感谢 Lekensteyn,我将现有 bash 完成脚本的内容替换为以下行: