Ang Gahum sa Linux History Command sa Bash Shell


Kanunay namong gigamit ang history nga command sa among inadlaw-adlaw nga rutina nga mga trabaho para susihon ang history sa command o para makakuha og impormasyon mahitungod sa command nga gipatuman sa user. Niini nga post, atong tan-awon kon unsaon nato paggamit ang history command nga epektibo aron makuha ang command nga gipatuman sa mga tiggamit sa Bash shell. Mahimong mapuslanon kini alang sa katuyoan sa pag-audit o aron mahibal-an kung unsang mando ang gipatuman sa unsang petsa ug oras.

Pinaagi sa default nga petsa ug timestamp dili makita samtang nagpatuman sa sugo sa kasaysayan. Bisan pa, ang bash shell naghatag mga gamit sa CLI alang sa pag-edit sa kasaysayan sa mando sa gumagamit. Atong tan-awon ang pipila ka magamit nga mga tip ug mga limbong ug gahum sa kasaysayan nga mando.

1. Ilista ang Katapusan/Tanan nga Gipatuman nga mga Sugo sa Linux

Ang pagpatuman sa yanong history nga sugo gikan sa terminal magpakita kanimo og kompletong listahan sa kataposang gipatuman nga mga sugo nga adunay mga numero sa linya.

[[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. Ilista ang Tanang Sugo nga adunay Petsa ug Timestamp

Unsaon pagpangita sa petsa ug timestamp batok sa sugo? Uban sa 'export' nga command nga adunay variable magpakita sa history command nga adunay katugbang nga timestamp kung ang command gipatuman.

[[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. Pagsala sa mga Sugo sa Kasaysayan

Sama sa atong makita nga parehas nga mando ang gisubli sa daghang beses sa taas nga output. Giunsa pagsala ang yano o dili makadaot nga mga sugo sa kasaysayan?. Gamita ang mosunod nga 'export' nga sugo pinaagi sa pagpiho sa command sa HISTIGNORE='ls -l:pwd:date:' dili maluwas sa sistema ug dili ipakita sa history command.

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

4. Ibaliwala ang Duplicate Commands sa History

Uban sa ubos nga sugo makatabang kanato sa dili pagtagad sa duplicate nga mga sugo entry nga gihimo sa user. Usa ra ka entry ang ipakita sa kasaysayan, kung ang usa ka tiggamit magpatuman sa parehas nga mando sa daghang beses sa usa ka Bash Prompt.

[[email  ~]$ export HISTCONTROL=ignoredups

5. Unset export Command

Unset export command on the fly. Ipatuman ang unset export nga sugo nga may variable nga tagsa-tagsa bisan unsa nga mga sugo nga na-export pinaagi sa export nga sugo.

[[email  ~]$ unset export HISTCONTROL

6. Save export Command Permanente

Paghimo og usa ka entry sama sa mosunod sa .bash_profile aron i-save ang export command nga permanente.

[[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. Ilista ang Piho nga User's Executed Commands

Giunsa pagtan-aw ang kasaysayan sa mando nga gipatuman sa usa ka piho nga tiggamit. Ang Bash nagtipig og mga rekord sa kasaysayan sa ‘~/.bash_history’ nga payl. Mahimo natong tan-awon o ablihan ang file aron makita ang kasaysayan sa sugo.

[na[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. I-disable ang Pagtipig sa Kasaysayan sa mga Sugo

Ang ubang organisasyon wala magtipig sa kasaysayan sa mga sugo tungod sa polisiya sa seguridad sa organisasyon. Niini nga kaso, mahimo namong i-edit ang .bash_profile file (It's hidden file) sa user ug maghimo ug entry sama sa ubos.

[[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)

I-save ang file ug i-load ang mga pagbag-o gamit ang ubos nga mando.

[[email  ~]$ source .bash_profile

Pahinumdom: Kung dili nimo gusto nga mahinumduman sa sistema ang mga sugo nga imong gi-type, i-execute lang sa ubos nga command nga mag-disable o mohunong sa pagrekord sa kasaysayan sa langaw.

[[email  ~]$ export HISTSIZE=0

Mga Tip: Pangitaa ang 'HISTSIZE' ug i-edit sa '/etc/profile' nga file nga adunay superuser. Ang pagbag-o sa file makaapekto sa tibuok kalibutan.

9. Pagtangtang o Tin-aw nga Kasaysayan sa mga Sugo

Uban sa pataas ug paubos nga arrow, atong makita ang kanhi gigamit nga sugo nga mahimong makatabang o makapasuko kanimo. Pagtangtang o paghawan sa tanan nga mga entry gikan sa listahan sa kasaysayan sa bash nga adunay '-c' nga mga kapilian.

[[email  ~]$ history -c

10. Pangitaa ang mga Sugo sa Kasaysayan Gamit ang Grep Command

Pangitaa ang command pinaagi sa '.bash_history' pinaagi sa pag-pipe sa imong history file ngadto sa 'grep' sama sa ubos. Pananglitan, ang ubos nga sugo mangita ug mangita sa 'pwd' nga sugo gikan sa listahan sa kasaysayan.

[[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. Pagpangita Katapusan nga Gipatuman nga Sugo

Pangitaa kaniadto nga gipatuman nga sugo gamit ang 'Ctrl+r' nga sugo. Kung nakit-an na nimo ang sugo nga imong gipangita, pindota ang 'Enter' aron ipatuman ang parehas nga lain nga pindota ang 'esc' aron kanselahon kini.

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

12. Hinumdumi ang Katapusan nga Gipatuman nga Sugo

Hinumdomi ang usa ka gigamit kaniadto nga piho nga sugo. Ang kombinasyon sa Bang ug 8 (!8) nga sugo magpahinumdom sa numero 8 nga sugo nga imong gipatuman.

[[email  ~]$ !8

13. Recall Lastly Executed Specific Command

Hinumdomi ang kanhi gigamit nga sugo (netstat -np | grep 22) uban ang ‘!’ ug gisundan sa pipila ka letra sa maong partikular nga sugo.

[[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  -

Gisulayan namon nga ipasiugda ang gahum sa mando sa kasaysayan. Apan, kini dili mao ang katapusan niini. Palihug ipaambit kanamo ang imong kasinatian sa mando sa kasaysayan pinaagi sa among kahon sa komento sa ubos.