Kraften til Linux History Command i Bash Shell
Vi bruker historikk-kommando ofte i våre daglige rutinejobber for å sjekke kommandohistorikk eller for å få informasjon om kommandoer utført av brukeren. I dette innlegget vil vi se hvordan vi kan bruke historiekommando effektivt for å trekke ut kommandoen som ble utført av brukere i Bash shell. Dette kan være nyttig for revisjonsformål eller for å finne ut hvilken kommando som utføres på hvilken dato og klokkeslett.
Som standard vil ikke dato og tidsstempel bli sett mens du utfører historiekommando. Imidlertid gir bash shell CLI-verktøy for å redigere brukerens kommandohistorikk. La oss se noen nyttige tips og triks og kraften til historie-kommandoen.
1. List siste/alle utførte kommandoer i Linux
Utførelse av enkel historikk-kommando fra terminal vil vise deg en komplett liste over sist utførte kommandoer med linjenummer.
[[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. Vis alle kommandoer med dato og tidsstempel
Hvordan finne dato og tidsstempel mot kommando? Med 'eksport' kommando med variabel vil vise historiekommando med tilsvarende tidsstempel når kommandoen ble utført.
[[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. Filtrer kommandoer i historien
Som vi kan se, gjentas samme kommando flere ganger i utgangen ovenfor. Hvordan filtrere enkle eller ikke-destruktive kommandoer i historien?. Bruk følgende 'eksport'-kommando ved å spesifisere kommandoen i HISTIGNORE='ls -l:pwd:date:' vil ikke lagres av systemet og ikke vises i historikkkommandoen.
[[email ~]$ export HISTIGNORE='ls -l:pwd:date:'
4. Ignorer dupliserte kommandoer i historien
Med kommandoen nedenfor vil det hjelpe oss å ignorere dupliserte kommandoer som er laget av brukeren. Bare en enkelt oppføring vises i loggen hvis en bruker utfører samme kommando flere ganger i en Bash-prompt.
[[email ~]$ export HISTCONTROL=ignoredups
5. Deaktiver eksportkommando
Deaktiver eksportkommando med en gang. Utfør kommandoen unset eksport med variabel én etter én, uansett hvilke kommandoer som er eksportert av kommandoen eksport.
[[email ~]$ unset export HISTCONTROL
6. Lagre eksportkommando permanent
Skriv inn som følger i .bash_profile for å lagre eksport-kommandoen permanent.
[[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. List spesifikke brukers utførte kommandoer
Hvordan se kommandohistorikk utført av en spesifikk bruker. Bash fører historikk i en '~/.bash_history'-fil. Vi kan se eller åpne filen for å se kommandohistorikken.
[[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. Deaktiver Lagring av kommandohistorikk
Noen organisasjoner fører ikke historikk over kommandoer på grunn av sikkerhetspolitikken til organisasjonen. I dette tilfellet kan vi redigere .bash_profile-filen (den skjulte filen) til brukerens og legge inn som nedenfor.
[[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)
Lagre filen og last inn endringer med kommandoen nedenfor.
[[email ~]$ source .bash_profile
Merk: Hvis du ikke vil at systemet skal huske kommandoene du har skrevet, kjør ganske enkelt kommandoen nedenfor som vil deaktivere eller stoppe registrering av historikk umiddelbart.
[[email ~]$ export HISTSIZE=0
Tips: Søk 'HISTSIZE' og rediger i '/etc/profile'-filen med superbruker. Endringen i filen vil ha effekt globalt.
9. Slett eller fjern historikk for kommandoer
Med pil opp og ned kan vi se tidligere brukte kommandoer som kan være nyttige eller irritere deg. Sletting eller sletting av alle oppføringene fra bash-historikklisten med '-c'-alternativer.
[[email ~]$ history -c
10. Søk kommandoer i historien ved å bruke Grep-kommandoen
Søk kommando gjennom '.bash_history' ved å overføre historikkfilen din til 'grep' som nedenfor. For eksempel vil kommandoen nedenfor søke og finne 'pwd'-kommandoen fra historielisten.
[[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. Søk til sist utførte kommando
Søk tidligere utført kommando med kommandoen 'Ctrl+r'. Når du har funnet kommandoen du leter etter, trykk 'Enter' for å utføre det samme, ellers trykk 'esc' for å avbryte den.
(reverse-i-search)`source ': source .bash_profile
12. Tilbakekall sist utførte kommando
Husk en tidligere brukt spesifikk kommando. Kombinasjon av Bang og 8 (!8) kommando vil huske nummer 8 kommando som du har utført.
[[email ~]$ !8
13. Tilbakekall sist utførte spesifikke kommando
Husk tidligere brukte kommando (netstat -np | grep 22) med '!' og etterfulgt av noen bokstaver i den aktuelle kommandoen.
[[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 -
Vi har forsøkt å fremheve kraften til historiekommando. Dette er imidlertid ikke slutten på det. Vennligst del din opplevelse av historiekommando med oss gjennom kommentarfeltet nedenfor.