Консоль для windows с историей

Просмотр истории предыдущих команд в сеансе PowerShell

Изначально Windows PowerShell (как и командная строка cmd) сохраняет историю выполненных команд только в текущей сессии PowerShell. При закрытии окошка консоли PowerShell или перезагрузке компьютера, история команд PowerShell, которые вы набирали, нигде не сохраняется. По сравнению с той же bash это является существенным недостатком. Начиная с версии PowerShell 5.0, представленной в Windows 10, по-умолчанию все введенные команды в PS консоли теперь сохраняются в текстовый файл журнала.

История команд в PowerShell, модуль PSReadLine

Допустим, вы набрали и выполнили какую-то сложную команду PowerShell. В Windows 10 и Windows Server 2016 даже после перезагрузки компьютера вы можете открыть новую сессию PowerShell и нажать клавишу со стрелкой вверх. На экране должна отобразить последняя введенная вами команда. Если продолжить нажать клавишу «вверх» — вы увидите все команды, выполненные ранее. Таким образом с помощью клавиш «вверх» и «вниз» вы можете прокручивать историю команд и повторно выполнять ранее набранные команды.

Чтобы вывести подробную информацию о ранее выполненных командах в текущей сессии PowerShell, в том числе реи время запуска/окончания выполнения команды:

Get-History | Format-List -Property *

Оболочка PowerShell в Windows 10 по-умолчанию запоминает последние 4096 команд, которые сохраняются в текстовом файле, расположенном в профиле каждого пользователя
%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt .
История ведется отдельно для консоли PowerShell, отдельно для ISE.

Если команда PowerShell требует длительное время на выполнение, вы увидите ее в истории команд только по ее завершении.

Для поиска используется клавиша F7 .

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

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

Если найденная команда вас не устраивает, чтобы продолжить поиск по истории, нажмите сочетание CTRL+R / CTRL+S еще раз. В результате на экране появится следующая команда, соответствующая шаблону поиска.

С помощью клавиши F8 можно найти в истории команду, соответствующую тексту в текущей командной строке. Например, наберите get- и нажмите F8 . В истории будет найдена последняя команда, соответствующая строке. Чтобы перейти к следующей команде истории, нажмите F8 еще раз.

Читайте также:  Geekrar mac os big sur

Также можно использовать символ # для поиска в истории команд. Например, чтобы найти последнюю команду, начинающуюся с Get-WMI , наберите #get-wmi и нажмите клавишу Tab . В консоли появится последняя команда, соответствующая шаблону:

Чтобы получить список команд в окне блокнота, выполните команду:

notepad (Get-PSReadLineOption | select -ExpandProperty HistorySavePath)

Для вывода списка команд в истории, соответствующих запросу, можно использовать:

Get-History | Select-String -Pattern «Get-«

Настройка истории команд PowerShell с помощью модуля PSReadLine

Функционал истории команд в PowerShell 5.0 и выше встроен не в сам Windows Management Framework, а основан на стороннем модуле PSReadLine, существенно расширяющим функционал консоли PowerShell. В Windows 10 он находится в каталоге C:\Program Files\WindowsPowerShell\Modules\PSReadline и автоматически импортируется при запуске консоли PowerShell. PSReadLine осуществляет подсветку синтаксиса в консоли, отвечает за возможность использования выделения текста мышкой и его копирование/вставку с помощью CTRL+C и CTRL+V . PSReadLine не входит в состав отдельно устанавливаемого PowerShell 5 для предыдущих версий Windows. Чтобы вести историю команд PowerShell в предыдущих версиях Windows (Windows 7/8.1 и Windows Server 2008R2/2012R2), кроме установки Windows Management Framework 5.1, необходимо установить модуль PSReadLine с помощью менеджера пакетов PackageManagement (ранее OneGet) из оналйн репозитория командой:

Полный список функций модуля PSReadLine для управления историей выполнения команд в PowerShell и привязанных к ним клавишам можно вывести командой:

Для настройки истории команд PowerShell используются командлеты Get-PSReadlineOption и Set-PSReadlineOption. Текущие настройки можно получить так:

Get-PSReadlineOption | select HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath, HistorySaveStyle

Нам могут быть интересны настройки следующих параметров:

  • HistoryNoDuplicates – нужно ли сохранять в истории PowerShell одинаковые команды;
  • MaximumHistoryCount – максимальное число сохраненных команд (по умолчанию сохраняются 4096 команд);
  • HistorySearchCursorMovesToEnd — нужно ли переходить в конец команды при поиске;
  • HistorySearchCaseSensitive – нужно ли учитывать регистр при выполнении поиска (по умолчанию история команд не учитывает регист);
  • HistorySavePath – путь к текстовому файлу, в который сохраняется история команд PowerShell;
  • HistorySaveStyle – особенности сохранения команд:
    • SaveIncrementally — команды сохраняются при выполнении (по-умолчанию)
    • SaveAtExit — сохранение истории при закрытии консоли
    • SaveNothing — отключает ведение истории команд

Изменить настройки модуля PSReadLine можно с помощью команды Set-PSReadlineOption. Например:

Set-PSReadlineOption -HistorySaveStyle SaveAtExit

Чтобы увеличить количество сохраняемых команд PowerShell в логе, выполните команду:

Set-PSReadlineOption -MaximumHistoryCount 10000

Таким образом, возможность сохранения истории выполненных команд в PowerShell 5.0 — это еще один аргумента отказа от cmd в пользу консоли PoSh.

Очистка истории предыдущих команд в PowerShell

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

Командлет Clear-History можно использовать только для очистки истории команд в оперативной памяти текущего сеанса PowerShell (очищается список предыдущих команд, которые выводит командлет Get-History).

Можно удалить из истории только одну предыдущую команду:

Читайте также:  Локальное зеркало linux mint что это

Clear-History -count 1 -newest

Или все команды по определенной маске:
Clear-History -CommandLine *set-ad*

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

После этого закройте сессию PoSh.

Если нужно полностью отключить ведение истории команд PowerShell, выполните команду:

Set-PSReadlineOption -HistorySaveStyle SaveNothing

Импорт истории команд PowerShell в другую сессию

В некоторых случаях бывает удобно иметь под рукой один и тот же список часто-используемых команд PowerShell на различных компьютерах. Вы можете экспортировать текущую историю команд в xml файл и импортировать его на других компьютерах. Это можно сделать, скопировав файл ConsoleHost_history.txt в профиле пользователей на нужные компьютеры.
Также для экспорта команд из текущей сессии в файл можно использовать командлет Export-Clixml :

Get-History | Export-Clixml -Path c:\ps\commands_hist.xml

Для импорта команд из файла в другую сессию PoSh (на локальном или другом компьютере), выполните:

Add-History -InputObject (Import-Clixml -Path c:\ps\commands_hist.xml)

Для автоматического импорта команд в файл при завершении сессии PoSh, можно привязать скрипт к событию завершения сессии PoSh (!! Сессия обязательно должна завершаться командной exit , а не простым закрытием окна PoSh):

Как работать с историей выполненных команд в командной строке

П ри работе в командной строке иногда приходится повторно выполнять ранее введённые команды с атрибутами или без. Неопытные пользователи обычно набирают команды вручную, тратя впустую нервы и время, ведь им и невдомёк, что в командной строке есть такая замечательная функция как просмотр истории введённых команд и их быстрая вставка. В течении одной сессии командная строка могжет запоминать все введённые и выполненные пользователем команды.

Что весьма облегчает повторное введение уже выполненных команд. Для работы с историей в командной строке CMD используются «горячие клавиши» . Вот они:

• F1 или стрелка вправо — выводит по одному символу из последней выполненной команды.
• F2 — выполняет копирование последней команды до определённого символа. Например, если последней командой была ping google.com , при нажатии пробела скопируется только ping.
• F3 , F5 — дублирует предыдущую команду целиком, а если после F3 нажимать клавиши-стрелки вверх-вниз, то можно гулять по всей истории.
• F4 — работает аналогично F2 , только наоборот, и если последняя копирует ранее введённую команду до указанного символа, то F4 обрезает её.
• F5 — то же, что и F3 , а ещё она дублирует функцию стрелки вверх.
• F6 — вставляет в консоль символ EOF (конец файла) . К истории эта хот-клавиша не относится, но может кому пригодится.
• F7 — выводит в консоль в белом окошке всю историю выполненных команд. Перемещаться по ним можно с помощью стрелок вверх-вниз, а выполнять выбранные клавишей Enter . Закрывается список истории нажатием Esc , а очищается с помощью комбинации Alt + F7 .

• F8 — последовательно перебирает список выполненных команд.
• F9 — используется для выборочной вставки команд из истории. Вставляет в консоль команду под определённым номером — 1, 2, 3, 4 и так далее.

Также, если вам будет это интересно, для простого просмотра всех выполненных команд можно использовать команду doskey /history .

Читайте также:  Enable steam guard from the steam client settings windows

Как просмотреть, сохранить и очистить историю команд командной строки в Windows

Командная строка – это не что иное, как черно-белая утилита командной строки, которая поставляется из коробки в Windows 10/8/7. Но те, кто знает его истинный потенциал, это отличная замена для стороннего программного обеспечения многих пользователей. Например, он может помочь вам организовать разделы жесткого диска, создать загрузочный USB-накопитель, обновить все файлы BIOS и многое другое. Многие администраторы и опытные пользователи, как правило, используют несколько команд в этой командной строке для выполнения своей работы. Сегодня мы поговорим о 2 методах, которые помогут пользователю просматривать историю своих командных строк, и об одном способе сохранения этой истории в Windows 10.

Просмотр, сохранение, очистка истории команд командной строки

Мы рассмотрим следующие темы:

  1. Просмотр с использованием DOSKEY.
  2. Просмотр с помощью клавиши F7.
  3. Сохраните историю командной строки.
  4. Очистить историю командной строки.

1] Просмотр истории команд с помощью DOSKEY

Этот метод довольно прост. После того, как вы ввели ряд команд в окне командной строки, все, что вам нужно сделать, это ввести следующую команду в том же окне командной строки:

После этого вы сможете проверить все команды, которые вы только что ввели во время этого сеанса, в командной строке в той же последовательности, в которой вы их вводили.

Вы можете проверить фрагмент экрана того же самого выше.

2] Просмотр истории CMD с помощью клавиши F7

Это лучше, чем метод DOSKEY, упомянутый выше. Я не утверждаю, что, поскольку это лучше, но если вы просто хотите вернуться к какой-либо ранее выполненной команде, это действительно надежно.

Чтобы просмотреть историю команд, вам нужно нажать клавишу F7 . F7 работает также для командной строки и PowerShell.

Это приведет к появлению небольшого всплывающего окна со списком всех ранее выполненных команд в сеансе.

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

2] Сохранить историю командной строки

Иногда вам может потребоваться сохранить записи команд, которые они использовали в сеансе с использованием командной строки, в файле TXT, HTML, CSV или RTF.

Для этого вы можете использовать расширение команды DOSKEY.

Вам просто нужно ввести следующую команду, а затем нажать клавишу Ввод ,

Затем сохраненный файл истории будет сохранен в том месте, где вы выполнили команду в окне командной строки.

4] Очистить историю командной строки, используя Alt + F7

Самый простой способ – перезапустить командную строку. История команд очищается автоматически каждый раз, когда вы ее закрываете и снова запускаете командную строку.

Чтобы очистить историю команд, вы также можете использовать сочетание клавиш Alt + F7 . Alt + F7 работает также для командной строки и PowerShell.

Вы также можете удалить историю команд с помощью редактора реестра. Перейдите к следующей клавише:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ RunMRU

Далее выберите RunMRU и сотрите все значения, имеющие имя, букву алфавита в правой панели. После этого щелкните правой кнопкой мыши MRUList > Изменить и удалите содержимое данных значений.

Дополнительные советы и рекомендации по командной строке здесь.

Оцените статью