Extraido de banyut
Hoy veremos un comando muy simple, pero bastante útil, sobre todo para los despistados como yo que memorizamos lo mínimo posible. Se trata del comando history, con el obtenemos una lista de los últimos comandos introducidos.
Su uso no puede ser más simple, escribiremos el comando en la consola y listo.
$ history
Obteniendo como resultado los últimos 500 comandos que hemos introducido en la consola. Aquí tenéis mis 10 últimos.
490 gpicview cleardot.gif 491 wget http://books.google.com.pe/books?id=t0WOAqc4LsEC&pg=PR7&img=1&zoom=3&hl=es&q=&sig=ACfU3U33biWMhnL-PDj4eMRayI8g5owo9g 492 sudo nautilus 493 sudo aptitude install comix comixcursors 494 ps -e 495 ps -e |grep urban 496 ps -e |grep terr 497 ps -e |grep t 498 ps -e |grep te 499 exit 500 sudo nautilus
Por defecto obtendremos los 500 últimos comandos introducidos, este comportamiento se puede cambiar, por ejemplo podemos dejar que nos muestre los últimos 1000, para ello modificaremos el valor de la variable HISTSIZE que encontraremos en el fichero de configuración ~/.bashrc, esto lo podemos hacer o bien editando el archivo con cualquier editor de texto y modificando el valor actual o escribiendo lo siguiente desde la consola.
$ echo "export HISTSIZE=1000" >> ~/.bashrc
Tampoco es necesario listar los 500 o los 1000 a la vez podemos decir que nos muestre por ejemplo los 5 últimos.
$ history 5
Obtendríamos
496 ps -e |grep terr 497 ps -e |grep t 498 ps -e |grep te 499 exit 500 sudo nautilus
Más que nada por culturilla general, podríamos haber obtenido el mismo resultado con la siguiente instrucción.
$ history |tail -5
El comando history no solo sirve para mostrar un listado de los últimos comandos, a de más, nos ofrece otras funcionalidades que en un momento dado nos puedes resultar de lo más útiles.
Después de ejecutar el comando history podemos ejecutar cualquiera de los comandos que hay en la lista que hemos obtenido únicamente haciendo referencia a su número de linea. Así por ejemplo:
$ history
Obtendríamos
538 cd /tmp 539 mkdir dvd 540 sudo mount /dev/sda1 dvd 541 cd dvd 542 ls 543 cd .. 544 sudo umount dvd 545 rm -r dvd 546 cd 547 history
Para ejecutar cd /tmp, que está en la línea 538, escribiremos lo siguiente.
$ !538
Aquí tenéis el resultado.
banyut@hades:~$ !538 cd /tmp banyut@hades:/tmp$
También nos ofrece la posibilidad de ejecutar el primer comando que se ajuste al patrón especificado, así.
$ history
Obtendríamos
554 cd ~ 555 history 556 cd /tmp 557 ls -la 558 pwd 559 cd ~ 560 pwd 561 time df . 562 history
ahora introducimos.
$ !cd
Que cd se ejecutará?, el de la línea 554 o el de la linea 556 o el da la línea 559. Pues como hemos dicho antes se ejecutará la sentencia más reciente, por lo tanto, en nuestro ejemplo sera el de la línea 559.
banyut@hades:~$ !cd cd ~ banyut@hades:~$
También podemos escribir !!, ejecutando así el último comando introducido.
Demos otro paso más, podemos buscar un comando en el historial, por ejemplo vim con la siguiente instrucción.
banyut@hades:~$ history |grep vim 68 vim /var/log/syslog 80 sudo vim /etc/rc.local 102 sudo vim /etc/syslog.conf 103 sudo vim /etc/default/bootlogd 113 sudo vim /etc/default/bootlogd 198 sudo vim /etc/modules 309 vim /etc/gdm/gdm.conf 310 vim /etc/gdm/gdm.conf-custom 396 vim setup.sh 464 vim /etc/apt/sources.list 473 vim /etc/X11/xorg.conf 474 sudo vim /etc/X11/xorg.conf 506 vim .bashrc 507 vim .bash_history 509 vim .bash_history 511 vim .bashrc 516 vim ~/.bashrc 566 history |grep vim
El comando history nos permite realizar esta tarea sin necesidad de recurrir al comando grep, esto lo realizaremos presionando la combinación Ctrl + r, veremos como el prompt cambia, en ese momento podremos ir escribiendo y nos irán apareciendo los comandos que coincidan con el patrón introducido.
(reverse-i-search)`vim': vim .bash_history
Una vez escribimos el comando a buscar, pulsando nuevamente sobre Ctrl + r, nos desplazaremos a la siguiente coincidencia dentro de la lista y con Ctrl + s nos desplazaremos al anterior.
Cuando encontremos la instrucción deseada, podemos ejecutarla simplemente pulsando sobre la tecla Enter.
Disponemos también de la combinación Alt + P y Alt + N (búsqueda hacia adelante o hacia atrás), donde podremos escribir un comando y tras pulsar Enter nos aparecerá la primera aparición encontrada permitiéndonos editarla o ejecutarla.
En la consola pulsamos Alt + P, el prompt se transformará y podremos escribir un comando
banyut@hades:~$ :
Si escribimos por ejemplo vim
banyut@hades:~$ :vim
Pulsamos Enter y en nuestro prompt aparecerá la sentencia que corresponda, pudiendo modificarla o simplemente ejecutarla pulsando Enter.
banyut@hades:~$ vim .bash_history
Una forma mucho más primitiva y por su puesto mucho menos eficiente, de conseguir esto, es utilizando las teclas del cursor, pulsando Cursor arriba y Cursor abajo, también nos desplazaremos por el historial.
El historial, se guarda en el archivo ~/.bash_history, el cual se puede editar y modificar con cualquier editor de texto.
$ vim ~/.bash_history
Y ya por último, podemos limpiar el historial mediante el siguiente comando.
$ history -c
Pensar que este comando da más de si, solo tenéis que echarle una hojeada al man, pero no les acabo de encontrar demasiada utilidad, así que eso os lo dejo para vosotros.
Ahora para finalizar una curiosidad que encontré por ahí. Con la siguiente instrucción podéis ver los 10 comandos más utilizados y cuantas veces lo habéis usado.
history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -rn|head -10
bueno me hubiera gustado poneros mi resultado, pero claro, haciendo este tuto, he borrado mi historial.
- - -
Nunca he permitido que la escuela entorpeciese mi educación

Felicitaciones
Muy buen tutorial.
Con deseos de Paz
Pablo Alejandro
"No hay nada más hermoso que hacer algo por alguien,
y no hay nada más tonto que no hacer nada por nadie".
León Gieco®
Veni veni canta conmigo
que un amigo vas a encontrar,
que de la mano de Google
tus problemas vas a solucionar.
no iba a prestarle atencion
por un momento no iba a prestarle atencion a lo que escribste, por que con respecto a los comandos siempre tengo a los X-Man para que me ayuden (@rodrigo-laptop:~$ xman ) pero le hice doble clic , pero por ejemplo
eso no lo sabia, ya lo descargue a tu tutorial y me parecio muy bueno, te felicito
Rodrigo
history y fecha
Hola,
Tengo una duda
¿ Hay alguna forma de saber en que día y hora se ejecutó un comando ??
Gracias