[解決済み] bashで、ファンクションキーをコマンドにバインドするにはどうしたらいいですか?
質問
例 私は
F12
キーをコマンド
echo "foobar"
を押すたびに
F12
を押すたびに、メッセージ "foobar" が画面に表示されるようにします。 理想的には、ビルトインだけでなく、任意のシェルコマンドを使用することができます。 どのようにこれを行うのでしょうか?
どのように解決するのですか?
キーから発せられる文字列は
Ctrl
-
v
をコマンドラインで実行し、関心のあるキーを押します。私のシステムでは
F12
に対して、私は
^[[24~
. は
^[
は
エスケープ
. 端末や端末エミュレータの種類によっては、同じキーに対して異なるコードを出力することができます。
Bash プロンプトで次のようなコマンドを入力すると、キーマクロを有効にすることができるので、試してみることができます。
bind '"\e[24~":"foobar"'
これで F12 を押すと、コマンド ライン上に "foobar" が表示され、さらに編集できるようになります。すぐにコマンドを入力するキーストロークが必要な場合は、改行を追加することができます。
bind '"\e[24~":"pwd\n"'
これで F12 を押すことなく、カレントディレクトリが表示されるようになりました。 Enter . もし、すでに何かを入力している行で、自動的に実行されるこれを使ったらどうでしょうか?面倒なことになるかもしれない。しかし、マクロの一部として行をクリアすることができます。
bind '"\e[24~":"\C-k \C-upwd\n"'
スペースがあることで Ctrl - u は、ベルが鳴らないように削除するものがあります。
マクロが思い通りに動作するようになったら、マクロを
~/.inputrc
ファイルに追加することで永続化できます。このとき
bind
コマンドも一重引用符の外側のセットも必要ありません。
"\e[24~":"\C-k \C-upwd\n"
編集します。
また、現在のコマンドラインを乱すことなく何かを実行するキーバインディングを作成することができます。
bind -x '"\eW":"who"'
そして、例えばユーザー名を必要とするコマンドを入力している時に、ログインしているユーザー名を知る必要がある場合、そのユーザー名に対して
Alt
-
Shift
-
W
の出力と
who
の出力が表示され、プロンプトはあなたの部分的なコマンドをそのままに、カーソルが行の同じ位置にある状態で再発行されます。
残念ながら、これは次のようなキーでは正しく動作しません。 F12 のように、2文字以上を出力するキーでは正しく動作しません。場合によっては、これを回避することができます。
コマンド (
who
は、プログラム、スクリプト、関数などの実行可能ファイルです。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] シェルコマンドの実行と出力のキャプチャ
-
[解決済み] シェルコマンドを実行しながらエコーする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] IFS=$' \n' の正確な意味は何ですか?
-
[解決済み] bash に次の行に進むように指示する方法
-
[解決済み] bashで変数に改行を埋め込もうとする [重複].
-
[解決済み] Bashで$PATH変数からパスを削除する最もエレガントな方法は何ですか?
-
[解決済み] Bashでファイルを転置する効率的な方法
-
[解決済み] ログファイルやコンソールへの出力の書き出し
-
[解決済み] Bash で +x を表示させずに設定する
-
[解決済み] 指定された時間/日付まで眠る
-
[解決済み] ディレクトリ内のファイルに対して、ファイル名のみ(パスなし)をエコーします。
-
[解決済み] BashやShellスクリプトで関数の前方宣言を行うには?