如果按 Super_L+Space,为什么 bash 会列出 /etc/hosts 的有效内容?

Tur*_*saz 3 bash keyboard-shortcuts hosts

标题几乎总结了它。我在/etc/hosts.

该文件类似于:

# some comment
127.0.0.1  localhost foo bar
1.2.3.4    baz
::1        localhost ip6-loopback ip6-localhost
Run Code Online (Sandbox Code Playgroud)

我今天在输入 bash 时不小心按下了 Super_L+Space,它立即向我展示了一些格式类似于 输出的内容ls,但列出了该文件ip4-addresses之外的所有功能内容(不是注释),如下所示:

me@host$
::1   localhost      foo             bar
baz   ip6-loopback   ip6-localhost
me@host$ s
Run Code Online (Sandbox Code Playgroud)

s顺便说一下,最后一个提示不是错字:主机列表之后的下一个提示看起来完全一样。

我可以轻松重现该行为。

到目前为止,我已经研究了 KDE Plasma 和终端模拟器的键盘快捷键,但没有绑定到 Super_L+Space 的操作。我的.bashrc也不包含任何相关内容。如果我在除终端仿真器之外的任何其他窗口中按下组合键,则什么也不会发生。

bash 历史记录甚至不包含有关该事件的条目。

这里发生了什么?

Ark*_*zyk 5

这是 2012 年提交5ba34471中引入的 Konsole 特定功能。

参考:这个超级用户问题


链接的超级用户问题中最初描述的机制的简短摘要如下: Super_L+letter在 Konsole 中发送^X@s<letter>。第一部分通过 readline 键绑定“翻译”为“可能的主机名完成”。(bind -p显示"\C-x@": possible-hostname-completions)。剩余部分 ( "s<letter>") 将在下一个提示中打印。