4

В 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) отменит команду и очистит ее ... Что мне нужно, это сохранить в истории, чтобы запустить позже, сохраняя при этом мой набор текста. Есть ли для этого нажатие клавиши?

3 ответа3

10

Ну, вы всегда можете поставить тег комментария перед командой, например так:

#Get-ChildItem

И когда вы будете готовы к выполнению, стрелка вверх до команды нажмите Home, затем Del, затем Enter, чтобы выполнить.

1

Похоже, это работает и после некоторой игры с invoke:

$VariableName = "Windows Command"

Затем выполнить:

Invoke-Expression "$VariableName"

Пример с Ping:

Я также смог использовать выражения PowerShell точно таким же образом:

PS H:> $ Outlooks = "Get-Process -Name Outlook -Verbose | fl StartTime, Threads" PS H:> Вызывать-выражение "$ Outlooks"

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .