在 PowerShell 中,是否有一种方法,在输入长命令或复杂命令后,将该命令提交到历史缓冲区,但不执行它?
例如,你开始在 posh-git:directory 中输入 git commit:
git commit -m "Added the library 'ASDF' and did some initial integration into the project" [pause]
当你输入这些内容时,我在想......呃,我需要先做一些事情,比如添加一个额外的文件来提交先做其他事情,或者创建一个目录或一些东西(人为的情况,我意识到PowerShell会自动创建它,我意识到git可以“修改提交”。)所以我想将该提交消息保存到历史缓冲区中,但不运行它,然后在我说暂存其他文件或之前做一些事情之后再调用它。
根据这篇文章,Windows PowerShell 快捷键,似乎没有按键可以执行此操作。
Esc键(和Ctrl+ C)将取消命令并清除它...我需要将其保存到历史记录中,以便稍后运行,从而保留我的输入。有这样的按键吗?
答案1
你也可以在命令前放置一个注释标签,如下所示:
#Get-ChildItem
当您准备执行时,向上箭头指向命令,Home然后按Del,然后Enter执行。
答案2
经过一些调用后,这似乎也有效:
$VariableName = "Windows Command"
然后,执行:
Invoke-Expression "$VariableName"
Ping 的示例:
我还可以以完全相同的方式使用 PowerShell 表达式:
PS H:> $Outlooks = “获取进程-名称 Outlook -Verbose | fl StartTime,线程” PS H:> Invoke-Expression “$Outlooks”
本质上,我相信正在发生的事情是我们正在为第一个变量创建一个字符串(它看起来就是这样,很直接),然后当我们在“”里面调用我们的变量时,它会强制解释器扩展该变量,从而导致它调用正确的命令。
答案3
许多命令都支持-whatif
可以添加和稍后删除的参数。不过,我不得不说我更喜欢注释的想法。
答案4
这是一个老话题,但我在研究解决方案时偶然发现了它。
你可以看看我的GitHUB 上的 CmdFav 模块。