ショートカットを押すとシェルでスクリプトを実行する方法

ショートカットを押すとシェルでスクリプトを実行する方法

ショートカットを押したときにシェルでスクリプトを実行する方法。

本質的に私に必要なのは、ショートカットキーを押すとスクリプトがファイルから読み取ってその内容を端末に表示する必要があることです。

ベストアンサー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使用する必要があります。したがって、コマンドは次のようになります。\eEscbind

$ bind '"\e[24~":"....."'

コマンドの中間実行

またbind -x、プロンプトに入力すると、キーボードショートカット設定を使用してコマンドを実行でき、そのコマンドの出力が表示されますが、プロンプトに入力した内容は変更されません。

$ bind -x '"\eW":"..."'

メモ:この方法は、1文字を出力するキーボードショートカットでのみ機能するため、F12ここでは機能しません。

はい

キーボードショートカットの名前にAlt++Shiftを付けますW

$ bind -x '"\eW":"who"'

次のコマンドを入力するとしますfinger

$ finger

Alt今すぐキーボードショートカット++を押しますShiftW

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

引用する

おすすめ記事