Styrken ved Linux "History Command" i Bash Shell


Vi bruger kommandoen historie ofte i vores daglige rutinejob for at kontrollere historik for kommando eller for at få info om kommando udført af brugeren. I dette indlæg vil vi se, hvordan vi effektivt kan bruge historik-kommandoen til at udtrække den kommando, der blev udført af brugere i Bash shell. Dette kan være nyttigt til revisionsformål eller til at finde ud af, hvilken kommando der udføres på hvilken dato og tidspunkt.

Som standard vises dato og tidsstempel ikke under udførelse af historik-kommandoen. Imidlertid leverer bash shell CLI-værktøjer til redigering af brugerens kommandohistorik. Lad os se nogle nyttige tip og tricks og styrken i kommandoen historie .

1. Liste over sidste/alle udførte kommandoer i Linux

Udførelse af en simpel historik kommando fra terminalen viser dig en komplet liste over sidst udførte kommandoer med linjenumre.

[[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. Liste over alle kommandoer med dato og tidsstempel

Hvordan finder man dato og tidsstempel mod kommandoen? Med 'eksport' kommando med variabel viser historik kommando med tilsvarende tidsstempel, da kommandoen blev udfø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 historikken

Som vi kan se, gentages den samme kommando flere gange i ovenstående output. Hvordan filtreres enkle eller ikke destruktive kommandoer i historien ?. Brug følgende 'eksport' kommando ved at angive kommando i HISTIGNORE = 'ls -l: pwd: dato:' gemmes ikke af systemet og vises ikke i historik kommandoen.

[[email  ~]$ export HISTIGNORE='ls -l:pwd:date:'

4. Ignorer duplikatkommandoer i historikken

Med nedenstående kommando vil det hjælpe os med at ignorere duplikat af kommandoposten foretaget af brugeren. Kun en enkelt post vises i historikken, hvis en bruger udfører den samme kommando flere gange i en Bash-prompt.

[[email  ~]$ export HISTCONTROL=ignoredups

5. Frakoblet eksportkommando

Frakoblet eksportkommando på farten. Udfør kommandoen unset export med variablen en efter en, uanset hvilke kommandoer der er eksporteret med eksport -kommandoen.

[[email  ~]$ unset export HISTCONTROL

6. Gem eksportkommandoen permanent

Foretag en post som følger i .bash_profile for at gemme 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. Liste over specifikke brugers udførte kommandoer

Sådan ser du kommandohistorik udført af en bestemt bruger. Bash registrerer historikken i en ‘~/.bash_history’ fil. Vi kan se eller åbne filen for at 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 af kommandoer

Nogle organisationer holder ikke kommandoprogrammet på grund af organisationens sikkerhedspolitik. I dette tilfælde kan vi redigere .bash_profile -filen (det er skjult fil) for brugerne og foretage en post 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)

Gem fil og indlæs ændringer med nedenstående kommando.

[[email  ~]$ source .bash_profile

Bemærk: Hvis du ikke ønsker, at systemet skal huske de kommandoer, du har skrevet, skal du blot udføre kommandoen nedenfor, som deaktiverer eller stopper optagelsen af historik i farten.

[[email  ~]$ export HISTSIZE=0

Tip: Søg på 'HISTSIZE' og rediger i '/ etc/profile' fil med superbruger. Ændringen i fil påvirker globalt.

9. Slet eller ryd kommandohistorik

Med pil op og ned kan vi se kommandoer, der tidligere er brugt, som kan være nyttige eller irritere dig. Sletning eller sletning af alle poster fra bash-historiklisten med '-c' -indstillinger.

[[email  ~]$ history -c

10. Søg efter kommandoer i historien ved hjælp af Grep Command

Søg kommando gennem '.bash_history' ved at føre din historikfil ind i 'grep' som nedenfor. For eksempel vil nedenstående kommando søge og finde 'pwd' kommando fra historiklisten.

[[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øg efter sidst udført kommando

Søg efter tidligere udført kommando med kommandoen ‘Ctrl + r’ . Når du har fundet den kommando, du leder efter, skal du trykke på 'Enter' for at udføre den samme ellers trykke på 'esc' for at annullere den.

(reverse-i-search)`source ': source .bash_profile

12. Husk den sidste udførte kommando

Husk en tidligere brugt specifik kommando. Kombination af Bang og 8 (! 8) kommando vil huske nummer 8 kommando, som du har udført.

[[email  ~]$ !8

13. Husk sidst udført specifik kommando

Husk tidligere brugt kommando (netstat -np | grep 22) med ‘!’ Og efterfulgt af nogle bogstaver i den pågældende kommando.

[[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øgt at fremhæve magt historik kommando. Dette er dog ikke slutningen på det. Del venligst din oplevelse af historiekommandoen med os gennem vores kommentarfelt nedenfor.