Risposte:
Modifica (o crea) il tuo ~/.inputrc
file. Aggiungi una riga dicendo
set echo-control-characters Off
Questo indicherà alla libreria GNU Readline (che Bash usa) di non emettere (echo) alcun carattere di controllo sullo schermo. L'impostazione sarà attiva in seguito in tutte le nuove sessioni di Bash (e in qualsiasi altra utility che utilizza la libreria Readline).
Nota che se il tuo sistema Unix viene fornito con un file di configurazione a livello di sistema per la libreria Readline (di solito /etc/inputrc
), il tuo file di configurazione personale dovrà includere quel file:
$include /etc/inputrc
set echo-control-characters Off
Un'altra alternativa è quella di creare una copia personale del file di configurazione dell'intero sistema e quindi modificarlo.
sleep 180
e premere CTRL + C
~/.inputrc
non esiste già, la semplice creazione del file potrebbe perdere alcune impostazioni esistenti. Nel mio caso ho notato per la prima volta che ctrl + sinistra e ctrl + destra avevano smesso di funzionare. La correzione era iniziare il mio ~/.inputrc
con questa linea $include /etc/inputrc
. È anche possibile cp /etc/inputrc .inputrc
modificarlo e modificarlo come desiderato.
Prova quanto segue:
stty -echoctl
Per una spiegazione, vedi questo fantastico e dettagliato post di Stéphane Chazelas che spiega anche alcune altre stty
caratteristiche .
Se vuoi rendere permanente quel cambiamento (e stai usando bash
come implicito nella tua domanda) allora è meglio metterlo nel tuo .bashrc
come notato da jlmg nei commenti (quindi si applica a tutte le shell interattive).
.bash_profile
quanto quel file è analizzato solo dalle shell di login. Dovrebbe essere inserito .bashrc
invece, quindi viene letto da tutte le invocazioni interattive.
^[[A
stty -echo
anche tu . Questo ovviamente impedirà anche l'eco di tutto il resto, il che probabilmente rende questa risposta un no-go se tutto ciò che volevi era nascondere la ^C
s.
^C
fosse sempre alla fine potrei essere d'accordo con te. Ma ^C
verrà stampato ovunque sia stato il cursore, che può sovrascrivere una coppia di caratteri in qualsiasi punto del comando. Ciò significa che se hai bisogno di copiare e incollare parti di quel comando potresti finire con qualcosa di mutilato. E ^C
non è facilmente riconoscibile quando si guarda al terminale come sarebbe stato se fosse alla fine del comando.
Se stai cercando di trovare una configurazione che consenta l'eco normale (incluso echoctl
) e taciti l'eco dei caratteri che generano il segnale, e sei sicuro che dovrebbe essere possibile perché l'hai visto funzionare così prima ...
Probabilmente l'hai visto in quel modo. Ma non è più possibile, a causa di questo commit :
commit ec5b1157f8e819c72fc93aa6d2d5117c08cdc961
Attiva l'eco INTR / QUIT / SUSP nella disciplina della riga N_TTY (ad es. Ctrl-C apparirà come "^ C" se è impostato stty echoctl e ctrl-C è impostato come INTR).
Linux sembra essere l'unico sistema operativo unix-like (recentemente l'ho verificato su Solaris, BSD e Mac OS X) che non si comporta in questo modo, e mi manca davvero come una buona conferma visiva dell'interruzione di un programma nella console o xterm. Lo ricordo con affetto da molti Unix che ho usato anche negli anni. Portare questo su Linux sembra anche un buon modo per renderlo ancora più conforme al comportamento standard simile a unix.
Se vi ricordate con affetto come Linux utilizzato per non eco che ^C
, l'unico modo per ottenere il vecchio comportamento è di nuovo una patch per il kernel. Nelle versioni recenti, l'eco dei caratteri generatori di segnale è alle righe 1215-1218 di drivers / tty / n_tty.c .
set echo-control-characters off