ventana - ¿Por qué las consolas de Windows pierden el historial de la línea de comandos(flecha arriba) después de un tiempo?
teclas de acceso rapido en windows (8)
Compruebe su tecla de bloqueo de desplazamiento . DOH! Golpeé la mía por accidente, de modo que la flecha hacia arriba y hacia abajo simplemente desplazó la ventana.
Parece aleatorio: después de una cierta cantidad de tiempo / uso de cualquier consola que use en Windows Vista, pierdo la capacidad de usar el historial de la línea de comandos (o el búfer de comandos, si lo prefiere ...), y al subir o bajar arrow ya no hace nada, lo que significa que hay esencialmente 0 elementos disponibles en el historial.
He visto este comportamiento en Cygwin, CMD y PowerShell.
A veces, este comportamiento se aplica a los procesos que se ejecutan dentro de la consola: Python, cliente MySQL, etc.
¿Es este un problema inherente en Windows? ¿Un escenario en algún lugar? ¿Hay otras consolas que no tengan este problema?
ps: si cree que esto no está relacionado con la programación, consulte otras preguntas relacionadas con las herramientas de programación, por ejemplo, casi cualquier cosa etiquetada como "eclipse" que trata sobre cómo usar el IDE en lugar de programarlo.
Dos maneras, creo.
1) Far Manager es una buena opción para un shell. Incluso si no necesita todo el poder (administración de archivos / archivos, editor, gran cantidad de complementos, macros), puede usarlo como un contenedor / ejecutor para cmd, tcc, sh o cualquier otro programa, shell o procesador de comandos. .
Por ejemplo
- tomar 3 archivos de distrib (Far2 o Far3): far.exe, fareng.lng y (opcionalmente) fareng.hlp
- ejecute "far.exe / w", presione Ctrl + B Ctrl + O
- escriba cualquier comando en la línea de comandos: dir, set, notepad, putty, etc ...
El historial se conservará entre las sesiones, puede acceder a él con Alt + F8 (presione Ctrl + Alt + F para cambiar el historial al modo de filtro).
Lejos 2.0 almacena el historial (y la configuración) en el registro.
Far 3.0 almacena el historial en la base de datos SQLite, y puede ser portátil.
Además, Far puede autocompletar comandos desde el historial o archivos / rutas desde el disco. Y hay un complemento (YAC) que puede autocompletar desde alias y así sucesivamente ...
2) Recientemente he encontrado un proyecto interesante: Clink : Trayendo la poderosa edición de la línea de comandos de Bash a cmd.exe de Microsoft Windows
- Potente edición de línea tipo Bash de la biblioteca Readline de GNU. Lea más sobre los atajos de teclado de Readline.
- Completar camino superior ( TAB ).
- Pegar desde el portapapeles ( Ctrl-V ).
- Soporte para la finalización de ejecutables / comandos, y variables de entorno.
- Deshacer / Rehacer ( Ctrl-_ o Ctrl-X , Ctrl-U )
- Historial de línea de comandos mejorado.
- Persiste a través de las sesiones.
- Se puede buscar ( Ctrl-R y Ctrl-S ).
- Expansión de la historia (por ejemplo,!,! Y! $).
- Finalización de secuencias de comandos utilizando Lua.
Parece un proyecto joven pero en ciernes, así que había creado una opción para usarlo en mi Emulador de consola .
En PowerShell puede controlar el tamaño máximo del historial a través de la variable automática MaximumHistoryCount (el valor predeterminado es 64)
PS> $ MaximumHistoryCount
Hay un tamaño máximo de búfer de historial en un "cuadro de DOS" de Windows: icono superior izquierdo, clic derecho, seleccionar propiedades y verá que el Historial de comandos tiene un tamaño de búfer de 50 de forma predeterminada.
Me he encontrado con este problema durante años. Principalmente con python usado desde la línea de comandos en un shell bash. Después de algunos experimentos hoy, cuando esto volvió a ocurrir por milésima vez (más o menos), pude solucionar el problema configurando el Historial de comandos para que el shell tuviera un tamaño de búfer de 999 y un número de búferes a 999 posible configuración para cada uno, es posible que cualquier configuración hubiera funcionado de manera diferente a la anterior, que era 50/50). Para acceder al historial de comandos, haga clic con el botón derecho en la esquina superior izquierda de la ventana de shell, seleccione Propiedades y luego la pestaña Opciones. No estoy seguro de las ramificaciones de estas configuraciones en el rendimiento del shell, pero hasta ahora nada más parece afectado y el historial de línea de comandos una vez más funciona para mí en el mismo shell en el que no estaba trabajando anteriormente. Me doy cuenta de que esta respuesta es similar a la respuesta de steve-gilham, pero tal vez da un poco más de antecedentes.
Es cierto que mi respuesta involucra 1 experimento que funcionó.
Si "de repente" desaparece todo el historial, ¿quizás se inicie un nuevo cmd-shell? Prueba:
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…
Por este motivo, en este ejemplo verá el nuevo cmd-Start, pero si prueba esto:
doskey /history
…history list…
cmd echo /k
doskey /history
…no list !
Tu no ves
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
Pero se inició un nuevo CMD-Shell. Así que "salir" puede ayudar en este caso!
Toda la historia en consola es proporcionada por Doskey . También está siempre disponible para todos los programas interactivos basados en caracteres (como los depuradores de programas o los programas de transferencia de archivos) y mantiene un búfer de historial de comandos y macros para cada programa que se inicia.
En la era de DOS, uno puede recordar los programas que después de la ejecución borraron el historial. No estoy seguro de que fueran errores, comportamiento esperado o la combinación de dos. Pero algunos errores de Doskey fueron conocidos como se puede ver al final de este enlace .
Sugiero a cualquiera que tenga este problema que pruebe las opciones de comando de Doskey y vea si puede corregirlo.
Nunca experimenté esto, pero me pregunto si presionando la combinación de teclas ALT+F7
, ¿qué se borra el historial de comandos de acuerdo con DOSKEY /?
, podría ser la causa.