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.
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.
grep
kommandoen for å søke i kommandoboken din.
history | grep your_search
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
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
!!
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
!!
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
!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
: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
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.
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'
command !*
Så, hvis du kjørte
ping !*
I stedet vil bash automatisk fylle ut alle argumentene du brukte i forrige kommando.
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:*
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.
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
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.
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.
HISTCONTROL
til
ignoredups.
HISTCONTROL=ignoredups
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.