El poder de Linux History Command a Bash Shell
Utilitzem l'ordre history amb freqüència a les nostres tasques rutinàries diàries per comprovar l'historial d'ordres o per obtenir informació sobre l'ordre executada per l'usuari. En aquesta publicació, veurem com podem utilitzar l'ordre de l'historial de manera eficaç per extreure l'ordre que van executar els usuaris a l'intèrpret d'ordres Bash. Això pot ser útil amb finalitats d'auditoria o per esbrinar quina ordre s'executa en quina data i hora.
Per defecte, la data i la marca de temps no es veuran mentre s'executa l'ordre de l'historial. Tanmateix, bash shell proporciona eines CLI per editar l'historial d'ordres de l'usuari. Vegem alguns consells i trucs útils i el poder de l'ordre history.
1. Llista les darreres/totes les ordres executades a Linux
Si executeu una ordre senzilla historial des del terminal us mostrarà una llista completa de les darreres ordres executades amb números de línia.
[[email ~]$ history 1 PS1='\e[1;35m[\[email \h \w]$ \e[m ' 2 PS1="\e[0;32m[\[email \h \W]$ \e[m " 3 PS1="\[email \h:\w [\j]$ " 4 ping google.com 5 echo $PS1 6 tail -f /var/log/messages 7 tail -f /var/log/messages 8 exit 9 clear 10 history 11 clear 12 history
2. Llista totes les ordres amb data i marca de temps
Com trobar data i marca de temps contra l'ordre? Amb l'ordre 'exportar' amb variable, es mostrarà l'ordre de l'historial amb la marca de temps corresponent quan s'ha executat l'ordre.
[[email ~]$ export HISTTIMEFORMAT='%F %T ' 1 2013-06-09 10:40:12 cat /etc/issue 2 2013-06-09 10:40:12 clear 3 2013-06-09 10:40:12 find /etc -name *.conf 4 2013-06-09 10:40:12 clear 5 2013-06-09 10:40:12 history 6 2013-06-09 10:40:12 PS1='\e[1;35m[\[email \h \w]$ \e[m ' 7 2013-06-09 10:40:12 PS1="\e[0;32m[\[email \h \W]$ \e[m " 8 2013-06-09 10:40:12 PS1="\[email \h:\w [\j]$ " 9 2013-06-09 10:40:12 ping google.com 10 2013-06-09 10:40:12 echo $PS1
%F Equivalent to %Y - %m - %d %T Replaced by the time ( %H : %M : %S )
3. Filtre les ordres a l'historial
Com podem veure, la mateixa ordre es repeteix un nombre de vegades a la sortida anterior. Com filtrar ordres simples o no destructives de la història?. Utilitzeu l'ordre exportar següent especificant l'ordre a HISTIGNORE='ls -l:pwd:date:' no es desarà pel sistema i no es mostrarà a l'ordre de l'historial.
[[email ~]$ export HISTIGNORE='ls -l:pwd:date:'
4. Ignora les ordres duplicades a l'historial
Amb l'ordre següent ens ajudarà a ignorar l'entrada d'ordres duplicades feta per l'usuari. Només es mostrarà una entrada única a l'historial, si un usuari executa la mateixa ordre diverses vegades en una sol·licitud de Bash.
[[email ~]$ export HISTCONTROL=ignoredups
5. Desactiva l'ordre d'exportació
Desactiva l'ordre d'exportació sobre la marxa. Executeu l'ordre desactiva l'exportació amb la variable una per una qualsevol ordre que s'hagi exportat mitjançant l'ordre exportar.
[[email ~]$ unset export HISTCONTROL
6. Desa l'ordre d'exportació permanentment
Feu una entrada a .bash_profile de la manera següent per desar l'ordre d'exportació permanentment.
[[email ~]$ vi .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs export HISTCONTROL=ignoredups PATH=$PATH:$HOME/bin export PATH
7. Llista les ordres executades per un usuari específic
Com veure l'historial de comandes executades per un usuari específic. Bash guarda registres de l'historial en un fitxer ‘~/.bash_history’. Podem veure o obrir un fitxer per veure l'historial d'ordres.
[[email ~]$ vi .bash_history cd /tmp/ cd logstalgia-1.0.3/ ./configure sudo passwd root apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc ./configure make apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc++ apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc apt-get install make mysql -u root -p apt-get install grsync apt-get install unison unison
8. Desactiva l'emmagatzematge de l'historial d'ordres
Algunes organitzacions no conserven l'historial d'ordres a causa de la política de seguretat de l'organització. En aquest cas, podem editar el fitxer .bash_profile (és un fitxer ocult) de l'usuari i fer una entrada com a continuació.
[[email ~]$ vi .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin HISTSIZE=0 export PATH .bash_profile (END)
Deseu el fitxer i carregueu els canvis amb l'ordre següent.
[[email ~]$ source .bash_profile
Nota: si no voleu que el sistema recordi les ordres que heu escrit, només heu d'executar l'ordre següent que desactivarà o aturarà l'enregistrament de l'historial sobre la marxa.
[[email ~]$ export HISTSIZE=0
Consells: cerqueu HISTSIZE i editeu-lo al fitxer /etc/profile amb el superusuari. El canvi de fitxer s'afectarà globalment.
9. Suprimeix o esborra l'historial d'ordres
Amb les fletxes amunt i avall, podem veure l'ordre utilitzat anteriorment que pot ser útil o que us pot enfadar. Esborrar o esborrar totes les entrades de la llista d'historial de bash amb les opcions -c.
[[email ~]$ history -c
10. Cerca ordres a l'historial mitjançant l'ordre Grep
Cerqueu l'ordre a través de .bash_history introduint el vostre fitxer d'historial a grep com es mostra a continuació. Per exemple, l'ordre següent cercarà i trobarà l'ordre pwd a la llista de l'historial.
[[email ~]$ history | grep pwd 113 2013-06-09 10:40:12 pwd 141 2013-06-09 10:40:12 pwd 198 2013-06-09 15:46:23 history | grep pwd 202 2013-06-09 15:47:39 history | grep pwd
11. Cerca la darrera ordre executada
Cerca l'ordre executada anteriorment amb l'ordre ‘Ctrl+r’. Un cop hàgiu trobat l'ordre que esteu buscant, premeu Enter per executar el mateix, sinó premeu esc per cancel·lar-lo.
(reverse-i-search)`source ': source .bash_profile
12. Recordeu l'última ordre executada
Recordeu una ordre específica utilitzada anteriorment. La combinació de l'ordre Bang i 8 (!8) recordarà l'ordre número 8 que heu executat.
[[email ~]$ !8
13. Recordeu l'ordre específic executat per últim
Recordeu l'ordre utilitzat anteriorment (netstat -np | grep 22) amb '!' i seguit d'algunes lletres d'aquesta ordre en particular.
[[email ~]$ !net netstat -np | grep 22 (No info could be read for "-p": geteuid()=501 but you should be root.) tcp 0 68 192.168.50.2:22 192.168.50.1:1857 ESTABLISHED - tcp 0 0 192.168.50.2:22 192.168.50.1:2516 ESTABLISHED - unix 2 [ ] DGRAM 12284 - @/org/freedesktop/hal/udev_event unix 3 [ ] STREAM CONNECTED 14522 - unix 2 [ ] DGRAM 13622 - unix 3 [ ] STREAM CONNECTED 12250 - @/var/run/hald/dbus-ujAjOMNa0g unix 3 [ ] STREAM CONNECTED 12249 - unix 3 [ ] STREAM CONNECTED 12228 - /var/run/dbus/system_bus_socket unix 3 [ ] STREAM CONNECTED 12227 -
Hem intentat destacar el poder del comandament de la història. Tanmateix, això no és el final. Si us plau, compartiu la vostra experiència de comandament de l'historial amb nosaltres a través del nostre quadre de comentaris a continuació.