Antworten:
Bearbeiten (oder erstellen) Sie Ihre ~/.inputrcDatei. Fügen Sie eine Zeile hinzu, in der es heißt
set echo-control-characters Off
Dadurch wird die GNU Readline-Bibliothek (die Bash verwendet) angewiesen, keine Steuerzeichen auf dem Bildschirm auszugeben (zurückzugeben). Die Einstellung ist danach in allen neuen Bash-Sitzungen (und in jedem anderen Dienstprogramm, das die Readline-Bibliothek verwendet) aktiv.
Beachten Sie, dass Ihre persönliche Konfigurationsdatei diese Datei enthalten muss , wenn Ihr Unix-System (normalerweise /etc/inputrc) eine systemweite Konfigurationsdatei für die Readline-Bibliothek enthält:
$include /etc/inputrc
set echo-control-characters Off
Eine andere Alternative besteht darin, eine persönliche Kopie der systemweiten Konfigurationsdatei zu erstellen und diese anschließend zu ändern.
sleep 180und drücke STRG + C
~/.inputrcdies noch nicht der Fall ist, können beim Erstellen der Datei möglicherweise einige vorhandene Einstellungen verloren gehen. In meinem Fall ist mir zum ersten Mal aufgefallen, dass Strg + Links und Strg + Rechts nicht mehr funktionieren. Die Lösung bestand darin, ~/.inputrcmit dieser Zeile zu beginnen $include /etc/inputrc. Es ist auch möglich, einfach cp /etc/inputrc .inputrcund nach Wunsch zu bearbeiten.
Versuche Folgendes:
stty -echoctl
Eine Erklärung finden Sie in diesem großartigen und detaillierten Beitrag von Stéphane Chazelas, in dem auch einige andere sttyFunktionen erläutert werden .
Wenn Sie diese Änderung dauerhaft machen möchten (und Sie verwenden, bashwie in Ihrer Frage impliziert), ist es am besten, sie .bashrcwie von jlmg in den Kommentaren vermerkt einzutragen (dies gilt also für alle interaktiven Shells).
.bash_profileda diese Datei nur von Login-Shells analysiert wird. Es sollte stattdessen eingefügt .bashrcwerden, damit es von allen interaktiven Aufrufen gelesen wird.
^[[A
stty -echoauch. Das wird natürlich auch das Echo von allem anderen verhindern, was diese Antwort wahrscheinlich zu einem No-Go macht, wenn Sie nur das ^Cs verstecken wollten .
^Cimmer am Ende war könnte ich dir zustimmen. Aber das ^Cwird gedruckt, wo immer sich der Cursor befand, wodurch ein Zeichenpaar an einer beliebigen Stelle im Befehl überschrieben werden kann. Das heißt, wenn Sie Teile dieses Befehls kopieren und einfügen müssen, wird möglicherweise etwas beschädigt. Und das ^Cist beim Blick über das Terminal nicht so leicht zu erkennen wie am Ende des Befehls.
Wenn Sie versuchen, eine Konfiguration zu finden, die normales Echo (einschließlich echoctl) ermöglicht und nur das Echo signalerzeugender Zeichen stummschaltet, und Sie sicher sind, dass dies möglich sein sollte, da Sie zuvor gesehen haben, dass es so funktioniert ...
Sie haben es wahrscheinlich so gesehen. Aber es ist nicht mehr möglich, wegen dieses Commits :
Festschreiben von ec5b1157f8e819c72fc93aa6d2d5117c08cdc961
Aktivieren Sie das Echo INTR / QUIT / SUSP in der Zeilendisziplin N_TTY (z. B. wird Strg-C als "^ C" angezeigt, wenn Stty-Echoctl und Strg-C als INTR festgelegt sind).
Linux scheint das einzige Unix-ähnliche Betriebssystem zu sein (das ich kürzlich unter Solaris, BSD und Mac OS X überprüft habe), das sich nicht so verhält, und ich vermisse es wirklich als eine gute visuelle Bestätigung der Unterbrechung eines Programms in der Konsole oder xterm. Ich erinnere mich gerne an viele Unixe, die ich im Laufe der Jahre auch verwendet habe. Es scheint auch eine gute Möglichkeit zu sein, dies auf Linux zu bringen, um die Kompatibilität mit standardmäßigen Unix-Verhaltensweisen zu verbessern.
Wenn Sie sich noch genau daran erinnern, wie Linux das nicht wiederholt hat, ^Ckönnen Sie das alte Verhalten nur wiederherstellen, indem Sie Ihren Kernel patchen. In neueren Versionen wird das Echo signalerzeugender Zeichen in den Zeilen 1215-1218 von drivers / tty / n_tty.c ausgegeben .
set echo-control-characters off