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

В бете Windows PowerShell v5 присутствует интересная возможность — сохраняемая история команд.

Например, вы набрали и выполнили сложный запрос.

query

После чего закрыли консоль PowerShell, выключили компьютер и ушли домой.
Придя утром вы запустили Windows PowerShell, нажали клавишу со стрелкой вверх и что вы увидели?
Правильно, последнюю введенную вами команду. И — если продолжить нажимать конпку «вверх» — не только последюю.

История по-умолчанию сохраняется в папке %userprofile%\AppData\Roaming\PSReadline отдельно для консоли PowerShell и для ISE (хотя в билде 10122 для ISE это еще вроде как не работает).

Настраивается эта функция при помощи командлетов Get-PSReadlineOption и Set-PSReadlineOption.
Запустив Get-PSReadlineOption можно получить текущие настройки. Нас интересуют значения: AddToHistoryHandler, HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath и HistorySaveStyle.

history_settings

Изменить эти значения можно посредством одноименных параметров командлета Set-PSReadlineOption.

В частности, параметр HistoryNoDuplicates отвечает за отдельное сохранение одинаковых команд (по-видимому, пока не работает), параметр MaximumHistoryCount задает максимальное число сохраненных команд, HistorySavePath — указывает путь, где должен находится файл, в котором будет сохраняться история.

Параметр HistorySaveStyle может принимать одно из трех значений: SaveAtExit — что указывает, что история должна сохраняться при закрытии консоли, SaveIncrementally — сохраняет команды при выполнении и является значением по умолчанию, SaveNothing — отключает сохранение истории.

Параметр HistorySearchCaseSensitive имеет отношение к функционалу, который в по умолчанию привязан к клавишам F8HistorySearchBackward и Shift+F8HistorySearchForward. Привязка настраивется командлетом Set-PSReadlineKeyHandler.

В чем состоит эта функциональность?
Например, если полсотни строк назад вы написали некую нужную команду

query-string

и уже не очень помните из чего же именно она состояла, а нажимать кнопку «вверх» те же самык полсотни раз большого желания нет, то вы можете сделать так. Набираете первые символы искомой строки, например

    $query =

и нажимаете F8. Консоль предложит вам ближайшую (с точки зрения истории) команду, начинающуюся с этих символов. Посторное нажатие F8 перейдет на предыдущую команду с этими символами в начале и т.д.
Сочетание Shift+F8 отличается только тем, что выполняет поиск в другом направлении. Например, вы три раза нажали F8 и поняли, что второй вариант вам подходил больше. В этом случае вам как раз и поможет Shift+F8.

Возвращаемся к параметру HistorySearchCaseSensitive. При его установке в $True, поиск по истории команд будет различать регистр введенных символов. По умолчанию он установлен в $False.

Параметр HistorySearchCursorMovesToEnd теоретически должен указывать, должен ли курсор переходить в конец строки при поиске в истории команд, однако, по-видимому, в текущем билде от также не работает (точнее работает все время, так как отключить его у меня не получилось).

Параметр HistorySearchCursorMovesToEnd по-видимому призван указывать, должен ли курсор переходить в конец строки при поиске в истории команд, однако, похоже, в текущем билде от также не работает (точнее работает все время, так как отключить его мне не удалось).

Что касается параметра AddToHistoryHandler, тут, пожалуй, стоит дожаться официальной документации.


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

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

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

Логотип WordPress.com

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

Google+ photo

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

Фотография Twitter

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

Фотография Facebook

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

Connecting to %s