24Aug

Slik bruker du Bash History i Linux eller MacOS Terminal

click fraud protection

Bash-skallet er standardterminalmiljøet som følger med de fleste Linux-distribusjoner, inkludert med macOS, og tilgjengelig for installasjon på Windows 10. Det husker kommandoene du skriver og lagrer dem i en historikkfil. Du kjenner nok et par grunnleggende om bash-historien, men det er mye kraftigere enn du kanskje skjønner.

Tastaturgenveier

Hvis du vil bla gjennom bash-historien, kan du bruke noen av bashs mange nyttige hurtigtaster. Trykk på disse snarveiene, og kommandoene du har brukt tidligere, vises ved spørringen.

  • Pil opp eller Ctrl + P : Gå til forrige kommando i din historie. Trykk på tasten flere ganger for å gå bakover gjennom kommandoene du har brukt.
  • Pil ned eller Ctrl + N : Gå til neste kommando i din historie. Trykk på tasten flere ganger for å gå fremover gjennom kommandoene du har brukt.
  • Alt + R : Tilbakestill eventuelle endringer i en kommando du har trukket fra historien din hvis du har redigert den på den aktuelle linjen.

Bash har også en spesiell "tilbakekall" -modus du kan bruke til å søke etter kommandoer du tidligere har kjørt, i stedet for å bla gjennom dem en etter én.

instagram viewer

  • Ctrl + R : Husk den siste kommandoen som matcher tegnene du oppgir. Trykk denne snarveien og begynn å skrive for å søke i bash-historien din for en kommando.
  • Ctrl + O : Kjør kommandoen du fant med Ctrl + R.
  • Ctrl + G : La historikken søke modus uten å kjøre en kommando.

Vis din bashistorie

Du kan skrive ut hele bash-historien til skjermen ved å kjøre en enkelt kommando:

-historie

Du får se en liste over alle kommandoene i bash-historien din, sammen med et tall til venstre for hver. Kommandoen med en "1" ved siden av den er den eldste kommandoen i bash-historien, mens kommandoen med høyest tall er den nyeste.

Du kan gjøre alt du liker med utgangen. For eksempel kan du røre den til grepcommand for å søke i kommandoboken din.

historie |grep your_search

Du kan også røre den til hale kommandoen for å vise bare et lite antall av de siste kommandoene du har kjørt. For eksempel vil følgende kommando vise de siste 5 oppføringene i historikken din.

historie |hale -5

Kjør kommandoer fra historien din

Bash kan raskt "utvide" tidligere kommandoer, eller utvide dem og endre dem. Denne funksjonen er kjent som "historieutvidelse" og bruker et utropstegn, kjent som et "bang".Bare skriv dem på spørringen og trykk Enter for å kjøre dem som om du vil kjøre en hvilken som helst annen kommando.

For å kjøre en bestemt kommando fra historien din med nummeret, bruk følgende kommando:

! #

For eksempel, la oss si at du ønsket å kjøre den 12. kommandoen fra bash-historien din. Det er kommandoen med en "12" til venstre for det når du kjører historikk kommandoen. Du skriver inn følgende kommando.

! 12

Hvis du vil kjøre den siste kommandoen du kjørte igjen, skriver du inn følgende. Dette har samme effekt som å trykke på pil opp en gang for å vise forrige kommando og deretter trykke Enter.

! !

Du kan også referere til en kommando et visst antall linjer tilbake. For eksempel ville! -2 kjøre den andre til siste kommandoen du kjørte.!!betyr det samme som! -1.

Denne utvidelsen fungerer hvor som helst på linjen. Du kan legge til noe du liker før eller etter!eller noen av de andre uttrykkene i denne delen. For eksempel kan du skrive følgende kommando for å gjenopprette den siste kommandoen du kjørte gjennom sudo, og gi den rotasjonsrettigheter. Dette er spesielt nyttig hvis du glemmer å legge til sudo før du kjører en kommando.

sudo! !

Eller, for eksempel, kan du omdanne den forrige kommandoen og røre utgangen til grep for å søke etter litt tekst.

! !|grep-tekst

Hvis du vil søke etter en kommando i din historie og kjøre den, skriver du inn følgende. Dette vil kjøre den siste kommandoen som samsvarer med teksten du angir:

! Tekst

Så hvis du nylig kjørte en kommando som begynte med ping, kan du kjøre følgende kommando for å søke etter den. Dette vil søke bakover gjennom historien din, finn den siste kommandoen som begynner med "pi", og kjør den umiddelbart:

! Pi

Du kan legge til en: p til noen av de ovennevnte utvidelsene og bash vil skrive ut kommandoen til terminalen uten å kjøre den. Dette er nyttig hvis du vil bekrefte at du velger riktig kommando før du kjører den.

! 12: p!: P! Tekst: p

Gjenbruk argumenter fra historien

Bash lar deg også kjøre en ny kommando, men bruk argumenter fra tidligere kommandoer i historien din. Dette kan hjelpe deg med å raskt gjenbruke lange eller kompliserte argumenter uten å måtte skrive på nytt.

kommando! $

For eksempel, la oss si at du kjørte kommandoen, trykk /home/chris/ some_long_file_name_you_dont_want_to_type_again. Du vil nå kjøre kommandoen nano /home/chris/ some_long_file_name_you_dont_want_to_type_again. I stedet for å skrive hele greia fra bunnen av, kan du kjøre:

nano! $

! $ Vil gjøre bash automatisk fylle inn det siste argumentet fra den forrige kommandoen.

Dette fyller bare i det siste argumentet. Så hvis du kjører ping google.com -c 4 og kjører ping! $, Vil dette bare utvide til "ping 4".

For å fikse denne situasjonen kan du bruke følgende triks for å utvide det første argumentet på linjen, i stedet for den siste:

-kommandoen! ^

Så hvis du kjørte ping google.com -c 4 og deretter kjørte ping! ^,bash vil utvide dette til "ping google.com".

Hvis du vil fylle ut alle argumentene som ble brukt i den forrige kommandoen i stedet for bare et enkelt argument, kan du bruke følgende:

-kommando! *

Så hvis du kjørte ping!* I stedet vil bash automatisk fylle ut alle argumentene du brukte i forrige kommando.

Du kan bruke det samme trikset du bruker til å kjøre kommandoer fra historien din for å få argumenter fra dem. Bare bruk følgende skjema.

-kommando! abc:#

For eksempel kjørte vi kommandoen sudo vertsnavn ubuntu tidligere. Hvis vi kjører følgende kommando, vil bash søke bakover gjennom historien for å finne den siste kommandoen som begynner med bokstavene vi skriver og fyll inn argumentet vi angir. Så hvisvi kjører ekko! su: 2, bash vil søke tilbake for å finne den siste kommandoen som begynner med "su" og fylle ut det andre argumentet, som er "ubuntu".

Andre triks fungerer som du kanskje forventer. Hvis du for eksempel erstatter tallet med en stjerne, kjent som jokertegn, forårsaker bash å fylle ut alle argumenter fra kommandoen:

-kommando! Abc: *

Gjenta tidligere kommando og modifiser det

Bash lar deg også omdanne den forrige kommandoenog spesifiser noe som skal endres. Dette kan være nyttig for å korrigere en skrivefeil i en kommando. For eksempel vil den følgende kommandoen gjenta den forrige kommandoen, erstatte teksten "abc" i den med teksten "xyz".

^ abc ^ xyz

For eksempel, hvis du ved et uhell kjørte ping gogle.com, kan du deretter kjøre ^ gog ^ goog og bash ville kjøre kommandoen ping google.com i stedet.

Hvor historien din er lagret, og hvordan du fjerner det

Bash-skallet lagrer historien til kommandoer du har kjørt i brukerkontoens historikkfil på ~ /. bash_history som standard. For eksempel, hvis brukernavnet ditt er bob, finner du denne filen på /home/bob/. bash_history.

Fordi historikken din er lagret i en fil, fortsetter den mellom øktene. Du kan kjøre noen kommandoer, logge ut, komme tilbake neste dag, og de kommandoene vil fortsatt være i din historiefil klar til å vise og bruke. Hver brukerkonto har sin egen historikkfil med en egen kommandog History.

For å fjerne bash-historien, kan du kjøre følgende kommando. Dette sletter innholdet i brukerkontoens. bash_history-fil:

history -c

Bash husker bare et begrenset antall kommandoer som standard, slik at historikkfilen ikke vokser for stor. Antall historikkoppføringer bash husker er kontrollert av HISTSIZEvariable. Standard er vanligvis 500 eller 1000 oppføringer. Du kan kjøre følgende kommando for å se størrelsen på bash-historien på systemet.

echo $ HISTSIZE

For å angi historien din til null, kjør følgende kommando.

HISTSIZE = 0

For den nåværende økten vil bash ikke lagre noen historikkoppføringer med mindre du kjører en kommando som HISTSIZE = 1000 for å sette den tilbake til et bestemt antall oppføringer.

Slik ignorerer du mellomrom og duplikater

Bash lar deg ignorere historikkoppføringer som begynner med et mellomrom hvis du stiller HISTCONTROLvariable til ignorespace.

HISTCONTROL = ignorespace

Skriv inn et mellomrom før en kommando før du kjører den i bash-skallet, og kommandoen kjører normalt, men vises ikke i din historie hvis du har denne variabelen aktivert. Dette gjør at du kan holde historien litt renere, og velger å kjøre kommandoer uten at de vises i din historie.

Bash lar deg også ignorere duplikatkommandoer som kan rote din historie. For å gjøre dette, sett HISTCONTROL til ignoredups.

HISTCONTROL = ignoredups

Hvis du vil bruke både ignorespace og ignoredups-funksjonen, setter du HISTCONTROL-variabelen til ignoreboth.

HISTCONTROL = ignoreboth

Vær oppmerksom på at bash-variabler du angir, vil bare vare ved den nåværende økten. Du må legge til disse i brukerkontoens. bashrc-fil for å få disse verdiene automatisk angitt i hver bash-økt du starter, hvis du foretrekker det.

Bash skallet er et komplekst verktøy med mange flere alternativer enn disse. Rådfør deg med Bash History Builtins og History Expansion-seksjonene i den offisielle bash manualen, mer detaljert informasjon og andre avanserte triks du kan bruke.