История команд в PowerShell

PowerShell сохраняет историю выполненных команд.

Сам по себе PowerShell сохраняет введенные команды в оперативной памяти. Модуль PSReadline дополнительно сохраняет их в файле на жестком диске, что позволяет нам возвращаться к командам, введенным не только в текущей сессии, но и к тем, что были выполнены некоторое время назад и, возможно, в иной версии PowerShell.

Местонахождение этого файла мы можем получить при помощи следующей команды.

Get-PSReadLineOption | Select-Object HistorySavePath

Просмотреть введенные ранее команды мы можем при помощи клавиш Вверх и Вниз. Первая из них перемещает нас назад по истории, вторая — в обратном направлении. При этом мы можем перемещаться по всей истории.

History cmdlets

В отличие от клавиш Вверх и Вниз, командлеты для работы с историей, такие как Get-History, Invoke-History и Clear-History взаимодействуют только с командами, расположенными в оперативной памяти.

Таким образом, команда Get-History, или ее алиасы — h, history и ghy — в качестве результата вернут только те команды, что были введены в текущей сессии. Например.

Get-History
Id Duration CommandLine
-- -------- -----------
 1    0.143 Get-Process pwsh
 2    0.018 Get-Service WinRM
 3    0.023 Get-Content C:\Windows\System32\drivers\etc\hosts

Команда Invoke-History (ее алиасы — r и ihy) позволяет выполнить некоторую сохраненную в истории команду.

Invoke-History 2
Status  Name  DisplayName
------  ----  -----------
Running WinRM Windows Remote Management (WS-Management)

А команда Clear-History (ее алиас — clhy) — очищает историю. Естественно, это касается исключительно истории, сохраненной в оперативной памяти, и никак не влияет на то, что было сохранено в файле.

Символ #

Для вызова команды из памяти мы также можем ввести символ #, идентификатор сохраненной команды и нажать клавишу Tab или же сочетание клавиш Ctrl+Space.

#2[Tab] => Get-Service WinRM

Кроме того, мы можем использовать символ # для поиска команд в истории. Например, так.

#hosts[Tab] => Get-Content C:\Windows\System32\drivers\etc\hosts

Если же указанный нами фрагмент встречается в нескольких командах, мы можем пролистать все совпадения при помощи клавиш Tab или, для движения в обратном направлении, Shift+Tab. Также для просмотра всех подходящих команд мы можем воспользоваться сочетанием клавиш Ctrl+Space.

PSReadline

Что же касается поиска по всей истории, тут у нас также есть несколько вариантов, предоставляемым модулем PSReadline.

Для поиска команд, начинающихся с введенных символов, мы можем воспользоваться клавишами F8 и, опять же, для перемещения в обратном направлении — Shift+F8.

Get[F8] => Get-Content C:\Windows\System32\drivers\etc\hosts

Для поиска по произвольному фрагменту команды мы можем воспользоваться сочетаниями клавиш Ctrl+R и Ctrl+S. Первая из них предназначена для перемещения назад по истории, вторая — в обратном направлении.

[Ctrl+R]WinRM

Ввод вышеприведенных символов позволит нам найти команду Get-Service WinRM. Для дальнейшего поиска по истории мы можем продолжать нажимать на Ctrl+R, или же, для возвращения к уже пролистанной команде — Ctrl+S.

Empowering the environment

Если мы заглянем в файл SamplePSReadLineProfile.ps1, расположенный в каталоге модуля PSReadline, то обнаружим там несколько предложений по использованию предлагаемых модулем возможностей.

Одно из таких предложений — это назначение клавишам Вверх и Вниз функций клавиш F8 и Shift+F8.

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward

Если мы добавим вышеприведенные команды в профиль PowerShell, то сможем использовать клавиши Вверх и Вниз не только для перемещения по истории, как это было и раньше, но и для поиска команд, начинающихся с определенных символов.

Return

Мы рассмотрели лишь небольшую часть того, что предлагает PowerShell и модуль PSReadline для создания среды, наиболее комфортной для работы с консолью, однако механизмы повторного использования команд, а также удобного перемещения по истории, являются важнейшей частью этой стратегии.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s