Equivalente a ^ D (no bash) para cmd.exe?

27

Existe um pressionamento de tecla equivalente para sair de um prompt de comando no Windows (iniciado via Iniciar-> Executar: cmd) no modo de espera do bash Ctrl- dpara evitar a necessidade de digitar exitpara sair do shell?

Warren
fonte

Respostas:

19

Não. CtrlDOn * nix gera um EOF, que vários shells interpretam como em execução exit. O equivalente a EOF no Windows é CtrlZ, mas o cmd.exe não interpreta isso especialmente quando digitado no prompt.

Ignacio Vazquez-Abrams
fonte
3
Com a maioria dos shells modernos, o terminal não está no modo de entrada canônica quando o shell está aceitando interativamente a entrada e Ctrl+Dé de fato apenas um caractere comum e não um caractere especial EOF. Os shells se ligam Ctrl+Da uma ação GNU Readline ou ZLE que sai (mas apenas se o buffer de edição de linha estiver vazio), portanto o comportamento é basicamente o mesmo resultado. Mas nãoCtrl+D é EOF com conchas modernas, apenas um personagem de controle comum. O comportamento quando o buffer de edição não está vazio é marcadamente diferente do que acontece com um caractere especial EOF.
JdeBP
3
De fato, o Windows NT mais próximo equivale ao que bashet al. o que realmente está fazendo é um alias de teclado de execução automática do TCC / LE , como este , em que o interpretador de comandos (não o console) reconhece a combinação de teclas pressionada ALT+F4 durante a edição da linha e executa o exitcomando interno em resposta.
JdeBP
@JdeBP Partindo disso como ponto de partida, acabei de testar isso com o bash 4.4.12 e stty -aretorna icanon(ou seja, não -icanon). Seu comentário está With most modern shells, the terminal is not in canonical input mode when the shell is interactively accepting inputrealmente estatisticamente correto neste momento?
levant pied
10

Alt- Space. Então C,.

Sim, é um pouco mais lento que Ctrl- D. Mas esta é a resposta exatamente para o que você está solicitando: a sequência de pressionamento de tecla equivalente integrada que permite sair do prompt sem a necessidade de digitar o exitcomando. Nenhum software de terceiros é necessário.

Isso pode não funcionar absolutamente idêntico ao bash: o bash fará logout apenas em uma linha de comando vazia. No Windows, isso pode fechar a janela, mesmo se você já tiver digitado um comando parcial.

TOOGAM
fonte
: D: D: D: D: D: D
Fatih
3

Você pode usar o DOSKEY para criar macros no CMD.exe.

Para criar um tipo de macro:

DOSKEY [macroname]=[command(s)]

Dessa forma, você pode vincular uma chave a outro comando.

Exemplo:

DOSKEY e=exit

seria vinculado eao exitcomando, portanto, quando você insere um eno prompt, é como se você inserisse umexit

Não tenho certeza se você pode usar CTRL- $ncombinações como macros

Nate Koppenhaver
fonte
A maioria dos caracteres de controle funciona bem (exceto aqueles já tratados pelo console, é claro). Mas cmdapenas interpreta-os como comandos normais, esperando Enterque sejam pressionados, para que não haja vantagem de usar o aliasing Ctrl-Z em vez de apenas eou x.
grawity
3

Corrigida a abordagem de tecla automática. (Não consigo adicionar um comentário.)

#IfWinActive, ahk_class ConsoleWindowClass
  ^d::
    ; First send ESC, in case we're in select mode.
    Send {Esc}{Esc}exit{Enter}
#IfWinActive
Kirby
fonte
1

Agora existe um projeto de código aberto chamado clink em http://code.google.com/p/clink/ (edit: foi movido para http://mridgers.github.io/clink/ ) - ele traz a funcionalidade de linha de leitura do Unix para o prompt de comando do Windows.

Ele suporta a maioria das funcionalidades, incluindo edição por linha de comando, pesquisa de histórico, conclusão de guias juntamente com scripts de conclusão, etc. Vale a pena conferir, faz com que o cmd seja muito menos trabalhoso. ;]

HerbCSO
fonte
0

Você pode obter o mesmo efeito com esse trecho de 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
fonte
Não parece funcionar, alguma pista por quê?
Avindra Goolcharan
@AvindraGoolcharan: Disseram-me, dependendo de como você inicia o prompt de comando, o título da janela pode ser diferente do que usei neste script. A segunda linha pode precisar de ajustes, dependendo da sua preferência.
Der Hochstapler