meta data de esta página
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| linux:history [182010/11/ 13:16] – creado lc | linux:history [182023/01/ 13:10] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | {{tag> | ||
| + | ===== Linux History ===== | ||
| + | Veamos como sacar el máximo partido al histórico de comandos de linux | ||
| + | === Mostrar el timestamp de los comandos === | ||
| + | normalmente cuando ejecutas history ves el número del comando y el comando propiamente dicho. Para propósitos de auditoría también te puede ser útil ver fecha y hora de cuando se ejecutó el comando. Para hacer esto, hay que setear la variable de entorno HISTTIMEFORMAT. | ||
| + | |||
| + | <sxh> | ||
| + | export HISTTIMEFORMAT=’%F %T ‘</ | ||
| + | Para ver el histórico de comandos | ||
| + | < | ||
| + | |||
| + | === Búsqueda en el history === | ||
| + | | ||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | === Repetir el último comando === | ||
| + | | ||
| + | - presionando la flecha hacia arriba y Enter | ||
| + | - ingresando el operador !! (bang bang) y Enter | ||
| + | - ingresando !-1 y Enter | ||
| + | - presionando Ctrl+P y Enter. | ||
| + | |||
| + | === Ejecutar un comando específico del history === | ||
| + | para ejecutar un comando específico del history, debes conocer el número del mismo y luego anteceder al número del mismo el operador ! | ||
| + | Por ejemplo | ||
| + | <sxh> | ||
| + | # history | more | ||
| + | 1 service network restart | ||
| + | 2 exit | ||
| + | 3 cat / | ||
| + | </ | ||
| + | <sxh> | ||
| + | # !3 | ||
| + | cat / | ||
| + | </ | ||
| + | |||
| + | === Ejecutar un comando previo que empieza con una palabra específica === | ||
| + | | ||
| + | |||
| + | <sxh> | ||
| + | # !ps | ||
| + | ps ax | grep cron | ||
| + | 5023 ? Ss 0:00 / | ||
| + | 8057 pts/0 R+ 0:00 grep cron | ||
| + | </ | ||
| + | |||
| + | === Controlar la cantidad total de líneas en el history === | ||
| + | | ||
| + | |||
| + | <sxh> | ||
| + | # nano ~/ | ||
| + | HISTSIZE=450 | ||
| + | HISTFILESIZE=450 | ||
| + | </ | ||
| + | === Cambiar el nombre del archivo history === | ||
| + | por default, el history del bash se almacena en el archivo ~/ | ||
| + | |||
| + | <sxh> | ||
| + | # nano ~/ | ||
| + | HISTFILE=$HOME/ | ||
| + | </ | ||
| + | === Eliminar las entradas contiguas repetidas === | ||
| + | | ||
| + | |||
| + | <sxh> | ||
| + | # ls | ||
| + | # ls | ||
| + | # ls | ||
| + | # history | tail -4 | ||
| + | 353 ls | ||
| + | 354 ls | ||
| + | 355 ls | ||
| + | 356 history | tail -4 | ||
| + | # | ||
| + | # export HISTCONTROL=ignoredups | ||
| + | # ls | ||
| + | # ls | ||
| + | # ls | ||
| + | # history | tail -3 | ||
| + | 357 export HISTCONTROL=ignoredups | ||
| + | 358 ls | ||
| + | 359 history | tail -3 | ||
| + | </ | ||
| + | |||
| + | === Borrar duplicados a lo largo del history === | ||
| + | el valor ignoredups de la variable de entorno HISTCONTROL utilizado anteriormente solo borra entradas duplicadas consecutivas, | ||
| + | |||
| + | === Forzar a que el history no recuerde un comando en particular === | ||
| + | | ||
| + | |||
| + | <sxh> | ||
| + | # export HISTCONTROL=ignorespace | ||
| + | # ls -l | ||
| + | # pwd | ||
| + | # service httpd stop | ||
| + | # history | tail -3 | ||
| + | 567 ls -ltr | ||
| + | 568 pwd | ||
| + | 569 history | tail -3 | ||
| + | </ | ||
| + | |||
| + | === Limpiar todas las entradas previas del history === | ||
| + | | ||
| + | |||
| + | === Sustituir palabras de los comandos del history === | ||
| + | a veces puede ser que necesites ejecutar otro comando, pero con el mismo argumento que el comando anterior. En el siguiente ejemplo, el !!:$ a continuación del comando nano obtiene el argumento del comando anterior: | ||
| + | |||
| + | <sxh> | ||
| + | # ls .bash_logout | ||
| + | .bash_logout | ||
| + | # vi !!:$ | ||
| + | vi .bash_logout | ||
| + | </ | ||
| + | En este otro ejemplo, el !^ a continuación del comando nano obtiene el primer argumento del comando anterior: | ||
| + | <sxh> | ||
| + | # cp .bash_logout .bash_logout.old | ||
| + | # vi !^ | ||
| + | vi .bash_logout | ||
| + | </ | ||
| + | === Sustituir un argumento específico de un comando específico === | ||
| + | en el siguiente ejemplo, !cp:2 busca por el comando anterior que empieza con cp y toma el segundo argumento y lo sustituye para el comando cat que se ejecuta a continuación: | ||
| + | |||
| + | <sxh> | ||
| + | # cp .bash_logout .bash_logout.old | ||
| + | # cat !cp:2 | ||
| + | cat .bash_logout.old | ||
| + | </ | ||
| + | |||
| + | === Deshabilitar el uso del history === | ||
| + | si quieres deshabilitar el history y que el bash shell no recuerde más los comandos ingresados, debes setear la variable HISTSIZE en 0 | ||
| + | |||
| + | <sxh> | ||
| + | # export HISTSIZE=0 | ||
| + | # history | ||
| + | # #nota aquí que no se muestra nada | ||
| + | </ | ||
| + | === Ignorar comandos específicos === | ||
| + | | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | ===== Artículo Original ===== | ||
| + | http:// | ||