no.phhsnews.com


no.phhsnews.com / Slik bruker du bashistorikken din i Linux eller MacOS Terminal

Slik bruker du bashistorikken din i Linux eller MacOS Terminal


Bash-skallet er standardterminalmiljøet som følger med de fleste Linux-distribusjoner, inkludert i 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.

Tastaturgenveier

RELATERT: De beste tastaturgenveiene for Bash (aka Linux og MacOS Terminal)

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 under spørringen.

  • Pil opp eller Ctrl + P : Gå til forrige kommando i historien din. Trykk på tasten flere ganger for å gå bakover gjennom kommandoene du har brukt.
  • Pil ned eller Ctrl + N : Gå til neste kommando i historien din. 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 tilbakekallingsmodus du kan bruke til å søke etter kommandoer du tidligere har kjørt, i stedet for å bla gjennom dem en etter en.

  • Ctrl + R : Tilbakekall siste kommando som samsvarer med tegn du oppgir. Trykk på 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 historikk søkemodus

Vis din bashistorie

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

historie

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

RELATED: Bli en Linux Terminal Power User med disse 8 triksene

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

historie | grep your_search

Du kan også røre den til kommandoenhalefor å vise bare et lite antall av de siste kommandoene du har kjørt. Følgende kommando vil for eksempel 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 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 det når du kjører kommandoenhistorie. Du skriver følgende kommando.

! 12

Skriv inn følgende for å kjøre den siste kommandoen du kjørte igjen. 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 vil! - 2kjø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 alt 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 gjennomsudo, og gi den rotasjonsrettigheter. Dette er spesielt nyttig hvis du glemmer å legge tilsudofør du kjører en kommando.

sudo !!

Eller du kan for eksempel gjenopprette den forrige kommandoen og pipe utgangen til grep for å søke etter litt tekst.

! | grep-tekst

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

! tekst

Så hvis du nylig kjørte en kommando som begynte medping, 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: ptil 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 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 å skrive om dem.

kommando! $

La oss for eksempel si at du kjørte kommandoentouch / home / chris / some_long_file_name_you_dont_want_to_type_again. Du vil nå kjøre kommandoennano / 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! $

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

Bare dette fyller i det siste argumentet. Så hvis du kjørerping google.com -c 4og kjørerping! $, 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ørteping google.com -c 4og kjørte deretterping! ^, ville bash 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, vil du bruke følgende:

kommando! *

Så hvis du kjørteping! *i stedet, ville bash automatisk fylle alle argumentene du brukte i den forrige kommandoen

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: #

Vi kjørte for eksempel kommandoensudo vertsnavn ubuntutidligere. Hvis vi kjører følgende kommando, vil bash søke bakover gjennom historien for å finne den siste kommandoen begynne ng med bokstavene vi skriver inn og fyll inn argumentet vi spesifiserer. Så hvis vi kjørerecho! Su: 2, vil bash 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 endre det

Bash tillater også Du skal omdanne den forrige kommandoen og angi noe som skal endres. Dette kan være nyttig for å korrigere en skrivefeil i en kommando. Følgende kommando vil for eksempel gjenta den forrige kommandoen, og erstatte teksten "abc" i teksten "xyz".

^ abc ^ xyz

For Hvis du for eksempel kjørteping gogle.com, kan du deretter kjøre^ gog ^ googog bash ville kjøre kommandoenping google.comi stedet.

Hvor historien din er lagret, og hvordan du sletter 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 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 historiefil med en egen kommandog History.

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

historie -c

Bash husker bare et begrenset antall kommandoer som standard, og forhindrer at historikkfilen vokser for stor. Antall historikkoppføringer bash husker styres avHISTSIZEvariabel. 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 nåværende sesjon, vil bash ikke lagre noen historikkoppføringer med mindre du kjører en kommando somHISTSIZE = 1000for å sette den tilbake til et bestemt antall oppføringer.

Slik ignorerer du rom og duplikater

Bash lar deg ignorere historikkoppføringer som begynner med et mellomrom hvis du setterHISTCONTROL-variablen tilignorespace.

HISTCONTROL = ignorespace

Skriv inn et mellomrom før en kommando før du kjører den i bash shell og kommandoen kjører normalt, men vises ikke i historikken din 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 historien din.

Bash lar deg også ignorere duplikatkommandoer som kan forstyrre historien din. For å gjøre det, sett innHISTCONTROLtilignoredups.

HISTCONTROL = ignoredups

For å bruke både funksjonenignorespaceogignoredupsHISTCONTROLvariabel tilignoreboth.

HISTCONTROL = ignoreboth

Merk 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 satt 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åndboken, mer detaljert informasjon og andre avanserte triks du kan bruke.


Slik lager du egendefinerte tastaturgenveier med AutoHotkey

Slik lager du egendefinerte tastaturgenveier med AutoHotkey

Det er noen ting som bare er smerte å skrive - spesielt når du må skrive dem igjen og igjen. Eller enda verre, hvis de tingene du vil skrive ikke finnes på tastaturet ditt. Hva gjør du hvis du bruker et amerikansk tastatur og trenger å slippe en € i et dokument? Jeg hadde dette problemet. Jeg ble irritert, og enda verre, jeg gjorde feil.

(how-top)

Når merker iMessage Marker en melding som «Les»?

Når merker iMessage Marker en melding som «Les»?

Har du noensinne lagt merke til hvordan iMessage merker en melding som «Les» når den andre personen ser det? Disse kalles "lese kvitteringer", og de kan gi mye trygghet for de som du melder med. Men når nøyaktig vet den andre at du har lest meldingen? RELATED: Hvordan hindre folk i å vite at du har lest deres iMessage Vi har gjort noen test for å finne ut.

(how-top)