bash Ctrl + Cをオーバーライドして魚のようにする方法

bash Ctrl + Cをオーバーライドして魚のようにする方法

fish私はbashが私が好むシェルであるにもかかわらず、リモートコンピュータでより頻繁に使用されていることを発見しました。 Fish には Ctrl+C を押すと、次のようなことが発生する小さいながらもクールな機能があります。

if command running
   send SIGINT
else
   clear line (don't start a new one)

bashでこれを行うことができれば幸いです。

Ctrl + Cを押した後にSIGINTを送信するように設定されたプログラムでSIGINTをキャプチャすることが含まれると思いますsttyが、上記の擬似コードを実行する方法が見つかりませんでした。

私が試したこと

trap 'tput dl1' SIGINT

行を消去しますが、新しい行/プロンプトを続けます(空のプロンプトでEnterキーを押すのと同じ)。ただ履歴を閲覧していない場合:\

答え1

まあ、少し触れた後traptputそしてterminfo、私の考えでは、私が見つけたと思います(他の質問ありがとうございます)。

1行しかない標準コマンドラインの場合、例:bash-4.3$ echo something here

trap 'tput dl1; tput cuu1' SIGINT私に必要なものです。

バッシュは次のことを行います。

  • この行を削除
  • カーソルを上に移動

最後に新しい行を始めます(それでカーソルを上に移動)。

たとえば、コマンドラインに複数の行がある場合

name@host /path/to/some/dir
$ echo something here

tput dl1; tput cuu1その後、余分な行を削除するには、別の行を追加する必要があります -->trap 'tput dl1; tput cuu1; tput dl1; tput cuu1' SIGINT

私はこれがどのような悪影響を及ぼすかを調べると思いました。

関連情報