対話型シェルでキーを押すたびにbashで機能を実行する

対話型シェルでキーを押すたびにbashで機能を実行する

対話型bashシェルでユーザーがキーを押すたびに関数を実行したいと思います。

bashにzshの自己挿入機能などの機能が組み込まれているかどうか疑問に思います。

あるいは、zshの$ BUFFER変数と同様に、読み取ることができるバッファを含むファイル記述子があるかどうか疑問に思います。

注:私は次の質問について知っています。https://superuser.com/questions/604812/how-to-execute-a-function-in-bash-or-zsh-on-every-letter-being-typed-into-prompt

script擬似端末を使用せずにコマンドに似たものを構築しようとしています。

答え1

たぶん私はあなたを誤解したかもしれませんが、read -n1役に立つかもしれません。

#!/bin/bash
while read -n1 -r v
do
        printf 'You typed "%s".\n' "$v"
done
  • -rバックスラッシュ()は\通常の文字として受け入れられます。
  • ユーザーがスペース、タブ、またはを入力したときに実際に表示されるように調整する必要がありますEnter。 (ここに書かれているようにread返されます$vが、設定されません。)
  • 特殊キー(例F1:)は複数の文字で表示されます。
  • 通常どおり、これらの文字はユーザーが入力したときに表示されます。を使ってドラッグできますstty -echo
  • ここにコードが書かれているので、ループから出るにはCtrl+を使用する必要があります。Cたとえば、独自のロジックを追加できますif [ "$v" = Q ]; then break; fi

関連情報