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 ? Как мне это сделать?

  • regexp в ksh для расширений tgz, tar.tgz
  • linux + как игнорировать (фильтровать) файл с пространством
  • Вычитание дат в unix
  • ksh "<< EOF", чтобы изменить пользователя
  • Автоматизация ftp-процессов
  • Ключ удаления не работает в командной строке
  • Сценарий оболочки не выполняется
  • Пропустить первые 3 байта файла
  • 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 

    Linux и Unix - лучшая ОС в мире.