Bash

如果我按 Super_L+Space,為什麼 bash 會列出 /etc/hosts 的有效內容?

  • February 28, 2021

標題幾乎概括了它。我有一些(最少的)內容/etc/hosts

該文件類似於:

# some comment
127.0.0.1  localhost foo bar
1.2.3.4    baz
::1        localhost ip6-loopback ip6-localhost

我今天在輸入 bash 時不小心按了 Super_L+Space,它立即向我顯示了一些類似於 輸出的格式,但列出了lsip4-addresses 之外的該文件的所有功能內容(不是註釋),如下所示:

me@host$
::1   localhost      foo             bar
baz   ip6-loopback   ip6-localhost
me@host$ s

順便說s一句,最後一個提示不是錯字:主機列表後的下一個提示看起來完全一樣。

我可以輕鬆地重現該行為。

到目前為止,我已經查看了 KDE Plasma 和終端仿真器的鍵盤快捷鍵,但沒有綁定到 Super_L+Space 的操作。我.bashrc的也不包含任何相關內容。如果我在終端仿真器以外的任何其他視窗中按下該組合,則不會發生任何事情。

bash 歷史甚至不包含有關該事件的條目。

這裡發生了什麼?

這是2012 年送出5ba34471中引入的特定於 Konsole 的功能。

參考:這個超級使用者問題


連結的超級使用者問題中最初描述的機制的簡短摘要如下: Super_L+letter在 Konsole 中發送^X@s<letter>。第一部分通過 readline 鍵綁定“翻譯”成“可能的主機名完成”。(bind -p顯示"\C-x@": possible-hostname-completions)。其餘部分 ( "s<letter>") 將在下一個提示符下列印。

引用自:https://unix.stackexchange.com/questions/636763