Linux spēks "Vēstures komanda" Bash Shell


Ikdienā ikdienas darbā bieži izmantojam komandu vēsture , lai pārbaudītu komandu vēsturi vai iegūtu informāciju par lietotāja izpildītu komandu. Šajā amatā mēs redzēsim, kā mēs varam efektīvi izmantot vēstures komandu, lai iegūtu komandu, kuru lietotāji izpildīja Bash čaulā. Tas var būt noderīgi audita nolūkos vai lai uzzinātu, kāda komanda tiek izpildīta kurā datumā un laikā.

Pēc noklusējuma, izpildot vēstures komandu, datums un laika zīmogs netiks rādīti. Tomēr bash apvalks nodrošina CLI rīkus lietotāja komandu vēstures rediģēšanai. Apskatīsim dažus noderīgus padomus un ieteikumus, kā arī vēstures komandu.

1. Uzskaitiet pēdējās/visas izpildītās komandas Linux

Veicot vienkāršu vēstures komandu no termināļa, tiks parādīts pilns pēdējo izpildīto komandu saraksts ar rindu numuriem.

[[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. Uzskaitiet visas komandas ar datumu un laika zīmogu

Kā atrast komandu datums un laika zīmogs ? Izmantojot komandu ‘eksportēt’ ar mainīgo, komandas izpildes laikā tiks parādīta vēstures komanda ar atbilstošu laika zīmogu.

[[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. Filtrējiet komandas vēsturē

Kā redzam, tā pati komanda tiek atkārtota vairākas reizes augšējā izvadē. Kā filtrēt vienkāršas vai nesagraujošas komandas vēsturē ?. Izmantojiet šādu komandu “eksportēt”, norādot komandu HISTIGNORE = ’ls -l: pwd: date:’ sistēma nesaglabās un netiks rādīta komandā vēsture.

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

4. Ignorējiet komandu dublikātus vēsturē

Ar zemāk redzamo komandu mums palīdzēs ignorēt lietotāju veikto komandu dublikātu ierakstu. Vēsturē tiks parādīts tikai viens ieraksts, ja lietotājs Bash uzvednē vairākas reizes izpilda vienu un to pašu komandu.

[[email  ~]$ export HISTCONTROL=ignoredups

5. Atiestatiet eksportēšanas komandu

Atiestatiet eksportēšanas komandu. Izpildiet komandu atiestatīt eksportu ar mainīgo pa vienam neatkarīgi no tā, kādas komandas ir eksportējušas komanda eksportēt .

[[email  ~]$ unset export HISTCONTROL

6. Saglabājiet eksporta komandu pastāvīgi

Veiciet ierakstu .bash_profile šādi, lai neatgriezeniski saglabātu komandu eksportēt .

[[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. Uzskaitiet konkrēta lietotāja izpildītās komandas

Kā redzēt komandu vēsturi, ko izpildījis konkrēts lietotājs. Bašs saglabā vēstures ierakstus failā ‘~/.bash_history’ . Mēs varam apskatīt vai atvērt failu, lai redzētu komandu vēsturi.

[[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. Atspējojiet komandu vēstures saglabāšanu

Dažas organizācijas neuzglabā komandu vēsturi organizācijas drošības politikas dēļ. Šajā gadījumā mēs varam rediģēt lietotāja .bash_profile failu (tas ir paslēpts fails) un veikt ierakstu, kā norādīts tālāk.

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

Saglabājiet failu un ielādējiet izmaiņas ar komandu zemāk.

[[email  ~]$ source .bash_profile

Piezīme: Ja nevēlaties, lai sistēma atceras jūsu ievadītās komandas, vienkārši izpildiet zemāk esošo komandu, kas atspējos vai pārtrauks vēstures ierakstīšanu lidojuma laikā.

[[email  ~]$ export HISTSIZE=0

Padomi: meklējiet ‘HISTSIZE’ un rediģējiet failā ‘/ etc/profile’ ar superlietotāju. Faila izmaiņas stāsies spēkā visā pasaulē.

9. Dzēst vai notīrīt komandu vēsturi

Ar augšup un lejup vērstu bultiņu mēs varam redzēt iepriekš izmantoto komandu, kas var būt noderīga vai var jūs kaitināt. Visu ierakstu dzēšana vai notīrīšana no bash vēstures saraksta ar opcijām ‘-c’.

[[email  ~]$ history -c

10. Meklēt komandas vēsturē, izmantojot komandu Grep

Meklējiet komandu, izmantojot ‘.bash_history’, ievadot vēstures failu ‘grep’, kā norādīts zemāk. Piemēram, zemāk esošā komanda vēstures sarakstā meklēs un atradīs komandu ‘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. Meklēt pēdējo izpildīto komandu

Meklēt iepriekš izpildīto komandu ar komandu ‘Ctrl + r’ . Kad esat atradis meklēto komandu, nospiediet taustiņu Enter, lai izpildītu to pašu, nospiediet taustiņu Esc, lai to atceltu.

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

12. Atsaukt pēdējo izpildīto komandu

Atsaukt iepriekš izmantoto konkrēto komandu. Kombinācija Bang un 8 (! 8) komanda atsauks jūsu izpildīto komandu 8.

[[email  ~]$ !8

13. Atsaukt pēdējo izpildīto īpašo komandu

Atgādiniet iepriekš izmantoto komandu (netstat -np | grep 22) ar ‘!’ Un pēc tam dažus šīs konkrētās komandas burtus.

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

Mēs esam mēģinājuši izcelt vēstures komandas spēku. Tomēr ar to viss nebeidzas. Lūdzu, dalieties ar mums vēstures komandas pieredzē, izmantojot mūsu komentāru lodziņu zemāk.