Előfeltételek:
Az oktatóanyagban bemutatott lépések végrehajtásához a következő összetevőkre van szüksége:
- Egy megfelelően konfigurált Linux rendszer. Nézze meg hogyan állíthat be egy Ubuntu virtuális gépet a VirtualBoxban .
- Alapvető ismeretek a parancssori felületről.
Bash történelem
A Bash az alapértelmezett shell a legtöbb modern Linux rendszerben. Az „sh”, az eredeti UNIX shell utódjaként számos szolgáltatást és fejlesztést tartalmaz, például a címtárkezelést, a jobvezérlést, az álneveket, a parancselőzményeket és még sok mást.
A Bash nyomon követi a terminálról korábban végrehajtott összes parancsot. Ez hihetetlenül hasznos lehet számos helyzetben, például hibakereséskor. Csökkentheti az azonos/hasonló parancsok újra és újra begépelésének szükségességét is.
Az előzmények kezeléséhez a Bash két beépített paranccsal érkezik:
$ típus történelem
$ típus fc
Az előzmények tárolására a Bash két különböző technikát használ:
- Amikor shell-munkamenettel dolgozik, annak előzményei a memóriában tárolódnak.
- Bezáráskor a memóriában tárolt előzmények egy előzményfájlba kerülnek.
A Bash által használt alapértelmezett előzményfájl a következő helyen található:
$ macska ~ / .bash_history
Van még néhány környezeti változó és billentyűparancs, amelyek megváltoztatják a Bash előzmények kezelését.
A Bash History használata
Alapvető használat
A nemrégiben futtatott parancsok listájának megtekintéséhez használja a következő parancsot:
$ történelem
Itt megjelenik a pufferben tárolt összes parancs. Minden parancshoz számérték tartozik. A legrégebbi parancshoz 1 van hozzárendelve.
A következő paranccsal korlátozhatjuk a nyomtatandó parancsok számát:
$ történelem N
Itt N egy egész szám, ahol N >= 0. A kimenet az előzmények utolsó N parancsát tartalmazza.
A kimenetet a grep-pel együtt is használhatjuk szűrésre:
$ történelem | markolat < húr >
A hosszú történelem böngészéséhez használhatjuk a „kevesebb” parancsot:
$ történelem | Kevésbé
Parancsok törlése az előzményekből
Ha egy adott parancsot el kell távolítania az előzményekből, használja a következő parancsokat:
$ történelem$ történelem -d < parancs_szám >
$ történelem
Hasonlóképpen az M-től N-ig terjedő parancsok eltávolításához az előzményekből a következő parancsokat használhatjuk:
$ történelem$ történelem -d M-N
$ történelem
Az aktuális terminálmunkamenet RAM-pufferének előzményeinek törléséhez használja a következő parancsokat:
$ történelem -c$ történelem
Az előzmények törléséhez a lemezen tárolt előzményfájlból, teljesen felülírhatjuk NULL-lal:
$ macska / dev / nulla > $HISTFILE
Bash előzmények beállításai
Számos módja van annak, hogy Bash hogyan kezelje a történelmet. Ezen opciók közül sokat környezeti változók kezelnek.
Értékük megváltoztatásához szerkesztjük a „bashrc” fájlt:
$ nano ~ / .bashrc
A szerkesztés után mentse el a fájlt, és töltse be újra a Bashba.
$ forrás ~ / .bashrc
A rendszerszintű módosítások végrehajtásához szerkessze a „bashrc” fájlt, amely a következő helyeken található:
$ nano / stb / bash.bashrc$ nano / stb / bashrc
Puffer mérete
Ahogy korábban említettük, a Bash két puffert használ a parancselőzmények tárolására a RAM-ban (az aktuális munkamenethez) és egy lemezfájlban (az összes előző munkamenethez).
Ezeknek a puffereknek a méretét két környezeti változó szabályozza:
- HISTSIZE : Meghatározza a RAM pufferben tárolandó bejegyzések számát.
- HISTFILESIZE : Meghatározza a lemezfájlban tárolandó bejegyzések számát.
Megváltoztathatjuk értéküket a „bashrc”-ban, hogy megfeleljen az igényeinknek:
$ nano ~ / .bashrcPéldául, ha mindkét pufferben 5000 bejegyzést szeretne tárolni, frissítse a „bashrc” fájlt a következő kóddal:
$ HISTSIZE = 5000$ HISTFILESIZE = 5000
Parancs kizárása
Alapértelmezés szerint a Bash minden egyes futtatott parancsot az előzménypufferekben tárol. Azonban beállíthatjuk úgy, hogy a Bash figyelmen kívül hagyjon bizonyos parancsokat. Hasznos lehet olyan helyzetekben, amikor ugyanazokat a parancsokat többször kell futtatnia, megtöltve a puffert spammel.
- HISTCONTROL
Kezdjük a következő parancspéldával:
$ visszhang 'szerzetes' && történelem 5$ visszhang 'bonk' && történelem 5
Ahogy a történelem parancs kimenete is mutatja, csak az első echo parancs kerül regisztrálásra, a második nem.
Ez a HISTIGNORE környezeti változó működése. Azt mondja a Bashnak, hogy bizonyos minták alapján ne naplózza a parancsokat az előzménypufferben. A következő értékek állnak rendelkezésre:
- figyelmen kívül hagyottak : Nem kerül naplózásra, ha egy parancs megegyezik az előző előzménybejegyzéssel.
- szóköz figyelmen kívül hagyása : Nem kerül naplózásra, ha egy parancs szóközzel kezdődik az elején.
- figyelmen kívül hagyja mindkettőt : Alkalmazza mind az ignoredup, mind a ignorespace szabályát.
- töröltek : Az aktuális parancsnak megfelelő összes előző sor törlődik az előzményekből.
Az első példában bemutattuk az ignorespace használatát. Azonban nem minden disztribúció szállíthatja a Bash-t ezzel a konfigurációval. Mint mindig, hozzáadhatjuk őket a „bashrc”-hoz:
$ HISTCONTROL =mindkettő figyelmen kívül hagyása
Több opció engedélyezése is lehetséges a következő paranccsal:
$ HISTCONTROL =ignoredups:ignorespaceItt az ignoredups:ignorespace az ignoreboth megfelelője.
- HISTIGNORE
Ez a környezeti változó egy vagy több mintát tartalmazhat. A HISTIGNORE által leírt mintáknak megfelelő parancsok nem lesznek regisztrálva egyik előzménypufferben sem. A mintákat a reguláris kifejezések segítségével határozzuk meg.
A szerkezet a következő:
$ HISTIGNORE = 'Például a történelem és az echo parancsok Bash előzményekből való kizárásához frissítse a HISTIGNORE fájlt az alábbiak szerint:
$ HISTIGNORE = 'történelem' : 'visszhang*'
A teszteléshez a következő parancsláncot használhatjuk:
$ ls -l / volt / fajankó &> / dev / nulla$ történelem
$ visszhang Helló Világ
$ történelem
Időbélyegzés
A Bash beállítható úgy is, hogy naplózza a parancs futtatásának idejét. Különféle helyzetekben hasznos lehet, például hibakereséskor.
Az időbélyegek engedélyezéséhez a Bash-előzményekben frissítse a HISTTIMEFORMAT értékét:
$ HIST IDŐFORMÁTUM = 'Az összes elérhető időformátum vezérlőkarakter elérhető a dátum parancs kézi oldalán.
$ Férfi dátum
Az alábbi lista néhány egyszerűt tartalmaz:
- %T: Idő
- %d: nap
- %m: Hónap
- %y:Év
Történelem Kitartás
Amikor a CLI-vel dolgozik, sok esetben több terminállal dolgozik. Itt válhat fájdalom forrásává Bash történelemkezelése.
Alapértelmezés szerint az előzményfájl a munkamenet bezárása után frissül. Bár egyetlen munkamenethez megfelelő, több egyidejű munkamenethez nem. Ezt a problémát úgy oldhatjuk meg, hogy kényszerítjük a Bash-t, hogy frissítse az előzményfájlt minden alkalommal, amikor egy parancs fut.
Ehhez frissítse a PROMPT_COMMAND értékét:
$ PROMPT_COMMAND = 'történelem -a'Itt a PROMPT_COMMAND változó érvényes parancsokat tartalmazhat. A PROMPT_COMMAND tartalma lefut, mielőtt a Bash elkezdi fogadni a felhasználói bevitelt. A „history –a” parancs arra kényszeríti az előzményeket, hogy a tartalmat hozzáfűzzék az előzményfájlhoz.
Történelem bővítés és kijelölők
A Bash néhány beépített parancsikont tartalmaz, hogy kihasználja a történelem funkcióját. Íme a kijelölők listája:
- !! : Az előzmények utolsó parancsát futtatja.
- !N : Futtatja az N-edik parancsot az előzményekből.
- !-N : Az N-edik parancsot az előzmények legutóbbi parancsa előtt futtatja.
- !
: A legutóbbi parancsot futtatja.
A következő parancsláncok bemutatják a használatukat:
$ visszhang 1$ visszhang 2
$ visszhang 3
$ történelem
$ ! visszhang
$ ! - 3
$ ! 1
$ !!
Egyes jelölők az előzmények parancs argumentumaival is működnek:
- !:* : Használja a legutóbbi parancs összes argumentumát.
- !:^ : Használja a legutóbbi parancs első argumentumát.
- !:N : Használja a legutóbbi parancs N-edik argumentumát.
- !:M-N : Használja a legutóbbi parancs M és N közötti argumentumait.
- !:$ : Használja a legutóbbi parancs utolsó argumentumát.
A következő parancsláncok bemutatják a használatukat:
$ visszhang 1 2 3 4 5 6 7$ visszhang ! : *
$ visszhang 1 2 3 4 5 6 7
$ visszhang ! :^
$ visszhang 1 2 3 4 5 6 7
$ visszhang ! : 5
$ visszhang 1 2 3 4 5 6 7
$ visszhang ! : 1 - 5
$ visszhang 1 2 3 4 5 6 7
$ visszhang ! :$
Ha egy másik parancs paramétereivel kell dolgoznia, a jelölők így néznek ki:
- !
^ : Aparancs első argumentumát használja. - !
$ : Aparancs utolsó argumentumát használja.
A következő parancslánc bemutatja a használatukat:
$ ls -lh / volt / log &> / dev / nulla$ érintés 1 .txt 2 .txt 3 .txt 4 .txt 5 .txt
$ visszhang ! érintés ^
$ visszhang ! érintés $
Előzmények Billentyűparancsok
Az összes parancson és környezeti változón kívül a Bash néhány billentyűparancsot is támogat a könnyebb navigáció érdekében:
- Fel nyílbillentyű: görgetés visszafelé
- Le nyílbillentyű: görgetés előre
Vannak billentyűkódok is, amelyek az interaktív előzmények kereséshez érhetők el:
- Ctrl + R : Parancsok keresése az előzményekben.
- Ctrl + O : Futtassa a kiválasztott parancsot.
- Ctrl+G : Kilépés az interaktív keresésből.
Következtetés
Részletesen megbeszéltük a Bash történelmét. Megtanultuk, hogyan tárolja a Bash a parancsok előzményeit, és hogyan lehet különböző módon kihasználni az előnyeit. Különféle példákon mutattuk be, hogyan kell dolgozni a Bash történelemmel.
Szeretne többet megtudni Bashról? A Bash programozási alkategória több száz útmutatót tartalmaz a Bash különböző funkcióiról.
Boldog számítástechnikát!