2009-08-06 9 views
23

Parece aleatorio: después de una cierta cantidad de tiempo/uso de cualquier consola que uso en Windows Vista, pierdo la capacidad de usar el historial de línea de comandos (o el búfer de comandos, si lo prefiere ...), y pulsando hacia arriba o flecha abajo ya no hace nada en absoluto, lo que significa que hay esencialmente 0 elementos disponibles en el historial.¿Por qué las consolas de Windows pierden el historial de línea de comandos (flecha arriba) después de un tiempo?

He visto este comportamiento en Cygwin, CMD y PowerShell.

veces, este comportamiento se aplica a los procesos que se ejecutan dentro de la consola - cliente Python, MySQL, etc.

Es éste un problema inherente en Windows? Un lugar en algún lugar? ¿Hay otras consolas que no tienen este problema?

ps - si cree que esto no está relacionado con la programación, consulte otras preguntas sobre herramientas de programación, por ejemplo, casi cualquier elemento etiquetado como "eclipse" que trate sobre cómo usar el IDE en lugar de programar para él.

+0

+1 Veo esto de vez en cuando usando cygwin. Confío mucho en ctrl + r para recordarme algunos de los complicados comandos que uso todo el tiempo. Entonces esto se rompe y tengo que descubrir la sintaxis exacta de un montón de comandos –

+0

¿Bien? ¿Alguna vez resolvió esto? –

+3

Sí. Dejé de usar Windows. – wsorenson

Respuesta

5

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 manera predeterminada.

+0

Sin embargo, este no es exactamente el problema: es de esperar que esto implique una ventana flotante de la historia, en lugar de la historia ** se rompe ** cuando llega a 50 - la rotura es el comportamiento observado y, a veces mucho antes de 50 – wsorenson

+0

¿Qué quieres decir con descansos? –

+0

La flecha hacia arriba ya no recuerda ningún elemento. – wsorenson

4

En PowerShell se puede controlar el tamaño máximo de la historia a través de la variable automática MaximumHistoryCount (por defecto es 64)

PS> $ MaximumHistoryCount

17

dos maneras, creo.

1) Far Manager es una buena opción para un caparazón. Incluso si no necesita todo el poder (administración de archivos/archivos, editor, gran cantidad de complementos, macros), puede usarlo como 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
  • run "far.exe/w", pulse Ctrl + BCtrl + O
  • tipo cualquier comando en la línea de comando: dir, conjunto, bloc de notas, masilla, un etc. ...

Historia Wil Se conservará entre sesiones, puede acceder a él por Alt + F8 (presione Ctrl + Alt + F para cambiar el historial al modo de filtro).

Far 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 del historial o archivos/rutas del disco. Y hay plug-in (YAC) que puede autocompletar de alias y así sucesivamente ...

2) he encontrado interesante proyecto recientemente: Clink - Llevar potente edición de línea de comandos de Bash a cmd Microsoft Windows.exe

  • Poderosa edición de línea similar a Bash desde la librería Readline de GNU. Lea más sobre los atajos de teclado de Readline.
  • Finalización de ruta superior (TAB).
  • Pegar desde el portapapeles (Ctrl-V).
  • Soporte para completar ejecutables/comandos y variables de entorno.
  • deshacer/rehacer (Ctrl-_ o Ctrl-X, Ctrl-T)
  • Mejora de la historia de la línea de comandos.
    • Persiste en todas las sesiones.
    • buscable (Ctrl-R y Ctrl-S).
    • Expansión de historial (por ejemplo, !!,! Y! $).
  • Secuencia de comandos completa usando Lua.

Parece un proyecto joven pero en ciernes, así que había creado una opción para usarlo en mi Console Emulator.

+1

¿Por qué hay tantos votos al alza? Esta es una buena información, pero no responde a la pregunta real (que es que el usuario probablemente pulse "Bloq Despl"). – ThisGuy

1

Todo el historial en la consola es provisto por Doskey. También está siempre disponible para todos los programas interactivos basados ​​en caracteres (como depuradores de programas o programas de transferencia de archivos) y mantiene un búfer de historial de comandos y macros para cada programa que inicia.

En la era de DOS, uno puede recordar softwares 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 se conocían como se puede ver al final de this link.

Sugiero a cualquiera que tenga este problema que pruebe las opciones del comando Doskey y vea si puede corregirlo.

4

Revise su Tecla de desplazamiento. DOH! Golpeé el mío por accidente, de modo que la flecha hacia arriba y hacia abajo simplemente se desplazó por la ventana.

+0

¡Doh, yo también! Esta debería ser la respuesta aceptada. – ThisGuy

0

Nunca he experimentado esto, pero me pregunto si presionar la combinación de teclas ALT+F7, que borra el historial de comandos según DOSKEY /?, podría ser la causa.

2

He encontrado este problema por años. Principalmente con python usado desde la línea de comando en un shell bash. Después de algunos experimentos hoy cuando esto volvió a ocurrir por la milésima vez (más o menos), pude solucionar el problema configurando el historial de comandos para que el shell tenga un tamaño de búfer de 999 y un número de búferes de 999 (elegí el más grande configuración posible para cada uno, es posible que cualquier configuración haya funcionado de otra manera que lo que era antes, que era 50/50). Para acceder al historial de Comando, haga clic derecho en la esquina superior izquierda de la ventana del shell, seleccione Propiedades, luego la pestaña Opciones. No estoy seguro de las ramificaciones de estas configuraciones para el rendimiento del shell, pero hasta ahora nada más parece verse afectado y el historial de línea de comandos vuelve a funcionar para mí en el mismo shell en el que antes no funcionaba. Me doy cuenta de que esta es la respuesta similar a la respuesta de steve-gilham, pero quizás da un poco más de antecedentes.

Es cierto que mi respuesta implica 1 experimento que funcionó.

0

Si "de repente" todo el historial se ha ido, ¿tal vez se inicia un nuevo shell cmd? 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… 

De la causa en este ejemplo te ver el nuevo CMD-Start pero si intenta salir esto:

doskey /history 
    …history list… 
cmd echo /k 
doskey /history 
    …no list ! 

que no se ve

Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

Pero se inició un nuevo CMD-Shell. ¡Entonces "salir" puede ayudar en este caso!

Cuestiones relacionadas