Réponses:
Modifiez (ou créez) votre ~/.inputrcfichier. Ajouter une ligne disant
set echo-control-characters Off
Cela demandera à la bibliothèque GNU Readline (que Bash utilise) de ne pas afficher (écho) de caractères de contrôle à l'écran. Le paramètre sera actif dans toutes les nouvelles sessions Bash par la suite (et dans tout autre utilitaire qui utilise la bibliothèque Readline).
Notez que si votre système Unix est livré avec un fichier de configuration à l'échelle du système pour la bibliothèque Readline (généralement /etc/inputrc), votre fichier de configuration personnel devra inclure ce fichier:
$include /etc/inputrc
set echo-control-characters Off
Une autre alternative consiste à faire une copie personnelle du fichier de configuration à l'échelle du système, puis à le modifier.
sleep 180et appuyez sur CTRL + C
~/.inputrcn'existe pas déjà, la simple création du fichier peut entraîner la perte de certains paramètres existants. Dans mon cas, j'ai d'abord remarqué que ctrl + gauche et ctrl + droite avaient cessé de fonctionner. Le correctif était de commencer ma ~/.inputrcavec cette ligne $include /etc/inputrc. Il est également possible de juste cp /etc/inputrc .inputrcet de modifier comme vous le souhaitez.
Essayez ce qui suit:
stty -echoctl
Pour une explication, voir cet excellent article détaillé de Stéphane Chazelas qui explique également quelques autres sttyfonctionnalités .
Si vous souhaitez rendre ce changement permanent (et que vous utilisez bashcomme impliqué dans votre question), il est préférable de le mettre .bashrccomme indiqué par jlmg dans les commentaires (il s'applique donc à tous les shells interactifs).
.bash_profileest inséré car ce fichier n'est analysé que par les shells de connexion. Il doit être placé à la .bashrcplace, il est donc lu par toutes les invocations interactives.
^[[A
stty -echoégalement le faire. Bien sûr, cela empêchera également l'écho de tout le reste, ce qui rend probablement cette réponse non valable si tout ce que vous vouliez était de cacher le ^Cs.
^Cc'était toujours à la fin, je pourrais être d'accord avec vous. Mais le ^Csera imprimé là où se trouvait le curseur, ce qui peut remplacer une paire de caractères n'importe où dans la commande. Cela signifie que si vous devez copier-coller des parties de cette commande, vous risquez de vous retrouver avec quelque chose de déformé. Et le ^Cn'est pas aussi facilement reconnu en regardant par-dessus le terminal qu'il l'aurait été s'il était à la fin de la commande.
Si vous essayez de trouver une configuration qui permette un écho normal (y compris echoctl) et coupe simplement l'écho des caractères générateurs de signal, et vous êtes sûr que cela devrait être possible parce que vous l'avez vu fonctionner de cette façon auparavant ...
Vous l'avez probablement vu de cette façon. Mais ce n'est plus possible, à cause de ce commit :
validation ec5b1157f8e819c72fc93aa6d2d5117c08cdc961
Activez l'écho INTR / QUIT / SUSP dans la discipline de ligne N_TTY (par exemple, ctrl-C apparaîtra comme "^ C" si stty echoctl est défini et ctrl-C est défini comme INTR).
Linux semble être le seul système d'exploitation de type Unix (récemment, j'ai vérifié cela sur Solaris, BSD et Mac OS X) qui ne se comporte pas de cette façon, et cela me manque vraiment comme une bonne confirmation visuelle de l'interruption d'un programme dans la console ou xterm. Je m'en souviens aussi de nombreux Unix que j'ai utilisés au fil des ans. Apporter cela à Linux semble également être un bon moyen de le rendre encore plus conforme au comportement standard de type Unix.
Si vous vous souvenez bien de la façon dont Linux ne faisait pas écho à cela ^C, la seule façon de récupérer l'ancien comportement est de patcher votre noyau. Dans les versions récentes, l'écho des caractères générateurs de signal se trouve aux lignes 1215-1218 de drivers / tty / n_tty.c .
set echo-control-characters off