Antworten:
Bearbeiten (oder erstellen) Sie Ihre ~/.inputrc
Datei. 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 180
und drücke STRG + C
~/.inputrc
dies 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, ~/.inputrc
mit dieser Zeile zu beginnen $include /etc/inputrc
. Es ist auch möglich, einfach cp /etc/inputrc .inputrc
und 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 stty
Funktionen erläutert werden .
Wenn Sie diese Änderung dauerhaft machen möchten (und Sie verwenden, bash
wie in Ihrer Frage impliziert), ist es am besten, sie .bashrc
wie von jlmg in den Kommentaren vermerkt einzutragen (dies gilt also für alle interaktiven Shells).
.bash_profile
da diese Datei nur von Login-Shells analysiert wird. Es sollte stattdessen eingefügt .bashrc
werden, damit es von allen interaktiven Aufrufen gelesen wird.
^[[A
stty -echo
auch. Das wird natürlich auch das Echo von allem anderen verhindern, was diese Antwort wahrscheinlich zu einem No-Go macht, wenn Sie nur das ^C
s verstecken wollten .
^C
immer am Ende war könnte ich dir zustimmen. Aber das ^C
wird 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 ^C
ist 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, ^C
kö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