D'Kraaft vu Linux Geschicht Kommando an Bash Shell


Mir benotzen Geschicht Kommando dacks an eisen alldeegleche Routine Jobs fir d'Geschicht vum Kommando z'iwwerpréiwen oder Informatioun iwwer Kommando ze kréien, déi vum Benotzer ausgefouert gëtt. An dësem Post wäerte mir kucken wéi mir d'Geschicht Kommando effektiv benotze kënnen fir de Kommando ze extrahieren deen vun de Benotzer an der Bash Shell ausgefouert gouf. Dëst kann nëtzlech sinn fir Auditzwecker oder fir erauszefannen wat Kommando zu wéi engem Datum an Zäit ausgefouert gëtt.

Par défaut Datum an Zäitstempel gëtt net gesi beim Ausféierung vun der Geschicht Kommando. Wéi och ëmmer, Bash Shell bitt CLI Tools fir d'Benotzer Kommandogeschicht z'änneren. Loosst eis e puer praktesch Tipps an Tricks a Kraaft vum Geschicht Kommando gesinn.

1. Lëscht Last/All ausgefouert Kommandoen am Linux

Ausféierung vun engem einfachen Geschicht Kommando vum Terminal weist Iech eng komplett Lëscht vun de leschten ausgefouerten Kommandoen mat Zeilnummeren.

[[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. Lëscht All Kommandoen mat Datum an Zäitstempel

Wéi fannt Dir Datum an Zäitstempel géint Kommando? Mat 'Export' Kommando mat Variabel weist d'Geschichtsbefehl mat entspriechend Zäitstempel wann de Kommando ausgefouert gouf.

[[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. Filter Kommandoen an der Geschicht

Wéi mir kënne gesinn, gëtt deeselwechte Kommando d'Zuel vun Mol an der uewen Ausgang widderholl. Wéi filteren ech einfach oder net zerstéierend Kommandoen an der Geschicht? Benotzt de folgenden 'export' Kommando andeems Dir de Kommando an HISTIGNORE = 'ls -l: pwd: date:' spezifizéiert gëtt net vum System gespäichert an net am Historique Kommando gewisen.

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

4. Duplizéiert Kommandoen an der Geschicht ignoréieren

Mat dem Kommando hei ënnen hëlleft eis duplizéiert Befehle vum Benotzer ze ignoréieren. Nëmmen eenzeg Entrée gëtt an der Geschicht gewisen, wann e Benotzer e selwechte Kommando e puer Mol an enger Bash Prompt ausféiert.

[[email  ~]$ export HISTCONTROL=ignoredups

5. Desaktivéiere Export Kommando

Desaktivéiere Export Kommando op der Flucht. Féiert unset Export Kommando mat Variabel een nom aneren, egal wéi eng Befehle vum Export Kommando exportéiert goufen.

[[email  ~]$ unset export HISTCONTROL

6. Retten exportéieren Kommando Permanent

Maacht en Entrée wéi follegt an .bash_profile fir de Kommando Export permanent ze späicheren.

[[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. Lëscht spezifesch Benotzer ausgefouert Kommandoen

Wéi gesitt Dir Kommandogeschicht ausgefouert vun engem spezifesche Benotzer. Bash hält Rekorder vun der Geschicht an enger '~/.bash_history' Datei. Mir kënnen d'Datei kucken oder opmaachen fir d'Kommandogeschicht ze gesinn.

[[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. Desaktivéiere Späichergeschicht vu Kommandoen

E puer Organisatiounen halen keng Geschicht vu Kommandoen wéinst der Sécherheetspolitik vun der Organisatioun. An dësem Fall kënne mir .bash_profile Datei (Et ass verstoppt Datei) vum Benotzer änneren an en Entrée maachen wéi hei ënnen.

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

Späichert d'Datei a lued d'Ännerunge mam Kommando ënnen.

[[email  ~]$ source .bash_profile

Notiz: Wann Dir net wëllt datt de System d'Befehle erënnert, déi Dir aginn hutt, fuert einfach de Kommando aus, deen d'Geschicht op der Flucht deaktivéiert oder ophält.

[[email  ~]$ export HISTSIZE=0

Tipps: Sicht 'HISTSIZE' an ännert an '/etc/profile' Datei mam Superuser. D'Ännerung vum Fichier wäert weltwäit beaflossen.

9. Läschen oder d'Geschicht vun Kommandoen läschen

Mat Up an Down Pfeil kënne mir virdru benotzte Kommando gesinn wat hëllefräich ka sinn oder Iech irritéieren. Läschen oder läschen all Entréen aus der Bash Geschicht Lëscht mat '-c' Optiounen.

[[email  ~]$ history -c

10. Sich Kommandoen an der Geschicht Mat Grep Kommando

Sich Kommando duerch '.bash_history' andeems Dir Är Geschichtsdatei an 'grep' piping wéi hei ënnen. Zum Beispill, de Kommando ënnen sicht a fënnt 'pwd' Kommando aus der Geschichtlëscht.

[[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. Sichen Last ausgefouert Kommando

Sicht virdrun ausgefouert Kommando mam Kommando 'Ctrl+r'. Wann Dir de Kommando fonnt hutt deen Dir sicht, dréckt 'Enter' fir datselwecht auszeféieren, dréckt 'esc' fir et ze annuléieren.

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

12. Erënneren Last ausgefouert Kommando

Erënnert un e virdru benotzte spezifesche Kommando. Kombinatioun vu Bang an 8 (!8) Kommando erënnert un d'Nummer 8 Kommando déi Dir ausgefouert hutt.

[[email  ~]$ !8

13. Erënneren Last ausgefouert spezifesch Kommando

Erënnert virdrun benotzt Kommando (netstat -np | grep 22) mat '!' a gefollegt vun e puer Buschtawen vun deem bestëmmte 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  -

Mir hu probéiert d'Muecht vun der Geschicht Kommando ze Highlight. Allerdéngs ass dëst net Enn. Deelt w.e.g. Är Erfahrung vum Geschichtsbefehl mat eis duerch eis Kommentarfeld hei drënner.