Эквивалент ^ D (в bash) для cmd.exe?

27

Существует ли эквивалентное нажатие клавиши для выхода из командной строки в Windows (запущено через Пуск-> Выполнить: cmd) в режим ожидания bash Ctrl- dчтобы предотвратить необходимость ввода, exitчтобы покинуть оболочку?

кроличий садок
источник

Ответы:

19

Нет. CtrlD* Nix генерирует EOF, который различные оболочки интерпретируют как работающие exit. Эквивалент EOF в Windows есть CtrlZ, но cmd.exe не интерпретирует это специально при вводе в командной строке.

Игнасио Васкес-Абрамс
источник
3
В большинстве современных оболочек терминал не находится в режиме канонического ввода, когда оболочка интерактивно принимает ввод, и Ctrl+Dфактически является обычным символом, а не специальным символом EOF. Оболочки привязываются Ctrl+Dк действию GNU Readline или ZLE, которое завершается (но только если буфер редактирования строки пуст), поэтому поведение в основном такое же. Но Ctrl+Dэто не EOF с современными снарядами, просто обычный управляющий персонаж. Поведение, когда буфер редактирования не пуст, заметно отличается от того, что происходит со специальным символом EOF.
JdeBP
3
Действительно, ближайшая Windows NT эквивалентна тому, что bashи соавт. на самом деле это псевдоним клавиатуры TCC / LE с автоматическим выполнением, такой как этот , где интерпретатор команд (не консоль) распознает обычную комбинацию нажатий клавиш ALT+F4 во время редактирования строки и выполняет exitв ответ встроенную команду.
JdeBP
@JdeBP Исходя из этого , я только что проверил это с помощью bash 4.4.12 и stty -aвозвращает icanon(то есть, нет -icanon). Ваш комментарий With most modern shells, the terminal is not in canonical input mode when the shell is interactively accepting inputдействительно статистически корректен на данный момент?
Левант перебил
10

Alt- Space. Затем,C .

Да, это немного медленнее, чем Ctrl- D. Но это ответ именно на то, что вы просите: встроенная эквивалентная последовательность нажатий клавиш, которая позволяет выйти из подсказки без необходимости набиратьexit команду. Никакое стороннее программное обеспечение не требуется.

Это может не работать абсолютно идентично bash: bash будет выходить только из пустой командной строки. В Windows это может закрыть окно, даже если вы уже набрали на нем частичную команду.

TOOGAM
источник
: D: D: D: D: D: D
Фатих
3

Вы можете использовать DOSKEY для создания макросов в CMD.exe.

Чтобы создать тип макроса:

DOSKEY [macroname]=[command(s)]

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

Пример:

DOSKEY e=exit

будет привязан eк exitкоманде, поэтому, когда вы вводитеe в приглашение, это будет похоже на вводexit

Я не уверен, что вы можете использовать CTRL- $nкомбинации как макросы, хотя

Нейт Коппенхейвер
источник
Большинство управляющих символов работают нормально (кроме тех, которые уже обрабатываются консолью, конечно). Но cmdпросто интерпретирует их как обычные команды, ожидающие Enterнажатия, так что нет преимущества совмещения Ctrl-Z по сравнению с just eили x.
Гравитация
3

Исправлено автоматическое приближение. (Я не могу добавить комментарий.)

#IfWinActive, ahk_class ConsoleWindowClass
  ^d::
    ; First send ESC, in case we're in select mode.
    Send {Esc}{Esc}exit{Enter}
#IfWinActive
Kirby
источник
1

В настоящее время существует проект с открытым исходным кодом под названием clink по адресу http://code.google.com/p/clink/ (редактировать: он перемещен на http://mridgers.github.io/clink/ ) - он предоставляет функциональность Unix readline для командная строка Windows.

Он поддерживает большинство функций, включая редактирование из командной строки, поиск в истории, завершение табуляции вместе со скриптами завершения и т. Д. Стоит обратить внимание, что делает cmd отстойным гораздо меньше. ;]

HerbCSO
источник
0

Вы можете получить тот же эффект с помощью этого фрагмента 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
Der Hochstapler
источник
Кажется, не работает, какие-либо подсказки, почему?
Авиндра Гулчаран
@AvindraGoolcharan: Мне сказали, что в зависимости от того, как вы запускаете командную строку, заголовок окна может отличаться от того, что я использовал в этом сценарии. Вторая строка может потребовать корректировки в зависимости от ваших предпочтений.
Der Hochstapler