ショートカットを押したときにシェルでスクリプトを実行する方法。
本質的に私に必要なのは、ショートカットキーを押すとスクリプトがファイルから読み取ってその内容を端末に表示する必要があることです。
答え1
組み込みコマンドを使用してbind
キーボードショートカットをマップすることで、コマンド/シェルスクリプトを実行できます。
はい
pwd
キーを押したときにコマンドを実行したいとしますF12。
$ bind '"\e[24~":"pwd\n"'
F12プロンプトを押すと次のようになります$
。
$ pwd
/home/saml
キーボードショートカットの決定
次の技術を使用して、特定のキーボードショートカットのエスケープコードを確認できます。ほとんどのシステムでは、Ctrl+を押してV手を離し、コードを希望するキーを押します。Mこれを置き換えることができる他のシステムがあります。V
はい
Ctrl+を押しVてから両方をオフにCtrlし、V最後に F12ターミナルウィンドウを押すと、次のものが返されます。
$ ^[[24~
この出力は次のように解釈できます。これは重要^[
です。Escしたがって、コマンドを使用してこの特定のキーを指定するには、そのキーにaを使用してから上記の他のすべての項目をbind
使用する必要があります。したがって、コマンドは次のようになります。\e
Escbind
$ 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
出力を取得してプロンプトの前に挿入することです。繰り返すと、何が起こるのかがわかります。ダブルクリックすると、次のような結果が出力されます。
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
したがって、1つのアイデアは上記の方法を使用し、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
。