Bash
如果我按 Super_L+Space,為什麼 bash 會列出 /etc/hosts 的有效內容?
標題幾乎概括了它。我有一些(最少的)內容
/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,它立即向我顯示了一些類似於 輸出的格式,但列出了除
ls
ip4-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>"
) 將在下一個提示符下列印。