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.