Вопрос В Powershell существует ли способ сохранить типизированную команду в историю, не выполняя ее для последующего выполнения?


В Powershell существует способ, после ввода длинной или сложной команды, чтобы зафиксировать эту команду в буфере истории, но не выполнить ее?

Например, вы начинаете вводить git-commit в каталоге posh-git:

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

И когда вы готовы выполнить, стрелка до команды ударит Главная тогда Del, тогда Войти выполнить.


10
2018-06-11 14:52



Thats довольно умный. спасибо за предложение! - enorl76
Ага. Использул этот трюк навсегда. Я также комментирую мои oneliners таким образом, потому что я мог бы перечитать историю лет спустя (bash). - bgStack15


Многие из команд поддерживают -whatif который вы можете добавить и удалить позже. Однако я должен сказать, что мне нравится идея комментария лучше.


1
2018-06-13 14:43



whatif is good, но не все команды поддерживают его - Keltari


Кажется, что это тоже работает, после некоторых игр с вызовом:

$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" $ Outlook "

По сути, я считаю, что происходит то, что мы создаем строку для первой переменной (точно, как она выглядит, прямо вперед), а затем, когда мы вызываем нашу переменную внутри "", она заставляет интерпретатор расширять переменную, вызывая ее для вызова правой команды.


1
2018-06-14 19:30