- История команд в командной строке Windows
- Держите cmd.exe история команд между сеансами?
- 4 ответов
- Как просмотреть, сохранить и очистить историю команд командной строки в Windows
- Просмотр, сохранение, очистка истории команд командной строки
- 1] Просмотр истории команд с помощью DOSKEY
- 2] Просмотр истории CMD с помощью клавиши F7
- 2] Сохранить историю командной строки
- 4] Очистить историю командной строки, используя Alt + F7
- Как в Windows 10 просматривать и сохранять историю команд CMD и PowerShell
- Командная строка
- Утилита PowerShell
- Is there a global, persistent CMD history?
- 9 Answers 9
История команд в командной строке Windows
При работе в командной строке Windows иногда приходится повторять те или иные команды. К счастью, разработчики Windows приберегли для пользователей возможность работать с историей команд. Посмотрим, как можно упростить себе жизнь.
Используя клавиши со стрелками вверх и вниз (↑↓), можно перемещаться по истории команд.
F1 или клавиша со стрелкой вправо (→) выведут по одному символу из последней выполненной команды.
F2 выполнит копирование последней команды до указанного символа. Допустим, что последней командой была ipconfig . Если ввести F2 и o, тогда в командной строке отобразится ipc.
F3 и F5 копируют последнюю команду целиком.
F4 выполнит удаление последней команды до указанного символа.
F6 вставляет символ EOF (конец файла).
F7 выводит историю команд. Перемещаться по ней можно клавишами со стрелками вверх и вниз (↑↓). Если нажать Enter, команда повторится. Если нужно выйти из отдельного окна с историей, нажмите Esc.
F8 последовательно перебирает список выполненных команд.
F9 используется для вставки команды из истории под определённым порядковым номером. Например, в примере выше команда ipconfig фигурирует под номером 0, а ping localhost -t под номером 1.
Кстати, для просмотра истории команд можно использовать команду
А о работе с историей команд в Linux можно прочитать в отдельной статье.
Держите cmd.exe история команд между сеансами?
есть ли способ сохранить историю команд cmd между сеансами?
4 ответов
переключитесь на использование PowerShell и следуйте инструкциям на следующем сайте, чтобы включить журнал:
альтернативно, в cmd.exe, вы можете использовать» doskey /history » в конце сеанса, чтобы показать, что вы набрали в этой сессии, но нет никакого способа, чтобы действительно загрузить его в следующей сессии.
Я нашел 2 способа, ни один из которых не требует переключения на PowerShell.
установить Clink, который усиливает cmd.exe с постоянной историей и многое другое. Просто установите его, а затем откройте cmd как обычно.
установить TCC / LE бесплатная версия, которая является отдельной программой, обеспечивая улучшенную версию cmd.exe .
сохранение истории-это небольшой рабочий процесс — вот в менее «тяжелый» способ сделать это (без внешних библиотек).
создайте файл bat / cmd, чтобы настроить свою историю, в этом случае я назвал его MyEnvironment.cmd:
затем запустите это из «Пуск- > Выполнить» (вы также можете настроить псевдоним для этого тоже):
каждый раз, когда я закрываю сессию, я нажимаю » выход «-или, если я боюсь потерять историю в середине сессии, я нажимаю»сохранить». Если я хочу, чтобы grep для чего-то в истории, я просто нажмите «история ключевое слово».
в @dave_thompson_085 с комментария AutoRun функция работает хорошо, если вы не хотите использовать /K переключатель. Если правильно настроить раздел реестра, .cmd или .bat не нужно %AppData% , он может быть в том же месте, где он уже есть.
если вы используете %AppData% location, имейте в виду, что cmd, вероятно, будет искать ваш пакетный файл в папке » Roaming «(вместо AppData корень.)
Как просмотреть, сохранить и очистить историю команд командной строки в Windows
Командная строка – это не что иное, как черно-белая утилита командной строки, которая поставляется из коробки в Windows 10/8/7. Но те, кто знает его истинный потенциал, это отличная замена для стороннего программного обеспечения многих пользователей. Например, он может помочь вам организовать разделы жесткого диска, создать загрузочный USB-накопитель, обновить все файлы BIOS и многое другое. Многие администраторы и опытные пользователи, как правило, используют несколько команд в этой командной строке для выполнения своей работы. Сегодня мы поговорим о 2 методах, которые помогут пользователю просматривать историю своих командных строк, и об одном способе сохранения этой истории в Windows 10.
Просмотр, сохранение, очистка истории команд командной строки
Мы рассмотрим следующие темы:
- Просмотр с использованием DOSKEY.
- Просмотр с помощью клавиши F7.
- Сохраните историю командной строки.
- Очистить историю командной строки.
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 > Изменить и удалите содержимое данных значений.
Дополнительные советы и рекомендации по командной строке здесь.
Как в Windows 10 просматривать и сохранять историю команд CMD и PowerShell
Работая в классической командной строке или PowerShell, вы в любой момент можете нажать F7 и просмотреть историю всех выполненных команд. И не только просмотреть, но и выбрать любую из них. Это очень удобная и полезная функция, которая позволяет экономить время при повторном наборе команд, но пользоваться ее преимуществами получится только в текущем сеансе.
Как только сессия закрывается, вся история команд тут же удаляется. Если вас это не устраивает, и вы хотите сохранять историю так, чтобы она была доступна и после закрытия консоли, придется обратиться к ее расширенным возможностям. Поддерживаются таковые и классической командной строкой, и более совершенным ее аналогом PowerShell.
Командная строка
Для получения списка выполненных команд помимо клавиши F7 можно использовать специальную команду doskey с ключом history. История выводится непосредственно в консоль и также доступна только в текущей сессии, поэтому для ее сохранения используем обычное перенаправление в файл, например, вот так, дешево и сердито:
doskey /history > C:/20.05.20.log
Формат файла истории не обязательно должен быть LOG, уместны также форматы TХT, HTML, CSV и даже RTF.
Утилита PowerShell
В случае с консолью PowerShell всё куда интереснее. Начиная с пятой версии консоль сохраняет все введенные и выполненные командлеты в текстовый лог ConsoleHost_history.tхt, расположенный по пути %userprofile%/AppData/Roaming/Microsoft/Windows/PowerShell/PSReadline.
Даже если вы завершите сессию в консоли и выключите компьютер, команды останутся сохраненными и будут доступны для вызова в PowerShell нажатием клавиши «Стрелка вверх». Каждое нажатие выводит предыдущую команду, но можно отобразить и весь список выполненных команд сразу. Делается это так:
Отвечающий за историю модуль поддерживает и другие функции. Если вы введете команду Get-PSReadlineOption, то получите в консоли приличный список доступных параметров. Ознакомиться с их назначением можно в официальной документации к PowerShell, но смысл некоторых из них понятен и так. К примеру, нетрудно догадаться, что ключ MaximumHistoryCount устанавливает максимальное число элементов, сохраняемых в список истории.
Команда Remove-Item (Get-PSReadlineOption).HistorySavePath очищает историю введенных команд, Set-PSReadlineOption -HistorySaveStyle SaveNothing запрещает ведение истории, Set-PSReadlineOption -HistorySaveStyle SaveIncrementally вновь разрешает сохранение данных.
В целом, начинающему администратору вполне должно хватить данного функционала для облегчения работы в консоли. Если же вдруг при выполнении любой из приведенных выше команд появится ошибка «имя командлета не распознано», это с большой долей вероятности укажет на отсутствие требуемого модуля. Установить его в Windows 10 с PowerShell v5 можно командой Install-Module PSReadLine с последующим разрешением на подключение поставщика NuGet.
Is there a global, persistent CMD history?
Sometimes I forget how the exact syntax of a CMD command looks and then I would like to search my own CMD history. Clearly, within the same session, you can browse it with the up and down arrow keys but what about the history of former CMD sessions? Is there a file, a log the history gets written to or does it all go to digital Nirvana?
9 Answers 9
No, Windows command prompt history can’t be saved when a session ends.
Not natively but check out: http://mridgers.github.io/clink/ , makes cmd.exe much more productive. Quoting features from the project page:
/.inputrc when using clink? (and do you know whether it can be used Console or anything?) – Mike H-R Apr 20 ’15 at 17:39
Massimo is correct that your command prompt history does not persist across sessions. You could manually grab this before closing your prompt by typing doskey /history > history.txt
Or. you could use PowerShell as your CMD prompt, and follow this post to persist your history across sessions.
You can use clink.
Clink combines the native Windows shell cmd.exe with the powerful command line editing features of the GNU Readline library, which provides rich completion, history, and line-editing capabilities.
Easiest way to install clink is using chocolatey. Once you install chocolatey, you can install clink by typing
Starting from the next time you start cmd.exe, it should store history across sessions.
It is possible to save the current history to file,
But it seems there is no way to load it back as history. It is possible only to use a command line argument to load and execute all lines,
cmd.exe /K somefile.txt
, what can be useful to load a list of doskey macros. This invocation could be included in a shortcut so you don’t need to type it everytime; this reference has some additional info on this approach.
There is a similar question on Superuser that bring some alternatives, including clink, as suggested by @RobertBak.
Command History: To enable a command history (that can be accessed using the up and down arrow keys) just execute doskey at the command prompt. For example, to create a command history of 100 elements:
clink is nice and the author publishes a chocolatey package on every release, however I would suggest DeepBlueCLI.
You can use https://github.com/sans-blue-team/DeepBlueCLI to set-up Windows Security Event ID 4688.
For PowerShell, DeepBlueCLI also uses module logging (PowerShell event 4013) and script block logging (4104). It does not use transcription.
Also, because this solution uses the Windows Event Log infrastructure, you can query it through WMI or PowerShell Get-EventLog . With clink, you have to learn another tool in order to detect system- or network-wide patterns of behavior.
Yes, it’s possible
If all you want to do is save your command line history at the end of every session, here’s a simple way to do it:
As other answers indicated, doskey allows you to list the command line history for the current session. It also allows you to create macros.
This simple macro will save the command line history when you exit a CMD session:
This creates a macro that remaps the EXIT command to copy the command line history into your user profile folder (e.g., C:\Users\yourname\commands.log ). Unfortunately, you won’t be able to easily go back to any of these entries by pressing the up arrow, but you can examine the file at any point to see what you did in the past.
Autoloading
So that’s the easy part. The tricky part is autoloading that doskey macro when you start a new command session. The short and dangerous answer is to just add it to the REGISTRY in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\AutoRun . Anything you put in this entry will be run when you start a CMD session.
While that will work, it will definitely create unexpected side effects when doing any kind of scripting*.
So here’s how I do it:
Create a file called autoexec.bat and store it in your profile folder (e.g., C:\Users\yourname\autoexec.bat ). Then change the value of HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\AutoRun to this:
So yes, this batch file will run every time a CMD session is opened, but we’ll do a trick to make sure it doesn’t run in any subprocesses. Here is what you put in the autoexec.bat file:
How does this avoid those unexpected side effects?
All we’re doing is creating an environment variable called AUTOEXEC . Then, when any subsequent subprocesses open a command session, they will run into the second line and immediately exit the script! This is because subprocesses automatically inherit the environment variables from the parent process.
But wait, there’s more!
This allows you to add as many macros as you want to your command session. For example:
Now you’ve got all the macros you can eat, and you’re saving your command line session each time. But remember, if you don’t explicitly type exit , the history won’t be saved. Closing the window with the mouse won’t work here.
Hope this helps!
* because batch subprocesses often open a second copy of CMD which will run this command again and again, from slowing everything down to other unforseen issues.