在没有键绑定的情况下执行 readline 函数?

eri*_*kcw 31 shell bash readline inputrc

我只是在阅读 readline 手册页,发现了一堆我不知道的很棒的命令。但是,有几个没有默认的键绑定。有没有办法从 shell 执行未绑定的命令?

我不是在问如何在 ~/.inputrc 中绑定命令,而是如何从 shell 或 bash 脚本中“一次性”执行它。

例如,“转储变量”命令。是否有一些命令我可以提供“转储变量”作为参数来执行它?

spa*_*cvs 13

我相信您正在寻找的是bind命令本身。根据man builtin信息运行bind <readline-command>允许您一次性运行,但是,我无法让它像手册所说的那样工作......它一直使密钥对我不起作用;你的旅费可能会改变。我确实找到了以下可能对您有用的命令。

bind -p # Equivalent to dump-functions [machine readable]
bind -P # Equivalent to dump-functions [human readable]

bind -s # Equivalent to dump-macros    [machine readable]
bind -S # Equivalent to dump-macros    [human readable]

bind -v # Equivalent to dump-variables [machine readable]
bind -V # Equivalent to dump-variables [human readable]
Run Code Online (Sandbox Code Playgroud)

编辑注意 我想指出它不像手册所说的那样工作是多么烦人,因为如果您输入bind然后按 Tab 键进行自动完成,它会显示所有命令。

  • 重新直接调用 readline 函数:我认为手册实际上并没有声称您可以这样做;如果您指的是`bind readline-command` 的语法形式:我怀疑`command` 代表一个_定义_(映射)行,而不是一个可直接调用的readline _function_。自动完成是在_某些_平台(例如,Fedora 20)上显式预先配置的一个很好的功能,但_不是在许多其他平台上_;它的存在并不意味着您可以直接调用 readline 函数 - 它是一个相当“愚蠢”的命令完成规范:完成适用于提供给 `bind` 的 _any_ 参数。 (5认同)
  • +1 用于列出有效函数/宏/变量的命令;值得为 _shell 命令_添加“-X”(通过“-x”定义)。 (2认同)