问题标签 [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 - 如何打击完整的三部分模式
我有一个命令行工具,它以三部分形式接受参数:
我有一组有效值first
,一组有效值second
,一组有效值third
。我想使用 Bash 完整功能来完成选项值的每个部分,如下例所示:
我有这个代码:
第一个子句效果很好;那里没什么特别的。但是第二个子句没有给我任何选择或完成。
我将第二个子句替换为以下内容(即,我${cur}
在调用中替换为空字符串COMPREPLY
):
我在命令行上获得了所有选项的列表,但没有完成。
我认为可能与单词列表有一些不好的交互${cur}
,COMPREPLY
所以我再次更改了第二个子句,添加了一个与当前单词的第一部分匹配的前缀:
这没有多大帮助。${cur}
仍然在命令COMPREPLY
中,我再次没有选项或完成。相反,使用空字符串,我得到了完整的选项(不仅仅是当前部分)。但是,按 Tab 会删除键入的内容。
当然,我对第三部分也有同样的问题。
- 如何让 Bash 部分地完成当前单词?
- 在选择一个选项之前,如何让 Bash 不附加分隔符?
这类似于另一个 Bash 完整问题,但我不想列出所有可能的值排列,并且它们没有格式化为文件名(不确定文件名模式是否有所不同)。
谢谢您的帮助!
--ap
bash - 在这种情况下,有没有办法将 Tab 按下以 bash 完成?
有一种方法可以像这样在 bash 中运行命令:
我需要对 bash 完成进行单元测试,如果有办法以这种方式将按下传递给 Tab 以完成命令,我很好奇,如下所示:
那可能吗?或者,也许您可以建议另一种对 bash 完成进行单元测试的方法?
bash - 为什么 compgen 需要在这里转义?
当我在双引号内使用单引号时,有一些有趣的行为compgen -W
(看看最后一个参数和输出如何因命令而异):
为什么第三个命令需要 a \
before a'
才能获得完成选项,而第一个命令不需要?在调试我的完成脚本时,我花了几个小时才发现这个事实。这是一个错误,还是有任何解释为什么它必须以这种方式工作?
bash - 如何获得双引号作为完成选项?
我试过了
但在命令行中我得到\"
了。是否可以只使用一个双引号作为完成选项?
macos - 如何使 bash 选项卡完成像 windows 的 cmd.exe 一样工作?
假设我有一个文件夹,其中的文件名称如下:
log_1.log
log_2.log
log_2.gz
我想在 log_2.gz 上执行一些操作,比如说移动。
在 Windows cmd.exe 中,我习惯于执行以下步骤:
- 类型
move
(仅此而已) - tabtabtab遍历选项卡完成选项,直到我到达
log_2.gz
- 类型
destination
但是在 bash shell 中(在 Mac OS X 10.8.3 上的 iTerm2 中),我必须这样做:
- 类型
mv l
- tab它带我去
log_
并发出恼人的哔哔声 - 类型
2
- tab它带我去
log_2.
并发出恼人的哔哔声 - 类型
g
- tab它带我去
log_2.gz
并且令人满意地沉默 - 类型
destination
如您所见,即使您知道目标文件名,bash 也需要更多步骤,但想象一下您不确定文件名中的确切内容(可能ls
太长)的场景。在几次 + 输入后,我经常发现自己处于这种情况,tab并且被迫放弃命令,ls
再次运行,复制文件名,甚至可能运行 apwd
与文件夹连接,然后从我离开的地方继续。这很烦人。
haskell - cmdArgs bash 完成
Haskell的cmdArgs 包提供命令选项解析。
基于文档http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/System-Console-CmdArgs-Explicit.html#g:4及其来源http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/System-Console-CmdArgs-Explicit.html#g:4 /hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/src/System-Console-CmdArgs-Explicit-Complete.html#Complete
它似乎能够支持 bash 完成,但我无法使其与解析器的隐式版本一起工作。http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/System-Console-CmdArgs-Implicit.html
有没有人有这样做的例子?
编辑添加了一个更好的例子
如果我有程序
with 解析以下选项
如何使用 cmdArgs 的 bash 补全功能?
bash - 命令包装器和完成
我经常写这样的东西:
模板:<comand> <name>-<version> <path>
但相反,我想写这个:
模板:<alias> <version>
我可以使用别名在bash中轻松完成吗?
我还希望使用tabkey 适当完成以正常工作。我如何编程bash的完成来实现这一点?
bash - 向上翻页在 vim 中的 conqueterm 中的 bash 中不起作用
我今天早上刚开始使用 ConqueTerm for Vim。它太酷了; 但是,它并没有像我希望的那样工作。我的 .bashrc 中有以下设置
这允许我在 bash 中键入命令时按 PageUp 和 PageDown 来自动搜索命令历史记录。
但是,它不适用于 vim 中的 ConqueTerm。制表符补全、颜色等都可以,但是当我按向上翻页时,它实际上是向上翻页
我尝试将以下几行放入我的 vimrc 中,但这不起作用。
有没有什么办法解决这一问题?
bash - 将帮助样式信息侵入完成方法
我有一个方法可以解释它在没有选项的情况下运行时的用法:
最近,我一直在空闲时间写一个 tab-completion 脚本:
到目前为止,这对于使用适当的数据库和文件完成第一个和第二个条目非常有用。但是,我也一直在尝试添加一种方法来简单地打印出“使用”信息,如果您在文件之后的任何位置双击标签。所以,如果我把它放到控制台中:
我希望完成以提醒用户他们还需要什么,而不会破坏他们已经输入的内容。我的最新方法是这样的:
这几乎可以做到,但最终无法在最新行上重新显示用户输入。有没有办法强制这最后一步完成?
bash - 打印所有带有路径名的命令
我正在尝试在可从 bash 访问的系统上打印所有程序文件名。(例如路径)我一直在使用'which $(compgen -c)',但这似乎效率不高。有没有更好的办法?