Slik bruker du Bash History i Linux eller MacOS Terminal

Innholdsfortegnelse:

Slik bruker du Bash History i Linux eller MacOS Terminal
Slik bruker du Bash History i Linux eller MacOS Terminal

Video: Slik bruker du Bash History i Linux eller MacOS Terminal

Video: Slik bruker du Bash History i Linux eller MacOS Terminal
Video: The Apple Watch ECG found something unexpected about my heart - YouTube 2024, April
Anonim
Den bash shell er standard terminal miljøet inkludert med de fleste Linux distribusjoner, inkludert med macOS, og tilgjengelig for installasjon på Windows 10. Den 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.
Den bash shell er standard terminal miljøet inkludert med de fleste Linux distribusjoner, inkludert med macOS, og tilgjengelig for installasjon på Windows 10. Den 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.

Tastatursnarveier

For å 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 historikken din. 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.

  • Ctrl + R: Husk siste kommando 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.
Image
Image

Se din bashistorie

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

history

Du vil 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
Du kan gjøre alt du liker med utgangen. For eksempel kan du røre den til

grep

kommandoen for å søke i kommandoboken din.

history | grep your_search

Du kan også røre den til
Du kan også røre den til

tail

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.

history | tail -5

Image
Image

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 din bash-historie. Det er kommandoen med en "12" til venstre for den når du kjører

history

kommando. 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.
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,

!-2

ville kjøre den andre til siste kommandoen du løp.

!!

betyr det samme som

!-1

This expansion works anywhere on the line. You can add anything you like before or after
This expansion works anywhere on the line. You can add anything you like before or after

!!

eller noen av de andre uttrykkene i denne delen. For eksempel kan du skrive inn følgende kommando for å gjenopprette den siste kommandoen du kjørte gjennom

sudo

og gir det roten privilegier. 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 text

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

!text

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 nyeste kommandoen som begynner med"

pi

, Og kjør det øyeblikkelig:

!pi

Du kan legge til en
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

!text:p

Image
Image

Gjenbruk argumenter fra historien din

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.

command !$

For eksempel, la oss si at du kjørte kommandoen

touch /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 grunnen, kan du kjøre:

nano !$

De

!$

ville gjøre bash automatisk fylle inn det siste argumentet fra din forrige kommando.

Dette fyller bare i det siste argumentet. Så, hvis du kjører
Dette fyller bare i det siste argumentet. Så, hvis du kjører

ping google.com -c 4

og kjør deretter

ping !$

dette ville 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 det siste:

command !^

Så, hvis du kjørte

ping google.com -c 4

og deretter løp

ping !^

bash ville utvide dette til"

ping google.com'

For å fylle ut alle argumentene som ble brukt i den forrige kommandoen i stedet for bare et enkelt argument, bruker du følgende:
For å fylle ut alle argumentene som ble brukt i den forrige kommandoen i stedet for bare et enkelt argument, bruker du følgende:

command !*

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.
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.

command !abc:#

For eksempel kjørte vi kommandoen

sudo hostname 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å, hvis vi løper

echo !su:2

bash vil søke tilbake for å finne den siste kommandoen som begynner med"

su

"Og fyll inn sitt andre argument, som er"

ubuntu

“.

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

command !abc:*

Image
Image

Rerun den forrige kommandoen og modifiser den

Bash lar deg også omdanne den forrige kommandoen og angi 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 det med teksten"

xyz

“.

^abc^xyz

For eksempel, hvis du ved et uhell løp

ping gogle.com

du kan da kjøre

^gog^goog

og bash ville kjøre kommandoen

ping google.com

i stedet.

Image
Image

Hvor historien din er lagret, og hvordan du fjerner den

Den bash shell 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 historien 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, og forhindrer at historikkfilen vokser for stor. Antall historikkoppføringer bash husker styres av
Bash husker bare et begrenset antall kommandoer som standard, og forhindrer at historikkfilen vokser for stor. Antall historikkoppføringer bash husker styres av

HISTSIZE

variabel. 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 å sette historien 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 det tilbake til et bestemt antall oppføringer.

Image
Image

Slik ignorerer du rom og duplikater

Bash lar deg ignorere historikkoppføringer som begynner med et mellomrom hvis du setter inn

HISTCONTROL

variabel 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 det, sett
Bash lar deg også ignorere duplikatkommandoer som kan rote din historie. For å gjøre det, sett

HISTCONTROL

til

ignoredups.

HISTCONTROL=ignoredups

For å bruke begge
For å bruke begge

ignorespace

og

ignoredups

funksjon, sett inn

HISTCONTROL

variabel 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.

Anbefalt: