Linux-kommandolinje - Terminalen holder som alle skaller en historie med kommandoer, der tidligere blev udført af en bruger. Denne historie er vedholdende og forbliver i hukommelsen, selv når vi genstarter vores system. Disse lagrede kommandoer kan tilbagekaldes og genbruges af os på den mest optimale måde til effektivt at bruge historikbesparende funktion for de fleste skaller.
Linux bash kommer med en meget kraftig kommando kaldet "historie". Denne kommando er en indbygget bash-kommando, der bruges til at udtrække historikoplysningerne om kommandoer, der er blevet udført af Linux-brugere i alle de foregående sessioner. I denne vejledning giver vi dig mulighed for at få mest muligt ud af din shellhistorie ved at lære den korrekte brug af kommandoen historie. Linux gemmer kommandohistorikken for en bestemt bruger i en fil ~ /.bash_history som standard.
Vi bruger Terminal-applikationen af Linux til at køre de kommandoer, der er nævnt i denne vejledning.
Visning af hele historikken
En bruger kan se hele historikken for sine shell-kommandoer fra historikfilen, der udelukkende er gemt for den bruger ved hjælp af følgende enkle kommando:
$ historie
Historikken udskrives på skærmen i følgende standardformat:
I ovenstående billede kan du se en liste over alle kommandoer med et nummer tildelt hver af dem. Nummer 1-kommandoen svarer til den første kommando, du kørte, og den sidst nummererede kommando repræsenterer den seneste kommando, du udførte.
Hvis du har kørt mange kommandoer, siden du brugte bash, vil du bemærke, at der vil være hundreder og endda tusinder af disse kommandoer, der vises her. For at få adgang til et par relevante kommandoer kan du filtrere de resultater, der vises med historikfunktionen. Du kan også tilpasse historik-kommandoen til at vise et bestemt antal kommandoer til dig.
Filtrering af historikoutput
Hvis du vil filtrere din historikoutput baseret på et specifikt nøgleord, som du muligvis har brugt i de tidligere kommandoer, kan du bruge historik-kommandoen som følger:
$ historie | grep [nøgleord]
Eksempel: I dette eksempel vil jeg kun se de ping-kommandoer, jeg nogensinde har kørt i skallen. Derfor vil jeg bruge følgende kommando:
$ historie | grep ping
Du kan se, at min output nu kun viser kommandoerne inklusive mit søgeord "ping" Annonce
Visning af et antal nylige kommandoer
Du kan også se et bestemt antal kommandoer, for eksempel:
- N antal nylige kommandoer
ELLER
- N antal ældste kommandoer
N Antal nylige kommandoer
Du kan se et bestemt antal nyligt kørte kommandoer ved hjælp af følgende kommando:
$ historie | hale -n
Eksempel:
I dette eksempel vil jeg se de sidste 3 kommandoer, jeg kørte med nøgleordet 'ping':
$ historie | grep ping | hale -3
Outputtet viser kun de 3 seneste ping-kommandoer i stedet for hele historikken
N Antal ældste kommandoer
Du kan se et bestemt antal af de ældste kørekommandoer ved hjælp af følgende kommando:
$ historie | hoved -n
Eksempel:
I dette eksempel vil jeg se de ældste 3 kommandoer, jeg kørte, med nøgleordet 'ping':
$ historie | grep ping | hoved -3
Outputtet viser kun de 3 ældste ping-kommandoer i stedet for hele historikken
Liste over alle kommandoer med dato og tidsstempel
Hvis du ønsker at se din kommandohistorik sammen med dato og tidsstempel, skal du bruge følgende eksportkommando:
$ eksport HISTTIMEFORMAT = "% F,% T"
Når du nu vil se historikken, skal du bare køre kommandoen historie for at se output i følgende format:
Bemærk, at denne ændring i format er midlertidig, og at den gendannes til den tidligere standard, når du lukker sessionen.
Navigering af kommandoer fra historikken
Mens du er på kommandolinjen, kan du navigere gennem tidligere kørte kommandoer og også huske nogle nyligt anvendte kommandoer ved at angive et nøgleord.
Rul gennem kommandoer
Du kan bruge følgende tastaturkontroller til at navigere gennem historik-kommandoer
Pil op / Ctrl + P | Ved hjælp af disse kontroller kan du få vist den forrige kommando, du brugte. Du kan trykke på disse kontroller flere gange for at gå tilbage til en bestemt kommando i historien. |
Pil ned / Ctrl + N | Ved hjælp af disse kontroller kan du få vist den næste kommando, du brugte. Du kan trykke på disse kontroller flere gange for at komme videre til en bestemt kommando i historikken. |
Alt + R | Hvis du redigerer en kommando, som du har trukket fra historikken, på en nuværende linje, kan du bruge denne kontrol til at vende den tilbage til den oprindelige kommando. |
Henter kommandoer
Du kan huske, køre eller vælge ikke at køre en bestemt kommando fra historikken ved hjælp af følgende kontrolelementer:
Ctrl + R | Ved hjælp af denne kontrol kan du huske en kommando fra historikken ved at angive en søgestreng. |
Ctrl + O | Ved hjælp af denne kontrol kan du køre den kommando, du huskede via Ctrl + R |
Ctrl + G | Ved hjælp af denne kontrol kan du afslutte historikken uden at køre den kommando, du huskede via Ctrl + R |
Eksempel:
I dette eksempel trykkede jeg på ctrl + R og leverede derefter søgestrengen 'ar'. Historikken viste kommandoen 'arch'.
Da jeg kørte kommandoen 'arch' ved at trykke på ctrl + O, viste den CPU-arkitekturen i mit system:
Brug af Bash-historien
Den virkelige magi i bash-historien er ved at bruge forskellige kommandoer og tilpasse selve historik-kommandoen for at gøre bedst mulig brug af historiefunktionen:
Kører kommandoer fra historien
- Som vi har set før, viser kommandoen historie kommandoerne ved at knytte et nummer til hver. Ved at bruge følgende kommando kan du køre en bestemt kommando fra historien baseret på dens antal:
$ !#
Eksempel:
Her kører jeg kommandoenummer 95 fra min historie:
$ !95
Outputtet viser resultatet af 'lscpu', som blev opført som kommandonummer 95 i min bash-historie. Denne kommando viser mine CPU- og operativsystemspecifikationer.
- Du kan køre din forrige kommando igen ved at bruge følgende kommando:
$ !!
Eksempel:
Her kan du se, at jeg kørte kommandoen 'arch'. Ved at køre ovennævnte kommando kan jeg køre kommandoen 'arch' igen for at se min CPU-arkitektur som følger:
- For at søge efter en kommando fra historikken og derefter køre den, skal du bruge følgende kommando:
$ ![nøgleord]
Eksempel:
Jeg vil bruge følgende kommando til at genkøre den sidste kommando med nøgleordet 'dconf' i den:
$ !dconf
Du kan bekræfte i det følgende billede igen, at det var den sidste dconf-kommando, jeg havde kørt.
Brug af argumenter fra tidligere kommandoer
Linux bash giver dig mulighed for at køre en ny kommando ved hjælp af argumenter fra den forrige kommando. Det er især nyttigt, når du vil undgå at indtaste lange eller komplicerede argumenter igen. Du kan bruge følgende kommando til dette formål:
Brug af det sidste argument fra den forrige kommando
$ [Kommando] !$
Variablen !$ har det sidste argument fra den forrige kommando gemt i det.
Eksempel:
I dette eksempel opretter jeg en fil med et langt navn.
Nano [langnavnOfaFil]
Jeg kopierer det derefter til et andet sted ved at undgå at skrive det lange navn igen som følger:
Cp !$ [destinationsmappe]
Du kan se, at jeg var i stand til at kopiere en fil uden at indtaste filnavnet igen ved hjælp af variablen !$
Brug af det første argument fra den forrige kommando
Nogle gange er kun det første argument fra den forrige kommando nyttigt i det aktuelle.
I så fald kan du bruge følgende kommando:
$ [kommando] !^
Eksempel:
I det følgende eksempel kørte jeg ping-kommandoen ved at angive værtsnavnet og en optælling som argumenter. Nu vil jeg bruge værtsnavnet (første argument) snarere end 2 (det sidste argument) i min nye kommando. Jeg vil bruge følgende kommando til dette formål:
$ ping !^
Brug af alle argumenter fra den forrige kommando
Du kan også bruge alle argumenter fra den forrige kommando ved at bruge følgende kommando:
$ !*
Brug af et argument fra en historik-kommando
Du kan også bruge kommandoer fra din historie ved at genbruge deres argumenter. Brug følgende kommando til dette formål:
$ [kommando] ![nøgleord]: #
Eksempel:
$ ekko !cp: 2
Denne kommando tager følgende parametre:
kommando: ekko
Nøgleord: cp
#: 2 (andet argument i kommandoen)
Følgende output viser det 2. argument for den sidste cp-kommando, jeg kørte:
Brug af alle argumenter fra en historik-kommando
Den følgende kommando gemmer alle argumenter fra den søgte historik-kommando og bruger dem i den aktuelle kommando:
$ kommando ![nøgleord]: *
Eksempel:
I den følgende kommando vil jeg udskrive alle argumenterne for den sidste cp-kommando ved hjælp af ekkokommandoen som følger:
$ ekko ![cp]: *
Ændring og kørsel af tidligere kommandoer
Hvis du indtastede en kommando forkert, eller du vil køre en kommando igen ved at ændre noget tekst i den; følgende er måde at gøre det på:
$ ^ [forrige tekst] ^ [ny tekst]
Eksempel:
Jeg skrev forkert kommandoen 'grep' som 'gep' og nu vil jeg køre kommandoen ved at rette teksten:
$ ^ gep ^ grep
Nu kan du se, at min rettede kommando kører korrekt som følger:
Rydning af historik
For at slette historien om din bash skal du bruge følgende kommando:
$ historie -c
Denne kommando rydder din historie og fjerner alt indhold fra filen ~ /.bash_history
I denne vejledning har vi lært, at mens udskrivning af hele historikindholdet måske ikke er så nyttigt, er det den rigtige spilskifter at optimere output via de kommandoer, vi lærte. Øvelse sammen med denne artikel giver dig mulighed for at se de nøjagtige kommandoer, du vil, genkøre og genbruge disse kommandoer og også bruge argumenter fra tidligere kørte kommandoer for at optimere nye.