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
まあ、少し触れた後trap
、tput
そして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
私はこれがどのような悪影響を及ぼすかを調べると思いました。