A Linux „History Command” ereje a Bash Shellben
Napi rutinfeladataink során gyakran használjuk a history parancsot, hogy ellenőrizzük a parancsok előzményeit, vagy információt kapjunk a felhasználó által végrehajtott parancsokról. Ebben a bejegyzésben látni fogjuk, hogyan használhatjuk hatékonyan a történelem parancsot a felhasználók által a Bash shellben végrehajtott parancs kibontására. Ez hasznos lehet ellenőrzési célból, vagy annak kiderítéséhez, hogy melyik parancs milyen dátummal és időponttal fut le.
Alapértelmezés szerint a dátum és az időbélyeg nem látható a history parancs végrehajtása közben. A bash shell azonban CLI eszközöket biztosít a felhasználói parancselőzmények szerkesztéséhez. Lássunk néhány hasznos tippet és trükköt, valamint a history parancs erejét.
1. Sorolja fel az utolsó/összes végrehajtott parancsot Linuxban
Az egyszerű history parancs végrehajtása a terminálról megmutatja az utoljára végrehajtott parancsok teljes listáját sorszámokkal.
[narad@tecmint ~]$ history
1 PS1='\e[1;35m[\u@\h \w]$ \e[m '
2 PS1="\e[0;32m[\u@\h \W]$ \e[m "
3 PS1="\u@\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. Sorolja fel az összes parancsot dátummal és időbélyeggel
Hogyan találhat dátumot és időbélyeget a parancs ellenében? Az 'export' parancs változóval megjeleníti a történelem parancsot a megfelelő időbélyeggel, amikor a parancsot végrehajtották.
[narad@tecmint ~]$ 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[\u@\h \w]$ \e[m '
7 2013-06-09 10:40:12 PS1="\e[0;32m[\u@\h \W]$ \e[m "
8 2013-06-09 10:40:12 PS1="\u@\h:\w [\j]$ "
9 2013-06-09 10:40:12 ping google.com
10 2013-06-09 10:40:12 echo $PS1
A HISTTIMEFORMAT változók jelentése
%F Equivalent to %Y - %m - %d
%T Replaced by the time ( %H : %M : %S )
3. Parancsok szűrése az előzményekben
Amint látjuk, ugyanaz a parancs többször ismétlődik a fenti kimenetben. Hogyan lehet kiszűrni az egyszerű vagy nem destruktív parancsokat a történelemben? Használja a következő „export” parancsot a parancs megadásával a HISTIGNORE='ls -l:pwd:date:' mezőben, és a rendszer nem menti el, és nem jelenik meg az előzmények parancsban.
[narad@tecmint ~]$ export HISTIGNORE='ls -l:pwd:date:'
4. Hagyja figyelmen kívül a duplikált parancsokat a történelemben
Az alábbi paranccsal figyelmen kívül hagyhatjuk a felhasználó által írt ismétlődő parancsbeviteleket. Csak egyetlen bejegyzés jelenik meg az előzményekben, ha a felhasználó ugyanazt a parancsot többször is végrehajtja egy Bash Promptban.
[narad@tecmint ~]$ export HISTCONTROL=ignoredups
5. Az exportálási parancs kikapcsolása
Az export parancs kikapcsolása menet közben. Egyesével hajtsa végre az unset export parancsot a változókkal, függetlenül attól, hogy milyen parancsokat exportált az export parancs.
[narad@tecmint ~]$ unset export HISTCONTROL
6. Mentse az export parancsot véglegesen
Az export parancs végleges mentéséhez írja be a következőképpen: .bash_profile.
[narad@tecmint ~]$ 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. Sorolja fel az adott felhasználó által végrehajtott parancsokat
Hogyan lehet megtekinteni egy adott felhasználó által végrehajtott parancselőzményeket. A Bash egy '~/.bash_history' fájlban tartja nyilván az előzményeket. Megtekinthetjük vagy megnyithatjuk a fájlt a parancselőzmények megtekintéséhez.
[narad@tecmint ~]$ 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. Tiltsa le a parancsok előzményeinek tárolását
Egyes szervezetek nem vezetik a parancsok előzményeit a szervezet biztonsági politikája miatt. Ebben az esetben szerkeszthetjük a felhasználó .bash_profile fájlját (ez egy rejtett fájl), és beírhatjuk az alábbiak szerint.
[narad@tecmint ~]$ 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)
Mentse el a fájlt és töltse be a változtatásokat az alábbi paranccsal.
[narad@tecmint ~]$ source .bash_profile
Megjegyzés: Ha nem szeretné, hogy a rendszer emlékezzen az Ön által beírt parancsokra, egyszerűen hajtsa végre az alábbi parancsot, amely menet közben letiltja vagy leállítja az előzmények rögzítését.
[narad@tecmint ~]$ export HISTSIZE=0
Tippek: Keressen rá a „HISTSIZE” kifejezésre, és szerkessze az „/etc/profile” fájlban superuser segítségével. A fájl módosítása globálisan érvényes.
9. Törölje vagy törölje a parancsok előzményeit
A fel és le nyíllal láthatjuk a korábban használt parancsokat, amelyek hasznosak lehetnek, vagy felháboríthatják. Az összes bejegyzés törlése vagy törlése a bash előzmények listájából a „-c” opciókkal.
[narad@tecmint ~]$ history -c
10. Parancsok keresése az előzményekben a Grep paranccsal
Keresés a parancsban a „.bash_history” fájlban úgy, hogy az előzményfájlt a „grep” fájlba az alábbiak szerint vezeti be. Például az alábbi parancs megkeresi és megtalálja a „pwd” parancsot az előzmények listájából.
[narad@tecmint ~]$ 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. Keresse meg a Lastly Executed Command parancsot
A korábban végrehajtott parancs keresése a 'Ctrl+r' paranccsal. Ha megtalálta a keresett parancsot, nyomja meg az „Enter” billentyűt a végrehajtásához, vagy nyomja meg az „esc” billentyűt a visszavonáshoz.
(reverse-i-search)`source ': source .bash_profile
12. Hívja vissza az utolsó végrehajtott parancsot
Hívjon elő egy korábban használt konkrét parancsot. A Bang és a 8 (!8) parancsok kombinációja visszahívja az Ön által végrehajtott 8 számú parancsot.
[narad@tecmint ~]$ !8
13. Hívja vissza az utolsóként végrehajtott konkrét parancsot
Hívja elő a korábban használt parancsot (netstat -np | grep 22) a „!” karakterlánccal, majd írja be az adott parancs néhány betűjét.
[narad@tecmint ~]$ !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 -
Megpróbáltuk kiemelni a történelemparancs erejét. Ezzel azonban még nincs vége. Kérjük, ossza meg velünk tapasztalatait az előzményekről az alábbi megjegyzésmezőn keresztül.