Sådan bruges din Bash History i Linux eller MacOS Terminal

Indholdsfortegnelse:

Video: Sådan bruges din Bash History i Linux eller MacOS Terminal

Video: Sådan bruges din Bash History i Linux eller MacOS Terminal
Video: The Apple Watch ECG found something unexpected about my heart 2024, Marts
Sådan bruges din Bash History i Linux eller MacOS Terminal
Sådan bruges din Bash History i Linux eller MacOS Terminal
Anonim
Bash shell er standard terminal miljøet med de fleste Linux distributioner, inkluderet med macOS, og tilgængelig til installation på Windows 10. Det husker de kommandoer, du skriver og gemmer dem i en historikfil. Du ved sikkert et par grundlæggende i bash-historien, men det er meget kraftigere end du måske indser.
Bash shell er standard terminal miljøet med de fleste Linux distributioner, inkluderet med macOS, og tilgængelig til installation på Windows 10. Det husker de kommandoer, du skriver og gemmer dem i en historikfil. Du ved sikkert et par grundlæggende i bash-historien, men det er meget kraftigere end du måske indser.

Tastaturgenveje

For at rulle gennem din bash historie kan du bruge et par af bashs mange nyttige tastaturgenveje. Tryk på disse genveje, og kommandoer, du tidligere har brugt, vises under spørgsmålet.

  • Pil op eller Ctrl + P: Gå til den forrige kommando i din historie. Tryk på tasten flere gange for at gå baglæns gennem de kommandoer, du har brugt.
  • Pil ned eller Ctrl + N: Gå til næste kommando i din historie. Tryk på tasten flere gange for at gå fremad gennem de kommandoer, du har brugt.
  • Alt + R: Gendan eventuelle ændringer til en kommando, du har trukket fra din historie, hvis du har redigeret den på den aktuelle linje.

Bash har også en særlig "recall" -tilstand, du kan bruge til at søge efter kommandoer, du tidligere har kørt, i stedet for at rulle gennem dem en efter en.

  • Ctrl + R: Husk den sidste kommando, der matcher de tegn, du angiver. Tryk på denne genvej, og begynd at skrive for at søge i din bash-historie for en kommando.
  • Ctrl + O: Kør kommandoen du fandt med Ctrl + R.
  • Ctrl + G: Forlad historiksøgningstilstanden uden at køre en kommando.
Image
Image

Se din bashistorie

Du kan udskrive hele din bash-historie til skærmen ved at køre en enkelt kommando:

history

Du får vist en liste over alle kommandoer i din bash-historie sammen med et nummer til venstre for hver. Kommandoen med en "1" ved siden af den er den ældste kommando i din bash-historie, mens kommandoen med det højeste nummer er den seneste.

Du kan gøre alt hvad du kan lide med output. For eksempel kan du rør det til
Du kan gøre alt hvad du kan lide med output. For eksempel kan du rør det til

grep

kommando for at søge din kommandobeskrivelse.

history | grep your_search

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

tail

kommando for kun at se et lille antal af de seneste kommandoer, du har kørt. F.eks. Vil følgende kommando vise de sidste 5 poster i din historie.

history | tail -5

Image
Image

Kør kommandoer fra din historie

Bash kan hurtigt "udvide" tidligere kommandoer, eller udvide dem og ændre dem. Denne funktion er kendt som "historieudvidelse" og bruger et udråbstegn, kendt som et "bang". Indtast dem bare ved prompten, og tryk på Enter for at køre dem som om du ville køre en anden kommando.

Hvis du vil køre en bestemt kommando fra din historie med nummeret, skal du bruge følgende kommando:

!#

Lad os sige, at du ønskede at køre den 12. kommando fra din bash-historie. Det er kommandoen med en "12" til venstre for den, når du kører

history

kommando. Du skriver følgende kommando.

!12

For at genkøre den sidste kommando, du løb, skal du skrive følgende. Dette har samme virkning som at trykke på pil op en gang for at se den forrige kommando og derefter trykke på Enter.
For at genkøre den sidste kommando, du løb, skal du skrive følgende. Dette har samme virkning som at trykke på pil op en gang for at se den forrige kommando og derefter trykke på Enter.

!!

Du kan også henvise til en kommando et bestemt antal linjer tilbage. For eksempel,

!-2

ville køre den anden til sidste kommando du løb.

!!

betyder 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 et hvilket som helst af de andre udtryk i dette afsnit. For eksempel kan du skrive følgende kommando for at genoprette den sidste kommando, du løb igennem

sudo

hvilket giver det rodrettigheder. Dette er især nyttigt, hvis du glemmer at tilføje

sudo

før du kører en kommando.

sudo !!

Eller for eksempel kan du gentage den foregående kommando og røre dens output til grep for at søge efter nogle tekst.

!! | grep text

Hvis du vil søge efter en kommando i din historie og køre den, skal du skrive følgende. Dette vil køre den sidste kommando, der matcher den tekst du angiver:
Hvis du vil søge efter en kommando i din historie og køre den, skal du skrive følgende. Dette vil køre den sidste kommando, der matcher den tekst du angiver:

!text

Så hvis du for nylig kørte en kommando, der begyndte med

ping

kan du køre følgende kommando for at søge efter det. Dette vil søge baglæns gennem din historie, find den seneste kommando, der begynder med"

pi

Og kør det øjeblikkeligt:

!pi

Du kan tilføje en
Du kan tilføje en

:p

til nogen af de ovennævnte udvidelser og bash vil udskrive kommandoen til terminalen uden at køre den. Dette er nyttigt, hvis du vil bekræfte, at du vælger den korrekte kommando, før du kører den.

!12:p

!!:p

!text:p

Image
Image

Genbrug argumenter fra din historie

Bash giver dig også mulighed for at køre en ny kommando, men brug argumenter fra tidligere kommandoer i din historie. Dette kan hjælpe dig med hurtigt at genbruge lange eller komplicerede argumenter uden at skulle skrive dem igen.

command !$

Lad os f.eks. Sige at du kørte kommandoen

touch /home/chris/some_long_file_name_you_dont_want_to_type_again

. Nu vil du køre kommandoen

nano /home/chris/some_long_file_name_you_dont_want_to_type_again

. I stedet for at skrive hele ting fra bunden, kan du køre:

nano !$

Det

!$

ville gøre bash automatisk udfylde det sidste argument fra din tidligere kommando.

Dette fylder kun det sidste argument. Så hvis du kører
Dette fylder kun det sidste argument. Så hvis du kører

ping google.com -c 4

og kør derefter

ping !$

dette ville bare udvide til"

ping 4

“.

For at rette denne situation kan du bruge følgende trick til at udvide det første argument på linjen, snarere end det sidste:

command !^

Så hvis du løb

ping google.com -c 4

og løb derefter

ping !^

bash ville udvide dette til"

ping google.com'

For at udfylde alle de argumenter, der blev brugt i den foregående kommando i stedet for blot et enkelt argument, skal du bruge følgende:
For at udfylde alle de argumenter, der blev brugt i den foregående kommando i stedet for blot et enkelt argument, skal du bruge følgende:

command !*

Så hvis du løb

ping !*

i stedet vil bash automatisk udfylde alle de argumenter, du brugte i den foregående kommando.

Du kan bruge det samme trick du bruger til at køre kommandoer fra din historie for at få argumenter fra dem. Brug blot følgende formular.
Du kan bruge det samme trick du bruger til at køre kommandoer fra din historie for at få argumenter fra dem. Brug blot følgende formular.

command !abc:#

For eksempel kørte vi kommandoen

sudo hostname ubuntu

tidligere. Hvis vi kører følgende kommando, vil bash søge baglæns gennem historien for at finde den sidste kommando, der begynder med de bogstaver, vi skriver, og udfylder det argument, vi angiver. Så hvis vi løber

echo !su:2

bash vil søge tilbage for at finde den sidste kommando, der begynder med"

su

"Og udfylde sit andet argument, som er"

ubuntu

“.

Andre tricks fungerer som du måske forventer. Hvis du for eksempel erstatter tallet med en stjerne, kendt som wildcard, får bash at udfylde alle argumenter fra kommandoen:

command !abc:*

Image
Image

Rerun den tidligere kommando og modificer den

Bash giver dig også mulighed for at genoprette den foregående kommando og angive noget, der skal ændres. Dette kan være nyttigt for at rette en skrivemaskine i en kommando. For eksempel vil den følgende kommando genoprette den forrige kommando og erstatte teksten"

abc

"I det med teksten"

xyz

“.

^abc^xyz

For eksempel, hvis du ved et uheld løber

ping gogle.com

så kan du køre

^gog^goog

og bash ville køre kommandoen

ping google.com

i stedet.

Image
Image

Hvor din historie gemmes, og hvordan du rydder den

Den bash shell gemmer historien om kommandoer, du har kørt i din brugerkontos historiefil ved ~ /.bash_history som standard. For eksempel, hvis dit brugernavn er Bob, finder du denne fil på /home/bob/.bash_history.

Fordi din historie er gemt i en fil, fortsætter den mellem sessioner. Du kan køre nogle kommandoer, logge ud, komme tilbage næste dag, og disse kommandoer vil stadig være i din historikfil klar til visning og brug. Hver brugerkonto har sin egen historikfil med en separat kommandop History.

For at rydde din bash historie kan du køre følgende kommando. Dette sletter indholdet af din brugerkonto's.bash_history-fil:

history -c

Bash husker kun et begrænset antal kommandoer som standard, hvilket forhindrer, at historikfilen vokser for stor. Antallet af historikposter bash husker styres af
Bash husker kun et begrænset antal kommandoer som standard, hvilket forhindrer, at historikfilen vokser for stor. Antallet af historikposter bash husker styres af

HISTSIZE

variabel. Standard er normalt 500 eller 1000 poster. Du kan køre følgende kommando for at se størrelsen af bash-historien på dit system.

echo $HISTSIZE

Hvis du vil indstille din historie til nul, skal du køre følgende kommando.

HISTSIZE=0

For den aktuelle session vil bash ikke gemme nogen historikposter, medmindre du kører en kommando som

HISTSIZE=1000

for at sætte det tilbage til et vist antal poster.

Image
Image

Sådan ignorerer du mellemrum og duplikater

Bash giver dig mulighed for at ignorere historikposter, der begynder med et mellemrum, hvis du indstiller

HISTCONTROL

variabel til

ignorespace.

HISTCONTROL=ignorespace

Indtast et mellemrum før en kommando, før du kører den i bash-skalen, og kommandoen kører normalt, men vises ikke i din historie, hvis du har denne variabel aktiveret. Dette giver dig mulighed for at holde din historie lidt renere og vælge at køre kommandoer uden at de vises i din historie.

Bash giver dig også mulighed for at ignorere duplikatkommandoer, der kan forstyrre din historie. For at gøre det skal du indstille
Bash giver dig også mulighed for at ignorere duplikatkommandoer, der kan forstyrre din historie. For at gøre det skal du indstille

HISTCONTROL

til

ignoredups.

HISTCONTROL=ignoredups

At bruge begge
At bruge begge

ignorespace

og

ignoredups

funktion, indstil

HISTCONTROL

variabel til

ignoreboth.

HISTCONTROL=ignoreboth

Bemærk, at bash-variabler, du indstiller, kun vil vare for den aktuelle session. Du skal tilføje disse til din brugerkontos.bashrc-fil for at få disse værdier automatisk indstillet i hver bash-session, du starter, hvis du foretrækker det.

Anbefalede: