问题标签 [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 回答
1360 浏览

bash - 如何打击完整的三部分模式

我有一个命令行工具,它以三部分形式接受参数:

我有一组有效值first,一组有效值second,一组有效值third。我想使用 Bash 完整功能来完成选项值的每个部分,如下例所示:

我有这个代码:

第一个子句效果很好;那里没什么特别的。但是第二个子句没有给我任何选择或完成。

我将第二个子句替换为以下内容(即,我${cur}在调用中替换为空字符串COMPREPLY):

我在命令行上获得了所有选项的列表,但没有完成。

我认为可能与单词列表有一些不好的交互${cur}COMPREPLY所以我再次更改了第二个子句,添加了一个与当前单词的第一部分匹配的前缀:

这没有多大帮助。${cur}仍然在命令COMPREPLY中,我再次没有选项或完成。相反,使用空字符串,我得到了完整的选项(不仅仅是当前部分)。但是,按 Tab 会删除键入的内容。

当然,我对第三部分也有同样的问题。

  1. 如何让 Bash 部分地完成当前单词?
  2. 在选择一个选项之前,如何让 Bash 不附加分隔符?

这类似于另一个 Bash 完整问题,但我不想列出所有可能的值排列,并且它们没有格式化为文件名(不确定文件名模式是否有所不同)。

谢谢您的帮助!
--ap

0 投票
2 回答
107 浏览

bash - 在这种情况下,有没有办法将 Tab 按下以 bash 完成?

有一种方法可以像这样在 bash 中运行命令:

我需要对 bash 完成进行单元测试,如果有办法以这种方式将按下传递给 Tab 以完成命令,我很好奇,如下所示:

那可能吗?或者,也许您可​​以建议另一种对 bash 完成进行单元测试的方法?

0 投票
1 回答
342 浏览

bash - 为什么 compgen 需要在这里转义?

当我在双引号内使用单引号时,有一些有趣的行为compgen -W(看看最后一个参数和输出如何因命令而异):

为什么第三个命令需要 a \before a'才能获得完成选项,而第一个命令不需要?在调试我的完成脚本时,我花了几个小时才发现这个事实。这是一个错误,还是有任何解释为什么它必须以这种方式工作?

0 投票
1 回答
64 浏览

bash - 如何获得双引号作为完成选项?

我试过了

但在命令行中我得到\"了。是否可以只使用一个双引号作为完成选项?

0 投票
1 回答
2709 浏览

macos - 如何使 bash 选项卡完成像 windows 的 cmd.exe 一样工作?

假设我有一个文件夹,其中的文件名称如下:

  • log_1.log
  • log_2.log
  • log_2.gz

我想在 log_2.gz 上执行一些操作,比如说移动。

在 Windows cmd.exe 中,我习惯于执行以下步骤:

  1. 类型move(仅此而已)
  2. tabtabtab遍历选项卡完成选项,直到我到达log_2.gz
  3. 类型destination

但是在 bash shell 中(在 Mac OS X 10.8.3 上的 iTerm2 中),我必须这样做:

  1. 类型mv l
  2. tab它带我去log_并发出恼人的哔哔声
  3. 类型2
  4. tab它带我去log_2.并发出恼人的哔哔声
  5. 类型g
  6. tab它带我去log_2.gz并且令人满意地沉默
  7. 类型destination

如您所见,即使您知道目标文件名,bash 也需要更多步骤,但想象一下您不确定文件名中的确切内容(可能ls太长)的场景。在几次 + 输入后,我经常发现自己处于这种情况,tab并且被迫放弃命令,ls再次运行,复制文件名,甚至可能运行 apwd与文件夹连接,然后从我离开的地方继续。这很烦人。

0 投票
1 回答
372 浏览

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 补全功能?

0 投票
2 回答
546 浏览

bash - 命令包装器和完成

我经常写这样的东西:

模板:<comand> <name>-<version> <path>

但相反,我想写这个:

模板:<alias> <version>

我可以使用别名在

我还希望使用tabkey 适当完成以正常工作。我如何编程的完成来实现这一点?

0 投票
1 回答
399 浏览

bash - 向上翻页在 vim 中的 conqueterm 中的 bash 中不起作用

我今天早上刚开始使用 ConqueTerm for Vim。它太酷了; 但是,它并没有像我希望的那样工作。我的 .bashrc 中有以下设置

这允许我在 bash 中键入命令时按 PageUp 和 PageDown 来自动搜索命令历史记录。

但是,它不适用于 vim 中的 ConqueTerm。制表符补全、颜色等都可以,但是当我按向上翻页时,它实际上是向上翻页

我尝试将以下几行放入我的 vimrc 中,但这不起作用。

有没有什么办法解决这一问题?

0 投票
1 回答
75 浏览

bash - 将帮助样式信息侵入完成方法

我有一个方法可以解释它在没有选项的情况下运行时的用法:

最近,我一直在空闲时间写一个 tab-completion 脚本:

到目前为止,这对于使用适当的数据库和文件完成第一个和第二个条目非常有用。但是,我也一直在尝试添加一种方法来简单地打印出“使用”信息,如果您在文件之后的任何位置双击标签。所以,如果我把它放到控制台中:

我希望完成以提醒用户他们还需要什么,而不会破坏他们已经输入的内容。我的最新方法是这样的:

几乎可以做到,但最终无法在最新行上重新显示用户输入。有没有办法强制这最后一步完成?

0 投票
1 回答
69 浏览

bash - 打印所有带有路径名的命令

我正在尝试在可从 bash 访问的系统上打印所有程序文件名。(例如路径)我一直在使用'which $(compgen -c)',但这似乎效率不高。有没有更好的办法?