Существует ли эквивалентное нажатие клавиши для выхода из командной строки в Windows (запущено через Пуск-> Выполнить: cmd) в режим ожидания bash Ctrl- dчтобы предотвратить необходимость ввода, exit
чтобы покинуть оболочку?
Существует ли эквивалентное нажатие клавиши для выхода из командной строки в Windows (запущено через Пуск-> Выполнить: cmd) в режим ожидания bash Ctrl- dчтобы предотвратить необходимость ввода, exit
чтобы покинуть оболочку?
Ответы:
Нет. CtrlD* Nix генерирует EOF, который различные оболочки интерпретируют как работающие exit
. Эквивалент EOF в Windows есть CtrlZ, но cmd.exe не интерпретирует это специально при вводе в командной строке.
bash
и соавт. на самом деле это псевдоним клавиатуры TCC / LE с автоматическим выполнением, такой как этот , где интерпретатор команд (не консоль) распознает обычную комбинацию нажатий клавиш ALT+F4
во время редактирования строки и выполняет exit
в ответ встроенную команду.
stty -a
возвращает icanon
(то есть, нет -icanon
). Ваш комментарий With most modern shells, the terminal is not in canonical input mode when the shell is interactively accepting input
действительно статистически корректен на данный момент?
Alt- Space. Затем,C .
Да, это немного медленнее, чем Ctrl- D. Но это ответ именно на то, что вы просите: встроенная эквивалентная последовательность нажатий клавиш, которая позволяет выйти из подсказки без необходимости набиратьexit
команду. Никакое стороннее программное обеспечение не требуется.
Это может не работать абсолютно идентично bash: bash будет выходить только из пустой командной строки. В Windows это может закрыть окно, даже если вы уже набрали на нем частичную команду.
Вы можете использовать DOSKEY для создания макросов в CMD.exe.
Чтобы создать тип макроса:
DOSKEY [macroname]=[command(s)]
Таким образом, вы можете связать ключ с другой командой.
Пример:
DOSKEY e=exit
будет привязан e
к exit
команде, поэтому, когда вы вводитеe
в приглашение, это будет похоже на вводexit
Я не уверен, что вы можете использовать CTRL- $nкомбинации как макросы, хотя
cmd
просто интерпретирует их как обычные команды, ожидающие Enter
нажатия, так что нет преимущества совмещения Ctrl-Z по сравнению с just e
или x
.
В настоящее время существует проект с открытым исходным кодом под названием clink по адресу http://code.google.com/p/clink/ (редактировать: он перемещен на http://mridgers.github.io/clink/ ) - он предоставляет функциональность Unix readline для командная строка Windows.
Он поддерживает большинство функций, включая редактирование из командной строки, поиск в истории, завершение табуляции вместе со скриптами завершения и т. Д. Стоит обратить внимание, что делает cmd отстойным гораздо меньше. ;]
Вы можете получить тот же эффект с помощью этого фрагмента AutoHotKey :
; Close Command Prompt when pressing Ctrl+D
#IfWinActive, Command Prompt$
^d::
; First send ESC, in case we're in select mode.
Send {Esc}{Esc}exit{Enter}
#IfWinActive
Ctrl+D
фактически является обычным символом, а не специальным символом EOF. Оболочки привязываютсяCtrl+D
к действию GNU Readline или ZLE, которое завершается (но только если буфер редактирования строки пуст), поэтому поведение в основном такое же. НоCtrl+D
это не EOF с современными снарядами, просто обычный управляющий персонаж. Поведение, когда буфер редактирования не пуст, заметно отличается от того, что происходит со специальным символом EOF.