題 在Powershell中,有沒有辦法將類型化的命令保存到歷史記錄中而不執行它以便以後執行?


在Powershell中,在輸入一個冗長或複雜的命令後,有沒有辦法將該命令提交到歷史緩衝區,但是不執行它?

例如,您在posh-git:目錄中開始鍵入git commit:

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

當你得到那個打字時,我正在想......呃,我需要先做一些事情,比如先添加一個額外的文件來提交別的東西,或者創建一個目錄或其他東西(設想的情況,我意識到Powershell會自動創建它,我意識到git可以“修改提交”。)所以我想將該提交消息保存到歷史緩衝區中,但是沒有運行它,稍後我會說,播放其他文件或做某事後再調用就在此之前。

根據這篇文章,Windows PowerShell快捷鍵: http://technet.microsoft.com/en-us/library/ee176868.aspx ,似乎沒有按鍵來做到這一點。

ESC鍵(和Ctrl + C)將取消命令,並清除它...我需要的是保存到歷史記錄,以便稍後運行,從而保留我的輸入。這有點擊鍵嗎?


4
2018-06-11 14:34


起源




答案:


那麼你總是可以在命令之前添加一個註釋標記,如下所示:

#Get-ChildItem

當你準備好執行時,箭頭指向命令  然後 德爾, 然後 輸入 執行。


10
2018-06-11 14:52



多數民眾贊成非常聰明。謝謝你的建議! - enorl76
是的。一直在使用這個技巧。我也這樣評論我的oneliner,因為我可能實際上重讀了從現在開始的歷史(bash)。 - bgStack15


許多命令支持a -whatif 您可以追加並稍後刪除的參數。但是,我不得不說我更喜歡評論的想法。


1
2018-06-13 14:43



whatif很好,但並非所有命令都支持它 - Keltari


在使用invoke進行一些播放之後,這似乎也有效:

$VariableName = "Windows Command"

然後,執行:

Invoke-Expression "$VariableName"

Ping的一個例子:

enter image description here

我也能夠以完全相同的方式使用PowerShell表達式:

PS H:> $ Outlooks =“Get-Process -Name Outlook -Verbose | fl   StartTime,Threads“PS H:> Invoke-Expression”$ Outlooks“

從本質上講,我相信正在發生的事情是我們正在為第一個變量創建一個字符串(完全是它的樣子,直接),然後當我們在“”內部調用我們的變量時,它會強制解釋器擴展變量,導致它調用正確的命令。


1
2018-06-14 19:30