GNU/Linux >> Linux の 問題 >  >> Linux

ショートカットキーが押されたときにシェルでスクリプトを実行するにはどうすればよいですか?

ショートカットキーが押されたときにシェルでスクリプトを実行するにはどうすればよいですか。

基本的に必要なのは、ショートカットキーが押されたときに、スクリプトがファイルから読み取り、そのコンテンツをターミナルに表示することです。

承認された回答:

組み込みコマンドbindを使用できます コマンド/シェルスクリプトを実行するようにキーボードショートカットをマップします。

コマンドpwdを実行するとします。 、 F12を押すと キー。

$ bind '"\e[24~":"pwd\n"'

F12を押すと 私のプロンプトで、$

$ pwd
/home/saml

キーボードショートカットの決定

次の手法を使用して、特定のキーボードショートカットのエスケープコードを決定できます。ほとんどのシステムでは、 Ctrlを押します + V 、リリースしてから、コードの目的のキーを押します。 Mで動作する他のシステムがいくつかあります Vの代わりに

Ctrlを押す + V 次に、両方の Ctrlを放します およびV 最後にF12を押します ターミナルウィンドウでこれを返します:

$ ^[[24~

この出力は、次のように解釈できます。^[ Escです 鍵。したがって、bindを使用してこの特定のキーを指定する場合 \eを使用する必要があるコマンド Escを表す キーの後に上から他のすべてが続きます。したがって、bind コマンドは次のようになります:

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

途中でコマンドを実行する

bind -xを利用することもできます プロンプトで何かを入力しているときにコマンドを実行するキーボードショートカットを設定すると、これらのコマンドの出力が表示されますが、プロンプトで入力した内容はそのまま残ります。

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

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

キーボードショートカットのエイリアスをAltにしましょう +シフト + W

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

コマンドfingerを入力しているとしましょう :

$ finger

次に、キーボードショートカットの Altを押します。 +シフト + 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

あなたの問題

したがって、1つのアイデアは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の上に表示されています 上記のコマンド。

関連:Javaスクリプトを使用してHTLM SelectListを検証しますか?

参考資料

  • bashで、ファンクションキーをコマンドにバインドするにはどうすればよいですか?

Linux
  1. ファイルまたはディレクトリが変更されたときにシェルスクリプトを実行する方法は?

  2. xfce セッション終了時にスクリプトを実行する方法

  3. 起動時にシェルスクリプトを実行する方法

  1. 外部のpythonスクリプトでDjangoシェルでコードを実行するには?

  2. Linuxでシェルスクリプトを実行しようとすると、バイナリファイルを実行できません

  3. シェルで .sh 拡張子のないファイルを実行する方法

  1. シェルスクリプトでスイッチを処理する方法は?

  2. bash スクリプトを実行するには?

  3. USB デバイスを接続するときにシェルスクリプトを実行する方法