El comando History
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&
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




Comentarios sobre El comando History