it-swarm-es.com

¿Existe una historia global y persistente de CMD?

A veces olvido cómo se ve la sintaxis exacta de un comando CMD y luego me gustaría buscar en mi propio historial CMD. Claramente, dentro de la misma sesión, puede navegar con las teclas de flecha hacia arriba y hacia abajo, pero ¿qué pasa con el historial de sesiones anteriores de CMD? ¿Hay un archivo, un registro en el que se escribe el historial o todo va al Nirvana digital?

¡Gracias!

105
raoulsson

No, el historial del símbolo del sistema de Windows no se puede guardar cuando finaliza una sesión.

35
Massimo

No de forma nativa, pero consulte: http://mridgers.github.io/clink/ , hace que cmd.exe sea mucho más productivo. Citando características de la página del proyecto:

Powerful Bash-like line editing from GNU's Readline library.
Superior path completion (TAB).
Paste from clipboard (Ctrl-V).
Support for the completion of executables/commands, and environment variables.
Undo/Redo (Ctrl-_ or Ctrl-X, Ctrl-U)
Improved command line history.
Persists across sessions.
Searchable (Ctrl-R and Ctrl-S).
History expansion (e.g. !!, !<string>, and !$).
Scriptable completion using Lua.
68
Robert Bak

Massimo tiene razón en que el historial del símbolo del sistema no persiste en las sesiones. Puede tomar esto manualmente antes de cerrar su solicitud escribiendo doskey/history> history.txt

O ... podría usar PowerShell como su mensaje CMD, y seguir esta publicación para mantener su historial en todas las sesiones.

15
Sean Earp

Puedes usar clink.

Clink combina el cmd.exe nativo de Windows Shell con las potentes funciones de edición de línea de comandos de la biblioteca de línea de lectura GNU), que proporciona capacidades completas de finalización, historial y edición de línea.

La forma más fácil de instalar clink es usar chocolatey . Una vez que instale chocolatey, puede instalar clink escribiendo

choco install clink

A partir de la próxima vez que inicie cmd.exe, debería almacenar el historial en todas las sesiones.

11
Joji Antony

Es posible guardar el historial actual en un archivo,

`$ doskey /history > somefile.txt`

Pero parece que no hay forma de volver a cargarlo como historia. Solo es posible usar un argumento de línea de comando para cargar y ejecutar todas las líneas,

cmd.exe /K somefile.txt

, lo que puede ser útil para cargar una lista de macros de doskey. Esta invocación podría incluirse en un acceso directo para que no necesite escribirla siempre; esta referencia tiene información adicional sobre este enfoque .

Hay una pregunta similar en Superusuario que trae algunas alternativas, incluyendo clink , como lo sugiere @RobertBak.

7
mMontu

Historial de comandos: para habilitar un historial de comandos (al que se puede acceder utilizando las teclas de flecha arriba y abajo) simplemente ejecute doskey en el símbolo del sistema. Por ejemplo, para crear un historial de comandos de 100 elementos:

doskey /listsize=100

ref: https://users.cs.jmu.edu/bernstdh/web/common/help/ntshell.php

1
Moataz AL Dawood

clink es agradable y el autor publica un paquete de chocolate en cada lanzamiento, sin embargo, sugeriría DeepBlueCLI.

Puede usar https://github.com/sans-blue-team/DeepBlueCLI para configurar el Id. De evento de seguridad de Windows 4688.

Para PowerShell, DeepBlueCLI también utiliza el registro de módulos (evento 4013 de PowerShell) y el registro de bloques de script (4104). No usa transcripción.

El beneficio adicional es que registra el hash de la línea de comando exe en el registro de eventos de AppLocker. Fuente: https://docs.Microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing

Además, debido a que esta solución utiliza la infraestructura de registro de eventos de Windows, puede consultarla a través de WMI o PowerShell Get-EventLog. Con clink, debe aprender otra herramienta para detectar patrones de comportamiento en todo el sistema o la red.

1
John Zabroski