history es un comando en los sistemas Unix que le permite ver el historial del trabajo del usuario con la línea de comando. Apareció en el Berkely Unix csh (2BSD) original, donde estaba incorporado. Mejorar la interactividad fue uno de los principales objetivos del desarrollo de csh, por lo que puede resaltar todo un conjunto de funciones relacionadas con el trabajo con el historial, en particular, al editar el comando actual, se permite sustituir el último comando y reemplazar una subcadena en él usando una expresión regular. Con la llegada de GNU History Library (ahora parte de GNU Readline ), han aparecido extensiones de historial de comandos interactivos en casi todos los shells comerciales.
A menudo es conveniente en los casos en que necesita averiguar el curso de las acciones realizadas anteriormente o recordar el nombre olvidado de un comando que se usó una vez.
La salida consiste en una lista.
De forma predeterminada, se muestra una lista de una docena y media a dos docenas de comandos recientes.
En las primeras versiones de Unix, el comando de historial era un programa separado. Sin embargo, la mayoría de los shells han incluido durante mucho tiempo el comando history como un shell incorporado, por lo que ya no se usa un programa separado.
El comando funciona con un archivo de comandos almacenado en un archivo en el directorio de inicio del usuario. El nombre del archivo está determinado por el valor de la variable de entorno HISTFILE , y el formato exacto de la entrada en el archivo depende del shell específico y sus opciones de compilación, y puede incluir la hora de inicio y la duración del comando en segundos.
Durante la operación, el shell interactivo almacena el historial de ejecución de los comandos de la sesión actual en un búfer de RAM, que se escribe en un archivo de almacenamiento durante el cierre normal. Este búfer se utiliza tanto para el comando de historial como para extensiones interactivas (sustitución de palabras con un prefijo '!') y edición, en particular, comandos para volver al comando anterior o siguiente. En el inicio, el shell llena este búfer con comandos del archivo de almacenamiento. Guardar el historial de la sesión actual generalmente requiere la existencia de un archivo de almacenamiento en el disco, y si no se creó automáticamente cuando se creó el usuario, debe crearse manualmente.
La mayoría de los shells modernos tienen opciones que controlan el proceso de escribir el historial en el disco (tamaño máximo de archivo, reemplazar el contenido del archivo o agregar datos de la sesión actual, guardar el historial periódicamente durante la operación, sincronizar contenido entre varias sesiones simultáneas, evitar repeticiones consecutivas, eliminando espacios extra, etc. .P).