ബാഷ് ഷെല്ലിലെ ലിനക്സിന്റെ ശക്തി ഹിസ്റ്ററി കമാൻഡ്


കമാൻഡിന്റെ ചരിത്രം പരിശോധിക്കുന്നതിനോ ഉപയോക്താവ് എക്uസിക്യൂട്ട് ചെയ്യുന്ന കമാൻഡിനെ കുറിച്ചുള്ള വിവരങ്ങൾ നേടുന്നതിനോ ഞങ്ങളുടെ ദൈനംദിന ജോലികളിൽ ഞങ്ങൾ പതിവായി ചരിത്രം കമാൻഡ് ഉപയോഗിക്കുന്നു. ബാഷ് ഷെല്ലിലെ ഉപയോക്താക്കൾ എക്uസ്uക്uട്രാക്റ്റ് ചെയ്uത കമാൻഡ് എക്uസ്uട്രാക്uറ്റുചെയ്യുന്നതിന് ഹിസ്റ്ററി കമാൻഡ് എങ്ങനെ ഫലപ്രദമായി ഉപയോഗിക്കാമെന്ന് ഈ പോസ്റ്റിൽ നോക്കാം. ഓഡിറ്റ് ആവശ്യത്തിനോ അല്ലെങ്കിൽ ഏത് തീയതിയിലും സമയത്തും ഏത് കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നുവെന്ന് കണ്ടെത്തുന്നതിന് ഇത് ഉപയോഗപ്രദമാകും.

ഹിസ്റ്ററി കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ ഡിഫോൾട്ടായി തീയതിയും ടൈംസ്റ്റാമ്പും കാണില്ല. എന്നിരുന്നാലും, ഉപയോക്താവിന്റെ കമാൻഡ് ഹിസ്റ്ററി എഡിറ്റ് ചെയ്യുന്നതിനുള്ള CLI ടൂളുകൾ ബാഷ് ഷെൽ നൽകുന്നു. ഉപയോഗപ്രദമായ ചില നുറുങ്ങുകളും തന്ത്രങ്ങളും ചരിത്രം കമാൻഡിന്റെ ശക്തിയും നോക്കാം.

1. ലിനക്സിൽ അവസാനം/എല്ലാ എക്സിക്യൂട്ട് ചെയ്ത കമാൻഡുകളും ലിസ്റ്റ് ചെയ്യുക

ടെർമിനലിൽ നിന്ന് ലളിതമായ ചരിത്രം കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നത് ലൈൻ നമ്പറുകളുള്ള അവസാനമായി എക്സിക്യൂട്ട് ചെയ്ത കമാൻഡുകളുടെ പൂർണ്ണമായ ലിസ്റ്റ് കാണിക്കും.

[[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. തീയതിയും ടൈംസ്റ്റാമ്പും ഉള്ള എല്ലാ കമാൻഡുകളും ലിസ്റ്റ് ചെയ്യുക

കമാൻഡിനെതിരെ എങ്ങനെ തീയതി കൂടാതെ ടൈംസ്റ്റാമ്പ് കണ്ടെത്താം? 'കയറ്റുമതി' ഉപയോഗിച്ച് വേരിയബിളുള്ള കമാൻഡ്, കമാൻഡ് എക്uസിക്യൂട്ട് ചെയ്യുമ്പോൾ അനുബന്ധ ടൈംസ്റ്റാമ്പിനൊപ്പം ഹിസ്റ്ററി കമാൻഡ് പ്രദർശിപ്പിക്കും.

[[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. ചരിത്രത്തിലെ കമാൻഡുകൾ ഫിൽട്ടർ ചെയ്യുക

മുകളിലുള്ള ഔട്ട്uപുട്ടിൽ ഒരേ കമാൻഡ് നിരവധി തവണ ആവർത്തിക്കുന്നത് നമുക്ക് കാണാനാകുന്നതുപോലെ. ചരിത്രത്തിലെ ലളിതമോ അല്ലാത്തതോ ആയ കമാൻഡുകൾ എങ്ങനെ ഫിൽട്ടർ ചെയ്യാം?. HISTIGNORE='ls -l:pwd:date:' എന്നതിൽ കമാൻഡ് വ്യക്തമാക്കിക്കൊണ്ട് ഇനിപ്പറയുന്ന 'export' കമാൻഡ് ഉപയോഗിക്കുക, സിസ്റ്റം സേവ് ചെയ്യില്ല, ഹിസ്റ്ററി കമാൻഡിൽ കാണിക്കില്ല.

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

4. ചരിത്രത്തിലെ ഡ്യൂപ്ലിക്കേറ്റ് കമാൻഡുകൾ അവഗണിക്കുക

ഉപയോക്താവ് നൽകിയ ഡ്യൂപ്ലിക്കേറ്റ് കമാൻഡുകൾ അവഗണിക്കാൻ താഴെയുള്ള കമാൻഡ് ഞങ്ങളെ സഹായിക്കും. ഒരു ബാഷ് പ്രോംപ്റ്റിൽ ഒരു ഉപയോക്താവ് ഒരേ കമാൻഡ് ഒന്നിലധികം തവണ എക്സിക്യൂട്ട് ചെയ്താൽ, ചരിത്രത്തിൽ ഒരൊറ്റ എൻട്രി മാത്രമേ കാണിക്കൂ.

[[email  ~]$ export HISTCONTROL=ignoredups

5. എക്uസ്uപോർട്ട് കമാൻഡ് ക്രമീകരിക്കാതിരിക്കുക

ഫ്ലൈയിൽ എക്uസ്uപോർട്ട് കമാൻഡ് അൺസെറ്റ് ചെയ്യുക. കയറ്റുമതി കമാൻഡ് വഴി എക്uസ്uപോർട്ട് ചെയ്uത കമാൻഡുകൾ ഓരോന്നായി വേരിയബിൾ ഉപയോഗിച്ച് unset export കമാൻഡ് എക്uസിക്യൂട്ട് ചെയ്യുക.

[[email  ~]$ unset export HISTCONTROL

6. എക്uസ്uപോർട്ട് കമാൻഡ് ശാശ്വതമായി സംരക്ഷിക്കുക

കയറ്റുമതി കമാൻഡ് ശാശ്വതമായി സംരക്ഷിക്കുന്നതിന് .bash_profile-ൽ ഇനിപ്പറയുന്ന രീതിയിൽ ഒരു എൻട്രി നടത്തുക.

[[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. നിർദ്ദിഷ്uട ഉപയോക്താവിന്റെ എക്uസിക്യൂട്ട് ചെയ്uത കമാൻഡുകൾ പട്ടികപ്പെടുത്തുക

ഒരു നിർദ്ദിഷ്uട ഉപയോക്താവ് എക്uസിക്യൂട്ട് ചെയ്uത കമാൻഡ് ഹിസ്റ്ററി എങ്ങനെ കാണും. ബാഷ് ഒരു ‘~/.bash_history’ ഫയലിൽ ചരിത്രത്തിന്റെ രേഖകൾ സൂക്ഷിക്കുന്നു. കമാൻഡ് ഹിസ്റ്ററി കാണുന്നതിന് നമുക്ക് ഫയൽ കാണാനും തുറക്കാനും കഴിയും.

[[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. കമാൻഡുകളുടെ സ്റ്റോറിംഗ് ഹിസ്റ്ററി പ്രവർത്തനരഹിതമാക്കുക

ഓർഗനൈസേഷന്റെ സുരക്ഷാ നയം കാരണം ചില ഓർഗനൈസേഷനുകൾ കമാൻഡുകളുടെ ചരിത്രം സൂക്ഷിക്കുന്നില്ല. ഈ സാഹചര്യത്തിൽ, ഉപയോക്താവിന്റെ .bash_profile ഫയൽ (ഇത് മറഞ്ഞിരിക്കുന്ന ഫയൽ) എഡിറ്റ് ചെയ്യാനും ചുവടെയുള്ള ഒരു എൻട്രി ഉണ്ടാക്കാനും കഴിയും.

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

ചുവടെയുള്ള കമാൻഡ് ഉപയോഗിച്ച് ഫയൽ സംരക്ഷിച്ച് മാറ്റങ്ങൾ ലോഡ് ചെയ്യുക.

[[email  ~]$ source .bash_profile

ശ്രദ്ധിക്കുക: നിങ്ങൾ ടൈപ്പ് ചെയ്uത കമാൻഡുകൾ സിസ്റ്റം ഓർത്തുവയ്ക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നില്ലെങ്കിൽ, താഴെയുള്ള കമാൻഡ് എക്uസിക്യൂട്ട് ചെയ്യുക, അത് ഫ്ലൈയിൽ ചരിത്രം റെക്കോർഡിംഗ് പ്രവർത്തനരഹിതമാക്കുകയോ നിർത്തുകയോ ചെയ്യും.

[[email  ~]$ export HISTSIZE=0

നുറുങ്ങുകൾ: സൂപ്പർ യൂസർ ഉപയോഗിച്ച് 'HISTSIZE' തിരഞ്ഞ് '/etc/profile' ഫയലിൽ എഡിറ്റ് ചെയ്യുക. ഫയലിലെ മാറ്റം ആഗോളതലത്തിൽ തന്നെ ബാധിക്കും.

9. കമാൻഡുകളുടെ ചരിത്രം ഇല്ലാതാക്കുക അല്ലെങ്കിൽ മായ്uക്കുക

മുകളിലേക്കും താഴേക്കുമുള്ള അമ്പടയാളം ഉപയോഗിച്ച്, മുമ്പ് ഉപയോഗിച്ച കമാൻഡ് ഞങ്ങൾക്ക് കാണാൻ കഴിയും, അത് സഹായകരമാകാം അല്ലെങ്കിൽ നിങ്ങളെ പ്രകോപിപ്പിച്ചേക്കാം. ബാഷ് ഹിസ്റ്ററി ലിസ്റ്റിൽ നിന്ന് '-c' ഓപ്uഷനുകൾ ഉപയോഗിച്ച് എല്ലാ എൻട്രികളും ഇല്ലാതാക്കുകയോ മായ്uക്കുകയോ ചെയ്യുന്നു.

[[email  ~]$ history -c

10. Grep കമാൻഡ് ഉപയോഗിച്ച് ചരിത്രത്തിൽ കമാൻഡുകൾ തിരയുക

നിങ്ങളുടെ ചരിത്ര ഫയൽ 'grep' ലേക്ക് പൈപ്പ് ചെയ്ത് '.bash_history' വഴി കമാൻഡ് തിരയുക. ഉദാഹരണത്തിന്, ചുവടെയുള്ള കമാൻഡ് ചരിത്ര ലിസ്റ്റിൽ നിന്ന് 'pwd' കമാൻഡ് തിരയുകയും കണ്ടെത്തുകയും ചെയ്യും.

[[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. അവസാനം നടപ്പിലാക്കിയ കമാൻഡ് തിരയുക

‘Ctrl+r’ കമാൻഡ് ഉപയോഗിച്ച് മുമ്പ് എക്സിക്യൂട്ട് ചെയ്ത കമാൻഡ് തിരയുക. നിങ്ങൾ തിരയുന്ന കമാൻഡ് കണ്ടെത്തിക്കഴിഞ്ഞാൽ, അത് നടപ്പിലാക്കാൻ 'Enter' അമർത്തുക, അത് റദ്ദാക്കാൻ 'esc' അമർത്തുക.

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

12. അവസാനം നടപ്പിലാക്കിയ കമാൻഡ് തിരിച്ചുവിളിക്കുക

മുമ്പ് ഉപയോഗിച്ച ഒരു പ്രത്യേക കമാൻഡ് ഓർക്കുക. ബാങ്ങിന്റെയും 8 (!8) കമാൻഡിന്റെയും സംയോജനം നിങ്ങൾ എക്സിക്യൂട്ട് ചെയ്ത നമ്പർ 8 കമാൻഡ് തിരിച്ചുവിളിക്കും.

[[email  ~]$ !8

13. അവസാനം നടപ്പിലാക്കിയ നിർദ്ദിഷ്ട കമാൻഡ് തിരിച്ചുവിളിക്കുക

മുമ്പ് ഉപയോഗിച്ച '!' എന്ന കമാൻഡ് (netstat -np | grep 22) തിരിച്ചുവിളിക്കുക, തുടർന്ന് ആ പ്രത്യേക കമാൻഡിന്റെ ചില അക്ഷരങ്ങൾ.

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

ചരിത്ര ആജ്ഞയുടെ ശക്തി ഉയർത്തിക്കാട്ടാൻ ഞങ്ങൾ ശ്രമിച്ചു. എന്നിരുന്നാലും, ഇത് അവസാനിക്കുന്നില്ല. ചുവടെയുള്ള ഞങ്ങളുടെ അഭിപ്രായ ബോക്സിലൂടെ ചരിത്ര കമാൻഡിലെ നിങ്ങളുടെ അനുഭവം ഞങ്ങളുമായി പങ്കിടുക.