回答:
~/.inputrcファイルを編集(または作成)します。という行を追加します
set echo-control-characters Off
これは、GNU Readlineライブラリ(Bashが使用する)に、画面に制御文字を出力(エコー)しないように指示します。この設定は、その後のすべての新しいBashセッション(およびReadlineライブラリを使用する他のユーティリティ)でアクティブになります。
UnixシステムにReadlineライブラリ用のシステム全体の構成ファイル(通常)が付属している場合/etc/inputrcは、個人用構成ファイルにそのファイルを含める必要があることに注意してください。
$include /etc/inputrc
set echo-control-characters Off
もう1つの方法は、システム全体の構成ファイルの個人用コピーを作成してから変更することです。
sleep 180プレスCTRL + C
~/.inputrcまだ存在しない場合は、ファイルを作成するだけで既存の設定が失われる場合があります。私の場合、ctrl + leftとctrl + rightが機能しなくなったことに最初に気付きました。修正は~/.inputrc、この行から始めることでした$include /etc/inputrc。cp /etc/inputrc .inputrc必要に応じて、ただ編集して編集することもできます。
以下を試してください:
stty -echoctl
説明については、StéphaneChazelasのこのすばらしい詳細な投稿をstty参照してください。他の機能についても説明しています。
その変更を永続的なものにしたい場合(そしてbash質問で暗示されているように使用している場合)、jlmgのコメントに.bashrc記載されているように(あなたがすべての対話型シェルに適用されるように)入れるのが最善です。
.bash_profileそのファイルはログインシェルによってのみ解析されるため、すべてのターミナルで機能するわけではないことをおそらく言及する必要があります。.bashrc代わりに配置する必要があるため、すべてのインタラクティブな呼び出しで読み取られます。
^[[A
stty -echoます。もちろん、それは他のすべてのエコーも防止します。これはおそらく、^Cs を非表示にするだけであれば、この答えはノーゴーになります。
^Cが最後にあった場合、私はあなたに同意するかもしれません。ただし、^Cカーソルがあった場所に印刷されるため、コマンド内の任意の場所にある文字のペアを上書きできます。つまり、そのコマンドの一部をコピーして貼り付ける必要がある場合、何かが壊れてしまう可能性があります。また、^C端末を見たときに、コマンドの最後にある場合ほど簡単に認識されません。
通常のエコー(を含むechoctl)を許可し、信号生成文字のエコーを無音にする構成を見つけようとしている場合、以前にそのように動作するのを見たので、それが可能であるはずです...
おそらくそのように見たことがあるでしょう。しかし、このコミットのため、もはや不可能です:
コミットec5b1157f8e819c72fc93aa6d2d5117c08cdc961
N_TTY回線制御でINTR / QUIT / SUSPエコーをオンにします(たとえば、stty echoctlが設定され、ctrl-CがINTRとして設定されている場合、ctrl-Cは「^ C」として表示されます)。
LinuxのみUnixライクなOS(最近私は、Solaris、BSD、およびMac OS X上でこれを確認した)んであるように思わない、このように動作し、私は本当にプログラムの割り込みの優れた視覚的な確認としてこれを欠場しますコンソールまたはxtermで。私も長年使ってきた多くのUnixからこのことを懐かしく覚えています。これをLinuxに導入することは、Unixのような標準の動作にさらに準拠させるための良い方法のように思えます。
Linuxがこれをエコーしなかった方法を懐かしく覚えているなら^C、古い動作を取り戻す唯一の方法はカーネルにパッチを当てることです。最近のバージョンでは、シグナル生成文字のエコーは、drivers / tty / n_tty.cの1215-1218行目にあります。
set echo-control-characters off