ksh – карта Ctrl-D для выхода из оболочки

Я хотел бы знать, как мы можем сопоставить клавиши Ctrl- D в ksh, чтобы выйти из оболочки, как в оболочке bash.

Не очень знакомы с привязкой ключей в ksh.

редактировать

См. Мои комментарии ниже.

$ echo $0 bash $ exit # I pressed Ctrl-D here, 'exit' string was placed and the shell exited $> echo $0 ksh $> Use 'exit' to leave ksh # I pressed Ctrl-D here, Got this message and returned to the ksh prompt $> echo $0 ksh $> cat >> somefile Some text $> # I pressed Ctrl-D here. So this key combination is taken as eof char for file, but not for exit. 

Значит, для выхода из оболочки требуется Ctrl- D ? Как мне это сделать?

2 Solutions collect form web for “ksh – карта Ctrl-D для выхода из оболочки”

Вам нужна команда stty : посмотрите, как ^ D сопоставляется с stty -a . Вы можете изменить это на что-то еще с помощью stty eof char : Удалите настройку «eof» с помощью stty eof undef


Untested: вы хотите прочитать о команде trap на странице man ksh. Для вас может быть достаточно настроить обработчик для сигнала EXIT .

 # warning: completely untested exit_handler() { echo "exit"; exit; } trap exit_handler EXIT 

Ctrl + D (ASCII EOT ) уже отображается для выхода из оболочки в обоих режимах vi и emacs , как объясняет страница руководства ksh93 . Это совершенно очевидно из вашего захвата скрипта.

На странице руководства также объясняется, что другие комментируют здесь, что этот ключ имеет этот эффект только в том случае, если строка пуста. (Это имитирует стандартное поведение линейной дисциплины в приготовленном режиме.)

То, что вам не хватает, что также объясняется страницей руководства, заключается в том, что у вас установлена ​​опция ignoreeof . Таким образом, Korn Shell увидела Ctrl + D на пустой строке и проигнорировала его, напечатав самое сообщение, которое вы видите, чтобы объяснить, что с ignoreeof вы должны явно использовать команду exit .

Поэтому забудьте о stty и trap handlers, как и в другом ответе; и просто:

  set -o noignoreeof 

  • Добавление значений
  • Код возврата lftp
  • Преобразование вывода команды «lsque -q»
  • Как найти старые каталоги в локальном каталоге, используя find в AIX?
  • Объедините три файла в один основной файл, исключив заголовок во 2-й и 3-й файлы
  • Как сравнить два значения float в ksh?
  • Включение завершения с вкладкой на старом ksh на SystemV
  • Как подсчитать вхождение строки, искать между шаблоном для определенной строки
  • Выход прерывается при добавлении вывода sql-запроса в ksh
  • Как заменить исходное значение переменной в теге HTML
  • Как преобразовать текст или символ в hex в оболочке korn
  • Linux и Unix - лучшая ОС в мире.