Ответы:
Отредактируйте (или создайте) свой ~/.inputrc
файл. Добавьте строку, говоря
set echo-control-characters Off
Это даст указание библиотеке GNU Readline (которую использует Bash) не выводить (отображать) какие-либо управляющие символы на экран. Этот параметр будет активен во всех новых сеансах Bash после этого (и в любой другой утилите, которая использует библиотеку Readline).
Обратите внимание, что если ваша система Unix поставляется с общесистемным файлом конфигурации для библиотеки Readline (обычно /etc/inputrc
), то ваш личный файл конфигурации должен будет включать этот файл:
$include /etc/inputrc
set echo-control-characters Off
Другая альтернатива - сделать личную копию общесистемного файла конфигурации, а затем изменить его.
sleep 180
и
~/.inputrc
еще не существует, простое создание файла может привести к потере некоторых существующих настроек. В моем случае я впервые заметил, что ctrl + left и ctrl + right перестали работать. Исправление было начать ~/.inputrc
с этой строки $include /etc/inputrc
. Также можно просто cp /etc/inputrc .inputrc
и отредактировать по желанию.
Попробуйте следующее:
stty -echoctl
Для объяснения см. Этот великий и подробный пост от Стефана Шазеля, который также объясняет некоторые другие stty
особенности .
Если вы хотите, чтобы это изменение было постоянным (и вы используете, bash
как подразумевается в вашем вопросе), то лучше добавить его, .bashrc
как отмечено в комментариях jlmg (так, что оно применимо ко всем интерактивным оболочкам).
.bash_profile
поскольку этот файл анализируется только оболочками входа в систему. .bashrc
Вместо этого его следует ввести , чтобы он читался всеми интерактивными вызовами.
^[[A
stty -echo
тоже пришлось . Это, конечно же, предотвратит повторение всего остального, что, вероятно, делает этот ответ бездействующим, если все, что вы хотели - это скрыть ^C
s.
^C
всегда было в конце, я мог бы согласиться с тобой. Но ^C
он будет напечатан там, где когда-либо находился курсор, который может перезаписать пару символов в любом месте команды. Это означает, что если вам нужно скопировать и вставить части этой команды, у вас может получиться что-то искаженное. И ^C
при просмотре терминала не так легко распознать, как если бы он был в конце команды.
Если вы пытаетесь найти конфигурацию, которая позволит нормально отображать эхо (в том числе echoctl
) и просто отключить эхо-сигналы генерирующих сигнал символов, и вы уверены, что это должно быть возможно, потому что вы видели, как это работало раньше ...
Вы, наверное, видели это таким образом. Но это больше невозможно из-за этого коммита :
commit ec5b1157f8e819c72fc93aa6d2d5117c08cdc961
Включите эхо-запрос INTR / QUIT / SUSP в дисциплине строки N_TTY (например, ctrl-C будет отображаться как «^ C», если установлен stty echoctl, а ctrl-C установлен как INTR).
Linux, похоже, является единственной Unix-подобной ОС (недавно я проверял это на Solaris, BSD и Mac OS X), которая не ведет себя таким образом, и я действительно пропускаю это как хорошее визуальное подтверждение прерывания программы в консоли или xterm. Я помню это с любовью из многих Unix, которые я использовал на протяжении многих лет. Внедрение этого в Linux также кажется хорошим способом сделать его еще более совместимым со стандартным Unix-подобным поведением.
Если вы с любовью вспоминаете, как Linux не повторял это ^C
, единственный способ вернуть старое поведение - это исправить ваше ядро. В последних версиях отображение символов, генерирующих сигналы, находится в строках 1215-1218 файла drivers / tty / n_tty.c .
set echo-control-characters off