meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
linux:history [2010/11/18 14:16] – creado lclinux:history [2023/01/18 14:10] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
 +{{tag>linux history histórico}}
 +===== Linux History =====
 Veamos como sacar el máximo partido al histórico de comandos de linux Veamos como sacar el máximo partido al histórico de comandos de linux
  
-    * Mostrar el timestamp del comando: 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.+=== 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.
  
-<file+<sxh
-export HISTTIMEFORMAT=’%F %T ‘ +export HISTTIMEFORMAT=’%F %T ‘</sxh> 
-history | more +Para ver el histórico de comandos 
-1  2008-08-19 20:01:01 service network restart +<sxh>history | more</sxh>
-2  2008-08-19 20:02:09 exit +
-3  2008-08-19 20:08:39 id +
-4  2008-08-19 20:11:23 cat /etc/inetd.conf +
-</file> +
-    * Búsqueda en el history: presionando Ctrl+R puedes buscar en tu history por un comando. Una vez presionado Ctrl+R en el prompt, empiezas a copiar el comando y el shell buscará por un comando que coincida en parte con lo que estás ingresando. Una vez que de con el comando que buscas puedes presionar Enter para confirmarlo o las flechas izquierda o derecha para editar el comando antes de ejecutarlo.+
  
 +=== Búsqueda en el history ===
 + presionando Ctrl+R puedes buscar en tu history por un comando. Una vez presionado **Ctrl+R** en el prompt, empiezas a copiar el comando y el shell buscará por un comando que coincida en parte con lo que estás ingresando. Una vez que de con el comando que buscas puedes presionar Enter para confirmarlo o las flechas izquierda o derecha para editar el comando antes de ejecutarlo.
 +<note>si al presionar Ctrl+R el primer comando que aparece no es el que buscamos, podemos volver a presionar Ctrl+R para buscar el siguiente que coincida con el patrón de búsqueda</note>
  
-# (reverse-i-search)`inet‘: cat /etc/inetd.conf +<sxh># (reverse-i-search)`inet‘: cat /etc/inetd.conf</sxh>
- +
-    * Repetir el último comando: puedes repetir el último comando de cuatro formas diferentes: presionando la flecha hacia arriba y Enter, ingresando el operador !! (bang bang) y Enter, ingresando !-1 y Enter o 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 !+
  
 +=== Repetir el último comando ===
 + puedes repetir el último comando de cuatro formas diferentes: 
 +  - 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 # history | more
 1  service network restart 1  service network restart
 2  exit 2  exit
 3  cat /etc/services 3  cat /etc/services
 +</sxh> 
 +<sxh>
 # !3 # !3
 cat /etc/services cat /etc/services
 +</sxh>
  
-    * Ejecutar un comando previo que empieza con una palabra específicaingresando ! seguido de unas cuantas letras, ejecutarás nuevamente un comando, que empiece con esas letras, previamente ejecutado. +=== Ejecutar un comando previo que empieza con una palabra específica === 
 + ingresando ! seguido de unas cuantas letras, ejecutarás nuevamente un comando, que empiece con esas letras, previamente ejecutado.
  
 +<sxh>
 # !ps # !ps
 ps ax | grep cron ps ax | grep cron
 5023 ?        Ss    0:00    /usr/sbin/cron 5023 ?        Ss    0:00    /usr/sbin/cron
 8057 pts/0    R+    0:00    grep cron 8057 pts/0    R+    0:00    grep cron
 +</sxh>
  
-    * Controlar la cantidad total de líneas en el historyseteando la variable de entorno HISTSIZE, en el .bash_profile por ejemplo, podrás limitar la cantidad de líneas almacenadas por el history. +=== Controlar la cantidad total de líneas en el history === 
 + seteando la variable de entorno HISTSIZE, en el .bash_profile por ejemplo, podrás limitar la cantidad de líneas almacenadas por el history.
  
 +<sxh>
 # nano ~/.bash_profile # nano ~/.bash_profile
 HISTSIZE=450 HISTSIZE=450
 HISTFILESIZE=450 HISTFILESIZE=450
 +</sxh>
 +=== Cambiar el nombre del archivo history ===
 + por default, el history del bash se almacena en el archivo ~/.bash_history, para cambiar el nombre del mismo, debemos setear la variable de entorno HISTFILE:
  
-    * Cambiar el nombre del archivo history: por default, el history del bash se almacena en el archivo ~/.bash_history, para cambiar el nombre del mismo, debemos setear la variable de entorno HISTFILE: +<sxh>
- +
 # nano ~/.bash_profile # nano ~/.bash_profile
 HISTFILE=$HOME/.historia HISTFILE=$HOME/.historia
 +</sxh>
 +=== Eliminar las entradas contiguas repetidas ===
 + seteando la variable de entorno HISTCONTROL se pueden eliminar las entradas contiguas repetidas, mira el ejemplo:
  
-    * Eliminar las entradas contiguas repetidas: seteando la variable de entorno HISTCONTROL se pueden eliminar las entradas contiguas repetidas, mira el ejemplo: +<sxh>
- +
 # ls # ls
 # ls # ls
Línea 70: Línea 84:
 358  ls 358  ls
 359  history | tail -3 359  history | tail -3
 +</sxh>
  
-    * Borrar duplicados a lo largo del historyel valor ignoredups de la variable de entorno HISTCONTROL utilizado anteriormente solo borra entradas duplicadas consecutivas, para eliminar entradas duplicadas en todo el archivo hay que setear HISTCONTROL=erasedups +=== Borrar duplicados a lo largo del history === 
- + el valor ignoredups de la variable de entorno HISTCONTROL utilizado anteriormente solo borra entradas duplicadas consecutivas, para eliminar entradas duplicadas en todo el archivo hay que setear HISTCONTROL=erasedups
-    * Forzar a que el history no recuerde un comando en particular: seteando la variable HISTCONTROL con el valor ignorespace, puedes hacer que el history no recuerde un comando en particular si al mismo le dejas un espacio en blanco delante.+
  
 +=== Forzar a que el history no recuerde un comando en particular ===
 + seteando la variable HISTCONTROL con el valor ignorespace, puedes hacer que el history no recuerde un comando en particular si al mismo le dejas un espacio en blanco delante.
  
 +<sxh>
 # export HISTCONTROL=ignorespace # export HISTCONTROL=ignorespace
 # ls -l # ls -l
Línea 84: Línea 101:
 568  pwd 568  pwd
 569  history | tail -3 569  history | tail -3
 +</sxh>
  
-    * Limpiar todas las entradas previas del historyejecutando history -c eliminarás para la consola activa todas las entradas previas al history, pero no estarás eliminándolas del bash_history, por lo tanto en una nueva consola conservarás el history. +=== Limpiar todas las entradas previas del history === 
- + ejecutando history -c eliminarás para la consola activa todas las entradas previas al history, pero no estarás eliminándolas del bash_history, por lo tanto en una nueva consola conservarás el 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:+
  
 +=== 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 # ls .bash_logout
 .bash_logout .bash_logout
 # vi !!:$ # vi !!:$
 vi .bash_logout vi .bash_logout
 +</sxh>
 En este otro ejemplo, el !^ a continuación del comando nano obtiene el primer argumento del comando anterior: 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 # cp .bash_logout .bash_logout.old
 # vi !^ # vi !^
 vi .bash_logout vi .bash_logout
 +</sxh>
 +=== 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:
  
-    * 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 # cp .bash_logout .bash_logout.old
 # cat !cp:2 # cat !cp:2
 cat .bash_logout.old cat .bash_logout.old
 +</sxh>
  
-    * Deshabilitar el uso del historysi quieres deshabilitar el history y que el bash shell no recuerde más los comandos ingresados, debes setear la variable HISTSIZE en 0 +=== 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 # export HISTSIZE=0
 # history # history
 # #nota aquí que no se muestra nada # #nota aquí que no se muestra nada
 +</sxh>
 +=== Ignorar comandos específicos ===
 + muchas veces pueded no querer agregar al history comandos usuales como pwd, ls, etc. Para ignorar comandos debemos setear la variable HISTIGNORE (no sería mala idea hacerlo desde el ~/.bash_profile) de la siguiente manera:
  
-    * Ignorar comandos específicos: muchas veces pueded no querer agregar al history comandos usuales como pwd, ls, etc. Para ignorar comandos debemos setear la variable HISTIGNORE (no sería mala idea hacerlo desde el ~/.bash_profile) de la siguiente manera: +<sxh># export HISTIGNORE=”pwd:ls:ls -ltr:” </sxh>
- +
- +
-# export HISTIGNORE=”pwd:ls:ls -ltr:”+
  
  
-===== Referencias =====+===== Artículo Original =====
 http://luauf.com/2008/08/19/utilizar-el-bash-history-a-fondo/ http://luauf.com/2008/08/19/utilizar-el-bash-history-a-fondo/