Bash
按下快捷鍵時如何在shell中執行腳本
按下快捷鍵時,如何在 Shell 中執行腳本。
基本上我需要的是當按下快捷鍵時,腳本應該從文件中讀取並在終端中顯示該內容。
您可以使用內置命令
bind
來映射鍵盤快捷鍵,以便它執行命令/shell 腳本。例子
假設我們想在
pwd
按下F12
鍵時執行命令 , 。$ bind '"\e[24~":"pwd\n"'
F12
現在,當我在提示下按下時,$
:$ pwd /home/saml
確定鍵盤快捷鍵
您可以使用以下技術來確定給定鍵盤快捷鍵的轉義碼。在大多數係統上,按
Ctrl
+V
,鬆開,然後按您想要程式碼的鍵。還有一些其他系統可以使用,M
而不是V
例子
按下
Ctrl
+V
然後釋放兩者Ctrl
,V
最後F12
在終端視窗中按下返回:$ ^[[24~
這個輸出可以解釋如下,
^[
是Esc
關鍵。因此,當我們想使用bind
命令指定這個特定鍵時,我們需要使用 a\e
來表示Esc
鍵,然後是上面的所有其他內容。所以bind
命令看起來像這樣:$ bind '"\e[24~":"....."'
中間執行命令
您還可以使用
bind -x
設置在提示符處鍵入內容時執行命令的鍵盤快捷鍵,這些命令的輸出將被顯示,但您在提示符處鍵入的內容將保持不變。$ bind -x '"\eW":"..."'
**注意:**此方法僅適用於輸出 1 個字元的鍵盤快捷鍵,因此
F12
在這裡不起作用。例子
Alt
讓我們給鍵盤快捷鍵++Shift
起別名W
。$ bind -x '"\eW":"who"'
假設我正在輸入命令
finger
:$ finger
現在我點擊鍵盤快捷鍵
Alt
++Shift
:W
saml tty1 2013-09-01 11:01 (:0) saml pts/0 2013-09-01 11:03 (:0.0) saml pts/1 2013-09-01 11:05 (:0.0) saml pts/2 2013-09-01 11:05 (:0.0) saml pts/5 2013-09-03 22:45 (:0.0) $ finger
正在發生的事情
bind
是執行定義的命令who
,獲取其輸出並將其插入到提示符前面。如果你重複它,你會看到發生了什麼,這是我擊中它 2 次的輸出:saml tty1 2013-09-01 11:01 (:0) saml pts/0 2013-09-01 11:03 (:0.0) saml pts/1 2013-09-01 11:05 (:0.0) saml pts/2 2013-09-01 11:05 (:0.0) saml pts/5 2013-09-03 22:45 (:0.0) saml tty1 2013-09-01 11:01 (:0) saml pts/0 2013-09-01 11:03 (:0.0) saml pts/1 2013-09-01 11:05 (:0.0) saml pts/2 2013-09-01 11:05 (:0.0) saml pts/5 2013-09-03 22:45 (:0.0) $ finger
你的問題
所以一個想法是使用
bind -x
上面的方法並cat
在你的提示符下顯示這個文本文件:$ bind -x '"\eW":"cat someinfo.txt"'
現在,當我執行命令時,我可以看到這個文件,如下所示:
This is text from some multi-line file reminding me how to do some stuff $ finger
文件的輸出
someinfo.txt
顯示在我上面的finger
命令上方。參考