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

  • Как обеспечить, чтобы только один экземпляр моего сценария ksh выполнялся на Solaris с помощью NFS?
  • Регулярное выражение для выражения фразы с аргументом case в ksh
  • Как закодировать строку значений с помощью ',' и напечатать ее как список
  • как дифференцировать ошибку, возвращаемую при чтении, и для EOF в сценарии оболочки
  • Вывод `java -version` не соответствует grep или awk
  • Проблемы с перенаправлением вывода
  • Шаблон KSH из переменной не работает
  • Использование оболочки «: -» и преимущества
  • 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 

    Interesting Posts

    Проблема с кодировкой url в debian sources.list

    Список всех доступных сертификатов ssl ca

    Игнорировать «другие» домены при загрузке с помощью wget?

    Как отсортировать файлы в Bash с помощью ddmmyy timestamps в имени

    Остановить то же самое, что и «shutdown -H» и отключить питание так же, как «shutdown -P»?

    Почему мне даже нужно указать имя хоста или мое доменное имя?

    Как сопоставить текст между строкой и пробелом

    Есть ли способ, которым я могу запутать сценарий оболочки «.sh»?

    Как проверить наличие пустых паролей?

    Скрипт Watchdog для запуска приложения

    Обходной путь для Ctrl-Space в Konsole

    Правильная процедура подготовки перед основным обновлением системы

    Подсчитайте количество строк в каждом столбце текстового файла

    Используйте регулярное выражение, чтобы проверить, имеет ли конкретный каталог папки, начиная с определенного слова

    Может ли пользователь linux изменить свой пароль, не зная текущего пароля?

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