Questão Em Powershell, existe uma maneira de salvar um comando digitado no histórico sem executá-lo para execução posterior?


Em Powershell, existe uma maneira, após digitar um comando longo ou complicado, de cometer esse comando no buffer de histórico, mas não executá-lo?

Por exemplo, você começa a digitar um commit git, dentro do posh-git: directory:

git commit -m "Added the library 'ASDF' and did some initial integration into the project" [pause]

E bem, quando você digita isso, eu estou pensando ... Uh, eu preciso fazer algo primeiro, como adicionar um arquivo adicional para confirmar fazer outra coisa primeiro, ou criar um diretório ou algo assim (situação inventada, eu percebo que o Powershell vai auto-criá-lo e percebo git pode "alterar o commit".) Então, eu gostaria de salvar essa mensagem de compromisso em um buffer de histórico, mas sem executá-lo, para ser lembrado mais tarde depois de dizer, colocar arquivos adicionais ou fazer algo pouco antes.

De acordo com este artigo, as teclas de atalho do Windows PowerShell: http://technet.microsoft.com/pt-br/library/ee176868.aspx , parece não haver um pressionamento de tecla para fazer isso.

Tecla ESC (e Ctrl + C) irá cancelar o comando e apagá-lo ... O que eu preciso é salvar no histórico, para ser executado mais tarde, preservando assim a minha digitação. Existe uma tecla para isso?


4


origem




Respostas:


Bem, você sempre pode colocar uma tag de comentário antes do comando assim:

#Get-ChildItem

E quando você estiver pronto para executar, vá até o comando Casa então Del, então Entrar executar.


10



isso é muito inteligente. Obrigado pela sugestão! - enorl76
Sim. Estive usando esse truque para sempre. Eu também comento meus oneliners desta maneira, porque eu poderia realmente reler a história daqui a alguns anos (bash). - bgStack15


Muitos dos comandos suportam -whatif parâmetro que você pode acrescentar e remover depois. No entanto, devo dizer que gosto mais da ideia de comentário.


1



whatif é bom, mas nem todos os comandos suportam - Keltari


Isso parece funcionar também, depois de alguns jogando com invocação:

$VariableName = "Windows Command"

Então, para executar:

Invoke-Expression "$VariableName"

Um exemplo com o Ping:

enter image description here

Também consegui usar as expressões do PowerShell da mesma maneira:

PS H:> $ Outlooks = "Get-Process-Nome do Outlook -Verbose | fl   StartTime, Threads "PS H:> Invoke-Expression" $ Outlooks "

Essencialmente, acredito que o que está acontecendo é que estamos criando uma cadeia para a primeira variável (Exatamente o que parece, diretamente), e então quando invocamos nossa variável dentro de "" ela força o interpretador a expandir a variável, causando isso para chamar o comando certo.


1