El comando History

Imagen de banyut
0 puntos

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

Imagen de PabliNet
+1
0
-1

Muy buen tutorial.

Con deseos de Paz
Pablo Alejandro

+1
0
-1

"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.

Imagen de nicolas_andr
+1
0
-1

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

ejecutar cd /tmp, que está en la línea 538

eso no lo sabia, ya lo descargue a tu tutorial y me parecio muy bueno, te felicito

Rodrigo

+1
0
-1
Imagen de pedro97zg
+1
0
-1

Hola,

Tengo una duda

¿ Hay alguna forma de saber en que día y hora se ejecutó un comando ??

Gracias

+1
0
-1
Imagen de julio774
+1
0
-1

Agrego informacion a tu articulo aqui les dejo 89 comando mas usado en ubuntu..

http://lifeunix.com/?q=los-89-comandos-sudo-mas-usados-en-ubuntu

+1
0
-1

hecho por mi Carlo :  Los 89 comandos mas usados en Ubuntu