Android

Historik-kommando i Linux (bash-historie)

Linux Commands for Beginners 15 - Bash History

Linux Commands for Beginners 15 - Bash History

Indholdsfortegnelse:

Anonim

, vil vi tale om history kommandoen, som giver dig mulighed for at se en liste over tidligere udførte kommandoer, søge gennem listen og manipulere historiefilen.

Brug af history og historieudvidelser

history er et shell, der er indbygget, og dets adfærd kan afvige lidt fra shell til shell. Vi vil dække Bash-indbyggede version af history .

I sin enkleste form viser history kommandoen, når der kaldes op uden mulighed eller argument, hele historielisten med linjenumre.

history

… 467 git push 468 tail -f var/logs/error 469 nano +22, 5 functions.sh 470 source project-env/bin/activate 471 history

Skrivning !n udfører den n-th kommando fra historielisten og !-n kommandoen n linjer tilbage. I det følgende eksempel udfører vi kommandoen på linje 467 :

!467

En anden måde at udføre en kommando er at bruge !word Ordudvidelse. word henviser til den seneste kommando, der begynder med 'ord'.

history viser typisk mange outputlinjer, der ikke passer på skærmen. For at se output en side ad gangen, rør det til et personsøgerprogram som more eller less kommando:

history | less

Hvis du vil vise de sidste n linjer, skal du vende nummeret som et argument til kommandoen. Hvis du f.eks. Kun vil se de sidste fem linjer fra historielisten, skriver du:

history -5

Brug pil up og pil down for at navigere i posterne på listen. Når den kommando, du har søgt efter, vises, skal du trykke på Enter at udføre den.

Type !! at udføre den forrige kommando:

!!

Dette er især nyttigt, når du glemmer at lægge en kommando med sudo , og i stedet for at indtaste kommandoen igen, kan du skrive:

sudo !!

!-1 er det samme som !! og udfører den sidste kommando fra historielisten, ! !-2 sekund til sidst osv.

^word1^word2^ udvidelse giver dig mulighed for at køre den sidste kommando igen og erstatte “word1” med “word2”. Hvis du ved en fejltagelse har skrevet sduo command stedet for sudo command , kan du gentage kommandoen ved hjælp af det rigtige ord med:

^sduo^sudo^

Brug grep kommandoen til at filtrere output. For eksempel at se alle kommandoer inklusive "nano", du kører:

history | grep nano

302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22, 5 functions.sh

Hvis du nu vil køre kommandoen nano setup.py blot skrive:

!356

En anden måde at søge igennem kommandohistorikken er ved at trykke på Ctrl-R . Anmodningen ændres til følgende, og du kan begynde at søge efter en tidligere udført kommando.

(reverse-i-search)`':

Skallen viser en matchende linje. Tryk på Ctrl-R igen for at gå til det næste matchede forslag.

Se i Bash-manualen for at få flere oplysninger om History Expansion, modifikatorer og designatorer.

Gemme historielisten

Ved start af en ny session læser Bash som standard historielisten fra .bash_history filen. Listen over kommandoer, der udføres i den aktuelle session, opbevares i hukommelsen og gemmes i filen, når sessionen er lukket.

Funktionen -a giver dig mulighed for at gemme den aktuelle .bash_history filen .bash_history :

history -a

Indstillingen -w skriver den komplette historieliste til historiefilen.

history -w

Rydning af historie

Med kommandoen history kan du rydde den komplette historieliste eller fjerne bestemte dele.

For at rydde historielisten skal du bruge indstillingen -c :

history -c

Hvis du vil slette en bestemt linje eller linjer mellem en start- og slutposition fra historielisten, skal du bruge indstillingen -d .

For eksempel at fjerne linjerne mellem 365 og 375 (inklusive disse linjer), skriver du:

history -d 365 375

Når der bruges et negativt heltal, tælles linjerne tilbage fra slutningen af ​​historielisten.

Kommandoerne ovenfor rydder historielisten, som opbevares i hukommelsen, men fjerner ikke poster fra .bash_history filen på disken. For at rydde filen skal du skrive historielisten til filen:

history -c history -w

Ændring af historiens opførsel

Opførelsen af ​​Bash-historikken kan defineres ved hjælp af flere forskellige miljøvariabler. Når du ændrer historiens opførsel, skal du indstille variablerne i ~/.bashrc eller enhver anden konfigurationsfil, der indlæses, når brugeren logger på.

Som standard holder Bash 500 linier på listen over kommandohistorik. HISTSIZE variablen giver dig mulighed for at ændre denne værdi. For at indstille den til 10000 skal du tilføje følgende linje til din .bashrc fil:

HISTSIZE=10000

HISTCONTROL variablen accepterer en kolon-adskilt liste over værdier, der definerer, hvordan kommandoerne gemmes i historielisten:

  • ignorespace - kommandoer, der starter med plads, gemmes ikke på historielisten. ignoredups - duplikatkommandoer gemmes ikke. ignoreboth - er en ignoreboth , der inkluderer både ignorespace og ignoredups .

HISTCONTROL=ignoreboth

Når variablen HISTTIMEFORMAT er indstillet, afhænger Bash af et tidsstempel for udførelsen af ​​kommandoen på hver linje.

Hvis du f.eks. Indstiller:

HISTTIMEFORMAT="%F %T: "

Historikken vises i følgende format:

413 2019-10-27 21:13:07: sudo nano /etc/hosts

Konklusion

history viser en liste over tidligere udførte kommandoer. For eksempel kan du bruge historikken til at se en lang kommando, du har brugt før, som du ikke kan huske.

historie terminal