Почему консоли Windows теряют историю командной строки (стрелка вверх) через какое-то время?
Кажется случайным: после некоторого количества времени/использования любой консоли, которую я использую в Windows Vista, я теряю возможность использовать историю командной строки (или командный буфер, если вы предпочитаете...), и попадание стрелка вверх или вниз больше не делает ничего, что означает, что в истории есть по существу 0 элементов.
Я видел это поведение в Cygwin, CMD и PowerShell.
Иногда это поведение относится к процессам, выполняющимся внутри консоли - Python, клиент MySQL и т.д.
Является ли это неотъемлемой проблемой в Windows? Где-то где-то? Существуют ли другие консоли, у которых нет этой проблемы?
ps - если вы считаете, что это связано не с программированием, см. другие вопросы, касающиеся инструментов программирования, например, почти что-либо помеченное тегом "eclipse", в котором рассматриваются способы использования IDE, а не программирования для него.
Ответы
Ответ 1
Два способа, я думаю.
1) Far Manager - хороший выбор для оболочки. Даже если вам не нужна вся мощь (управление файлами/архивами, редактор, огромное количество плагинов, макросов), вы можете использовать его как оболочку/исполнитель для cmd, tcc, sh или любой другой программы, оболочки или командного процессора.
Например
- возьмите 3 файла из дистрибутива (Far2 или Far3): far.exe, fareng.lng и (необязательно) fareng.hlp
- запустите "far.exe/w", нажмите Ctrl+B Ctrl+O
- введите любую команду в командной строке: dir, set, notepad, putty, и так далее...
История будет сохранена между сеансами, вы можете получить к ней доступ Alt+F8 (нажмите Ctrl+Alt+F, чтобы переключить историю в режим фильтра).
Far 2.0 хранит историю (и настройки) в реестре.
Far 3.0 хранит историю в базе данных SQLite и может быть переносимой.
Кроме того, Far может автозаполнять команды из истории или файлов/путей с диска. И есть плагин (YAC), который может автозаполнять из псевдонимов и т.д....
2) Я нашел недавно интересный проект: Clink - Приведение Bash редактирование мощной командной строки для Microsoft Windows cmd.exe
- Мощное Bash -подобное редактирование строк из библиотеки GNU Readline. Подробнее читайте на быстрых клавишах Readline.
- Превосходное завершение пути (TAB).
- Вставить из буфера обмена (Ctrl-V).
- Поддержка завершения исполняемых файлов/команд и переменных среды.
- Отменить/Восстановить (Ctrl-_ или Ctrl-X, Ctrl-U)
- Улучшена история командной строки.
- Сохраняет все сеансы.
- Поиск (Ctrl-R и Ctrl-S).
- Расширение истории (например,!!,! и! $).
- Сценарий с использованием Lua.
Кажется, это молодой, но начинающий проект, поэтому я создал опцию для использования в моем Консольном эмуляторе.
Ответ 2
Максимальный размер буфера истории в окнах "Окно DOS" - значок "Верхний левый", правый щелчок, выбор свойств, и вы увидите, что по умолчанию для истории команд размер буфера равен 50.
Ответ 3
В PowerShell вы можете управлять максимальным размером истории с помощью автоматической переменной MaximumHistoryCount (по умолчанию 64)
PS > $MaximumHistoryCount
Ответ 4
Проверьте клавишу прокрутки.
DOH! Я случайно попал в шахту, чтобы стрелка вверх и вниз просто прокручивала окно.
Ответ 5
Я столкнулся с этой проблемой много лет. В основном с помощью python, используемого из командной строки в оболочке bash. После некоторых экспериментов сегодня, когда это произошло повторно в 1000-й раз (более или менее), я смог исправить проблему, установив для History History для оболочки размер буфера 999 и количество буферов до 999 (я выбрал самый большой возможно, для каждой из них возможно, что любая настройка работала бы иначе, чем я был ранее, что составляло 50/50). Чтобы получить доступ к истории команд, щелкните правой кнопкой мыши в верхнем левом углу окна оболочки, выберите "Свойства", затем вкладку "Параметры". Я не уверен, что последствия этих настроек для производительности оболочки, но пока ничего не изменилось, и история командной строки снова работает для меня в той же оболочке, в которой она ранее не работала. Я понимаю, что этот ответ похоже на ответ steve-gilham, но, возможно, дает немного больше фона.
По общему признанию, мой ответ включает в себя 1 эксперимент, который сработал.
Ответ 6
Вся история в консоли предоставляется Doskey. Он также всегда доступен для всех интерактивных программ на основе символов (таких как отладчики программ или программ передачи файлов) и поддерживает буфер истории команд и макросы для каждой запущенной программы.
В эпоху DOS можно вспомнить программное обеспечение, которое после выполнения очистило историю. Я не уверен, что это были ошибки, ожидаемое поведение или сочетание двух. Но некоторые ошибки Doskey были известны, как вы можете видеть в конце эту ссылку.
Я предлагаю всем, кто получит эту проблему, попробовать параметры команды Doskey и посмотреть, сможет ли он ее исправить.
Ответ 7
Я никогда не испытывал этого, но мне интересно, может быть причиной нажатия клавиши ALT+F7
, которая очищает историю команд в соответствии с DOSKEY /?
.
Ответ 8
Если "внезапно" вся история исчезла, возможно, начнется новая CMD-оболочка?
Тест:
C:\Users\Guest\>doskey /history
…long history…
C:\Users\Guest\>cmd
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Guest\>doskey /history
…no history…
C:\Users\Guest\>exit
C:\Users\Guest\>doskey /history
…old long history…
В этом примере вы увидите новый cmd-Start, но если вы попробуете это:
doskey /history
…history list…
cmd echo /k
doskey /history
…no list !
Вы не видите
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
Но была запущена новая CMD-оболочка.
Поэтому "выход" может помочь в этом случае!