Slik bruker du historiekommandoen på Linux

En terminalmelding på en bærbar Linux-datamaskin.

Fatmawati Achmad Zaenuri/Shutterstock



Linuxs skall lagrer en historikk over kommandoene du kjører, og du kan søke i den for å gjenta kommandoer du har kjørt tidligere. Når du forstår kommandoen Linux historie og hvordan du bruker den, kan den øke produktiviteten din betydelig.

Manipulere historie

Som George Santayana sa berømt , De som ikke kan huske fortiden, er dømt til å gjenta den. Dessverre, på Linux, hvis du ikke kan huske fortiden, kan du ikke gjenta den, selv om du vil.





10 grunnleggende Linux-kommandoer for nybegynnere I SLEKT 10 grunnleggende Linux-kommandoer for nybegynnere

Det er da Linux |_+_| kommando kommer godt med. Den lar deg se gjennom og gjenta dine tidligere kommandoer. Dette er ikke ment å bare oppmuntre til latskap eller spare tid – det er også en effektivitetsfaktor (og nøyaktighet). Jo lengre og mer komplisert en kommando er, desto vanskeligere er det å huske og skrive uten å gjøre en feil. Det er to typer feil: en som hindrer kommandoen i å fungere, og en som lar kommandoen fungere, men får den til å gjøre noe uventet.

Den |_+_| kommando eliminerer disse problemene. Som de fleste Linux-kommandoer, det er mer i det enn du kanskje tror . Men hvis du lærer hvordan du bruker |_+_| kommando, kan det forbedre bruken din av Linux-kommandolinjen, hver eneste dag. Det er en god investering av tiden din. Det er langt bedre måter å bruke |_+_| kommando enn bare ved å trykke på pil opp gjentatte ganger .



Historiekommandoen

I sin enkleste form kan du bruke |_+_| kommando ved bare å skrive navnet:

history

Annonse

Listen over tidligere brukte kommandoer skrives deretter til terminalvinduet.



Kommandoene er nummerert, med de sist brukte (de med høyest tall) på slutten av listen.

For å se et visst antall kommandoer, kan du sende et tall til |_+_| på kommandolinjen. For eksempel, for å se de siste 10 kommandoene du har brukt, skriv inn følgende:

history

Du kan oppnå samme resultat hvis du rør |_+_| gjennom |_+_| kommando . For å gjøre det, skriv inn følgende:

history

I SLEKT: Hvordan bruke Pipes på Linux

Gjenta kommandoer

Hvis du vil gjenbruke en kommando fra historielisten, skriv inn et utropstegn (!) og nummeret på kommandoen uten mellomrom.

For å gjenta kommando nummer 37, skriver du for eksempel denne kommandoen:

history

Annonse

For å gjenta den siste kommandoen, skriv inn to utropstegn, igjen, uten mellomrom:

history

Dette kan være nyttig når du gir en kommando og glemmer å bruke |_+_| . Skriv inn |_+_|, ett mellomrom, de doble utropstegnene, og trykk deretter Enter.

For det følgende eksempelet skrev vi en kommando som krever |_+_|. I stedet for å skrive inn hele linjen på nytt, kan vi lagre en haug med tastetrykk og bare skrive |_+_|, som vist nedenfor:

history history

Så du kan skrive inn det tilsvarende tallet fra listen for å gjenta en kommando eller bruke de doble utropstegnene for å gjenta den siste kommandoen du brukte. Men hva om du vil gjenta den femte eller åttende kommandoen?

Du kan bruke ett utropstegn, en bindestrek (-) og nummeret på en tidligere kommando (igjen uten mellomrom) for å gjenta den.

For å gjenta den 13. forrige kommandoen, skriver du følgende:

tail

Søker etter kommandoer etter streng

For å gjenta den siste kommandoen som starter med en bestemt streng, kan du skrive et utropstegn, og deretter strengen uten mellomrom, og deretter trykke Enter.

Annonse

For å gjenta den siste kommandoen som startet med |_+_|, skriver du for eksempel denne kommandoen:

sudo

Det er imidlertid et element av fare i dette. Hvis den siste kommandoen som startet med |_+_| ikke er den du tror det er, starter du feil kommando.

For å gi et sikkerhetsnett kan du imidlertid bruke |_+_| (print) modifikator, som vist nedenfor:

sudo

Dette instruerer |_+_| for å skrive ut kommandoen til terminalvinduet, i stedet for å utføre den. Dette lar deg se kommandoen før du bruker den. Hvis det er kommandoen du ønsker, trykker du på pil opp og trykker Enter for å bruke den.

Hvis du vil finne en kommando som inneholder en bestemt streng, kan du bruke et utropstegn og spørsmålstegn.

Annonse

For å finne og utføre den første samsvarende kommandoen som inneholder ordaliasene, skriver du for eksempel denne kommandoen:

sudo

Dette vil finne enhver kommando som inneholder strengaliasene, uavhengig av hvor den vises i strengen.

Interaktivt søk

Et interaktivt søk lar deg hoppe gjennom en liste over samsvarende kommandoer og gjenta den du ønsker.

Bare trykk Ctrl+r for å starte søket.

Et terminalvindu etter

Mens du skriver inn søketråden, vises den første samsvarende kommandoen. Bokstavene du skriver vises mellom tilbaketikken (`) og apostrofen ('). De samsvarende kommandoene oppdateres etter hvert som du skriver inn hver bokstav.

TIL

Hver gang du trykker Ctrl+r, søker du bakover etter neste samsvarende kommando, som vises i terminalvinduet.

Når du trykker Enter, vil den viste kommandoen utføres.

For å redigere en kommando før du utfører den, trykk enten venstre eller høyre piltast.

Annonse

Kommandoen vises på kommandolinjen, og du kan redigere den.

En kommando på kommandolinjen med redigering aktivert.

Du kan bruke andre Linux-verktøy for å søke i historikklisten. For eksempel å pipe utdata fra |_+_| inn i |_+_| og søk etter kommandoer som inneholder strengen aliaser du kan bruke denne kommandoen:

sudo !!

Endre den siste kommandoen

Hvis du trenger å fikse en skrivefeil, og deretter gjenta kommandoen, kan du bruke merket (^) for å endre den. Dette er et flott triks å ha i ermet når du staver feil eller ønsker å kjøre en på nytt med et annet kommandolinjealternativ eller parameter.

For å bruke den, skriv (uten mellomrom) en indikator, teksten du vil erstatte, en annen indikator, teksten du vil erstatte den med, en annen indikator, og trykk deretter Enter.

Anta for eksempel at du skriver inn følgende kommando, ved et uhell skriver shhd i stedet for sshd:

sudo

Du kan enkelt rette dette ved å skrive inn følgende:

sudo

Kommandoen utføres med shhd korrigert til sshd.

Slette kommandoer fra historikklisten

Du kan også slette kommandoer fra historikklisten med |_+_| (slett) alternativ. Det er ingen grunn til å beholde den feilstavede kommandoen din i historielisten.

Annonse

Du kan bruke |_+_| for å finne den, send nummeret til |_+_| med |_+_| mulighet for å slette den, og søk deretter på nytt for å sikre at den er borte:

:p history history

Du kan også sende en rekke kommandoer til |_+_| alternativ. For å slette alle listeoppføringer fra 22 til 32 (inklusive), skriv inn denne kommandoen:

grep

For å slette bare de siste fem kommandoene, kan du skrive inn et negativt tall, slik:

-d

Manuell oppdatering av historikkfilen

Når du logger på eller åpner en terminaløkt, leses historikklisten inn fra historikkfilen. I Bash er standard historikkfil |_+_|.

Eventuelle endringer du gjør i den nåværende terminalvindusøkten blir bare skrevet til historiefilen når du lukker terminalvinduet eller logger ut.

Anta at du vil åpne et annet terminalvindu for å få tilgang til hele historikklisten, inkludert kommandoer du skrev inn i det første terminalvinduet. Den |_+_| (alle) alternativet lar deg gjøre dette i det første terminalvinduet før du åpner det andre.

For å bruke den, skriv inn følgende:

grep

Kommandoene skrives stille til historiefilen.

Annonse

Hvis du vil skrive alle endringer i historikklisten til historikkfilen (hvis du for eksempel har slettet noen gamle kommandoer), kan du bruke |_+_| (skrive) alternativ, slik:

history

Sletter historikklisten

For å fjerne alle kommandoer fra historikklisten, kan du bruke |_+_| (klart) alternativ, som følger:

-d

Hvis du i tillegg vil tvinge disse endringene til historikkfilen, bruk |_+_| alternativ, slik:

-d

Sikkerhet og historikkfilen

Hvis du bruker applikasjoner som krever at du skriver inn sensitiv informasjon (som passord) på kommandolinjen, husk at dette også blir lagret i historikkfilen. Hvis du ikke vil at viss informasjon skal lagres, kan du bruke følgende kommandostruktur for å slette den fra historielisten umiddelbart:

.bash_history -a

Denne strukturen inkluderer to kommandoer atskilt med semikolon (;). La oss bryte ned dette:

    spesial-app: Navnet på programmet vi bruker. mitt-hemmelige-passord: Det hemmelige passordet vi må oppgi for applikasjonen på kommandolinjen. Dette er slutten på kommando én. historie -d: I kommando to påkaller vi |_+_| (slett) alternativet for |_+_|. Det vi skal slette kommer i neste del av kommandoen. $(historie 1): Dette bruker en kommandoerstatning. Den delen av kommandoen som finnes i |_+_| utføres i et subshell. Resultatet av den utførelsen legges ut som tekst i den opprinnelige kommandoen. Den |_+_| kommando returnerer forrige kommando. Så du kan tenke på den andre kommandoen som historie -d siste kommando her.

Du kan bruke |_+_| kommandoen for å sikre at kommandoen som inneholder passordet ble fjernet fra historikklisten.

Annonse

Det er en enda enklere måte å gjøre dette på. Fordi Bash ignorerer linjer som begynner med et mellomrom som standard, inkluderer du bare et mellomrom på begynnelsen av linjen, som følger:

-w -c

Kommandoen med passordet legges ikke til i historikklisten. Grunnen til at dette trikset fungerer er inneholdt i |_+_| fil.

.bashrc-filen

Den |_+_| filen kjøres hver gang du logger på eller åpner et terminalvindu. Den inneholder også noen verdier som kontrollerer oppførselen til |_+_| kommando. La oss rediger denne filen med |_+_| .

Skriv inn følgende:

-w

Nær toppen av filen ser du to oppføringer:

  • -d : Maksimalt antall oppføringer historielisten kan inneholde.
  • history : Grensen for antall linjer en historiefil kan inneholde.

Disse to verdiene samhandler på følgende måter:

  • Når du logger på eller starter en terminalvindusøkt, fylles historikklisten fra |_+_| fil.
  • Når du lukker et terminalvindu, angis maksimalt antall kommandoer i |_+_| lagres i |_+_| fil.
  • Hvis |_+_| shell-alternativet er aktivert, er kommandoene lagt til |_+_|. Hvis |_+_| er ikke satt, |_+_| er overskrevet.
  • Etter å ha lagret kommandoene fra historielisten til |_+_| , er historikkfilen avkortet slik at den ikke inneholder mer enn |_+_| linjer.

Også nær toppen av filen ser du en oppføring for |_+_| verdi.

De

Du kan angi denne verdien til å gjøre ett av følgende:

  • |_+_|Linjer som begynner med et mellomrom legges ikke til i historikklisten.
  • |_+_|Dupliserte kommandoer legges ikke til i historiefilen.
  • |_+_|Aktiverer begge de ovennevnte.
Annonse

Du kan også liste spesifikke kommandoer du ikke vil legge til i historikklisten din. Skillet disse med et kolon (:) og satte dem i anførselstegn (...).

Du vil følge denne strukturen for å legge til en linje i din |_+_| fil, og erstatte kommandoene du vil ignorere:

$()

An

Bruke tidsstempler

Hvis du vil legge til tidsstempler til historikklisten, kan du bruke |_+_| innstilling. For å gjøre det, legger du bare til en linje som følgende til din |_+_| fil:

history 1

Merk at det er et mellomrom før de avsluttende anførselstegnene. Dette forhindrer tidsstemplet fra å slå opp til kommandoene i kommandolisten.

An

Nå, når du kjører historiekommandoen, ser du dato- og tidsstempler. Merk at alle kommandoer som var i historikklisten før du la til tidsstemplene vil bli tidsstemplet med dato og klokkeslett for den første kommandoen som mottar et tidsstempel. I dette eksemplet vist nedenfor var dette kommando 118.

Det er et veldig langdrygt tidsstempel. Du kan imidlertid bruke andre tokens enn |_+_| å foredle det. De andre tokenene du kan bruke er:

    history 5:Dag .bashrc:Måned .bashrc:År history:Time gedit:Minutter HISTSIZE :Sekunder HISTFILESIZE:Full dato (år-måned-dato-format) .bash_history:Tid (time:minutter:sekunder-format)
  • HISTSIZE : Fullstendig dato- og tidsstempel (formater dag-dato-måned-år og time:minutter:sekunder)

La oss eksperimentere og bruke noen forskjellige tokens:

.bash_history

Eksporten HISTTIMEFORMAT=

Utdataene bruker dag, måned og klokkeslett.

Annonse

Hvis vi fjerner dagen og måneden, vil den bare vise klokkeslettet.

Eventuelle endringer du gjør i |_+_| bruke seg på hele historielisten. Dette er mulig fordi tiden for hver kommando er lagret som antall sekunder fra Unix-epoken . |_+_|direktivet spesifiserer ganske enkelt formatet som brukes til å gjengi det antallet sekunder til en menneskelig lesbar stil, for eksempel:

histappend

De

Vår produksjon er nå mer håndterlig.

Du kan også bruke |_+_| kommando til revisjon. Noen ganger gjennomgang kommandoer du har brukt tidligere kan hjelpe deg med å identifisere hva som kan ha forårsaket et problem.

Akkurat som du kan i livet, på Linux, kan du bruke |_+_| befaling om å gjenoppleve de gode tidene og lære av de dårlige.

I SLEKT: 37 Viktige Linux-kommandoer du bør kjenne til

Linux-kommandoer
Filer tjære · pv · katt · tac · chmod · grep · diff · sed · Med · Mann · pushd · popd · fsck · testdisk · seq · fd · pandoc · CD · $PATH · awk · bli med · jq · brette · unik · journalctl · hale · stat · ls · fstab · kastet ut · mindre · chgrp · chown · rev · se · strenger · type · endre navn · glidelås · pakke opp · montere · umount · installere · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · fra · ln · lapp · konvertere · rclone · makulere · SRM
Prosesser alias · skjerm · topp · hyggelig · renice · framgang · strace · system · tmux · chsh · historie · · parti · gratis · hvilken · dmesg · brukermod · ps · chroot · xargs · tty · rosa · lsof · vmstat · pause · vegg · ja · drepe · søvn · sudo · hans · tid · gruppeadd · brukermod · grupper · lshw · skru av · starte på nytt · Stoppe · strøm av · passwd · lscpu · crontab · Dato · bg · fg
Nettverk netstat · ping · traceroute · ip · ss · hvem er · fail2ban · bmon · du · finger · nmap · ftp · krølle · wget · hvem · hvem er jeg · I · iptables · ssh-keygen · ufw

I SLEKT: Beste Linux bærbare datamaskiner for utviklere og entusiaster

LES NESTE Profilbilde for Dave McKay Dave McKay
Dave McKay brukte først datamaskiner da stanset papirtape var på moten, og han har programmert siden. Etter over 30 år i IT-bransjen er han nå teknologijournalist på heltid. I løpet av sin karriere har han jobbet som frilansprogrammerer, leder for et internasjonalt programvareutviklingsteam, prosjektleder for IT-tjenester og sist som databeskyttelsesansvarlig. Hans forfatterskap har blitt publisert av howtogeek.com, cloudsavvyit.com, itenterpriser.com og opensource.com. Dave er en Linux-evangelist og forkjemper for åpen kildekode.
Les hele bio

Interessante Artikler