Bash History parancsok és bővítések

Bash History Parancsok Es Bovitesek



Ebben az útmutatóban bemutatjuk, hogyan kell dolgozni a Bash történelem parancsokkal.

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 ~ / .bashrc

Pé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:ignorespace

Itt 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
$ HIST IDŐFORMÁTUM = '%T %d:'

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:

  • !^ : A parancs első argumentumát használja.
  • !$ : A parancs 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!