Bash
編輯命令行時展開 shell 變數
如果我在提示符下寫入
ls bla.*
,然後=
在游標仍在bla.*
命令行部分時按下,bla.*
則會列印匹配的文件列表。如果我按*
,該詞將替換該列表。參考變數而不是shell glob模式是否有類似的可能?
換句話說,我正在尋找可以列印當我在命令行中游標打開
$THISVARIABLE
時按下時的值和/或在我按下時替換它的東西。some_key``$THISVARIABLE``another_key
重要的細節,我
set editing-mode vi
在我的~/.inputrc
.
如果shell 處於 Emacs 編輯模式,您可以
shell-expand-line
通過按Meta
+Ctrl+e
(在我的系統Meta
上是Esc
)來呼叫 Readline 功能。bash
插圖:
$ echo $PATH
如果我現在按
Meta
+Ctrl+e
,shell 會將整行替換為$ echo /usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
這也將擴展命令替換,因此可能會執行擴展所需的部分命令行。這也意味著未完成的事情
$(
會產生語法錯誤。這不會擴展外殼通配模式。
如果您想在 Vi 編輯模式下使用它,那麼您需要將
shell-expand-line
函式顯式綁定到鍵序列,因為預設情況下它沒有綁定。例如,要將其綁定到Ctrl+e
,請使用bind '"\C-e": shell-expand-line'
使用與 Emacs 模式相同的鍵序列顯然會出現問題,因為
Esc
在 Vi 模式下具有特殊功能。