Android

Geschiedenisopdracht in Linux (bash-geschiedenis)

Linux Commands for Beginners 15 - Bash History

Linux Commands for Beginners 15 - Bash History

Inhoudsopgave:

Anonim

, zullen we het hebben over de history , waarmee u een lijst met eerder uitgevoerde opdrachten kunt bekijken, door de lijst kunt zoeken en het geschiedenisbestand kunt manipuleren.

De history en geschiedenisuitbreidingen gebruiken

history is een shell ingebouwd en het gedrag kan enigszins verschillen van shell tot shell. We zullen de Bash ingebouwde versie van de history .

In zijn eenvoudigste vorm, wanneer het wordt opgeroepen zonder enige optie of argument, geeft de history de hele geschiedenislijst met regelnummers weer.

history

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

Als u !n typt, wordt de n-de opdracht uit de geschiedenislijst uitgevoerd en !-n de opdracht n komt terug. In het volgende voorbeeld voeren we de opdracht op regel 467 :

!467

Een andere manier om een ​​opdracht uit te voeren is door !word te gebruiken. word verwijst naar de meest recente opdracht die begint met 'word'.

Doorgaans worden in de history veel uitvoerregels weergegeven die niet op het scherm passen. Als u de uitvoer pagina voor pagina wilt bekijken, stuurt u deze naar een semafoonprogramma zoals een more of less opdracht:

history | less

Om de laatste n regels weer te geven, geeft u het nummer als argument door aan de opdracht. Als u bijvoorbeeld alleen de laatste vijf regels uit de geschiedenislijst wilt bekijken, typt u:

history -5

Gebruik de pijltoetsen up en down om door de items in de lijst te navigeren. Wanneer het commando waarnaar u hebt gezocht wordt weergegeven, drukt u op Enter om het uit te voeren.

Type !! om de vorige opdracht uit te voeren:

!!

Dit is vooral handig als je een opdracht vergeet uit te voeren met sudo , en in plaats van de opdracht opnieuw te typen, kun je het volgende typen:

sudo !!

!-1 is hetzelfde als !! en voert de laatste opdracht uit de geschiedenislijst uit, ! !-2 voorlaatste, enzovoort.

^word1^word2^ uitbreiding laat je de laatste opdracht opnieuw uitvoeren door “word1” te vervangen door “word2”. Als je per ongeluk het sduo command hebt ingevoerd in plaats van het sudo command kun je het commando herhalen met het juiste woord met:

^sduo^sudo^

Gebruik de opdracht grep om de uitvoer te filteren. Als u bijvoorbeeld alle opdrachten wilt bekijken, inclusief 'nano', zou u het volgende uitvoeren:

history | grep nano

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

Als u nu de opdracht nano setup.py opnieuw wilt uitvoeren, nano setup.py eenvoudig:

!356

Een andere manier om in de opdrachtgeschiedenis te zoeken, is door op Ctrl-R drukken. De prompt verandert in het volgende en u kunt beginnen met zoeken naar een eerder uitgevoerde opdracht.

(reverse-i-search)`':

De shell geeft een overeenkomende lijn weer. Druk nogmaals op Ctrl-R om naar de volgende overeenkomende suggestie te gaan.

Raadpleeg de Bash-handleiding voor meer informatie over geschiedenisuitbreiding, modificatoren en aanwijzers.

De geschiedenislijst opslaan

Bij het starten van een nieuwe sessie leest Bash standaard de geschiedenislijst uit het .bash_history bestand. De lijst met opdrachten die in de huidige sessie worden uitgevoerd, wordt in het geheugen bewaard en in het bestand opgeslagen wanneer de sessie wordt gesloten.

Met de optie -a kunt u de huidige lijst met .bash_history opslaan in het .bash_history bestand:

history -a

De optie -w schrijft de volledige geschiedenislijst naar het geschiedenisbestand.

history -w

Geschiedenis wissen

Met de history kunt u de volledige geschiedenislijst wissen of bepaalde onderdelen verwijderen.

Gebruik de optie -c om de geschiedenislijst te wissen:

history -c

Gebruik de optie -d om een ​​specifieke regel of lijnen tussen een begin- en eindpositie uit de geschiedenislijst te verwijderen.

Als u bijvoorbeeld de lijnen tussen 365 en 375 (inclusief die lijnen) wilt verwijderen, typt u:

history -d 365 375

Wanneer een negatief geheel getal wordt gebruikt, worden de lijnen teruggeteld vanaf het einde van de geschiedenislijst.

De bovenstaande opdrachten wissen de geschiedenislijst, die in het geheugen wordt bewaard, maar verwijdert geen vermeldingen uit het .bash_history bestand op de schijf. Om het bestand te wissen, moet u de geschiedenislijst naar het bestand schrijven:

history -c history -w

Geschiedenisgedrag wijzigen

Het gedrag van de Bash-geschiedenis kan worden gedefinieerd met behulp van verschillende omgevingsvariabelen. Wanneer u het geschiedenisgedrag wijzigt, stelt u de variabelen in ~/.bashrc of een ander configuratiebestand in dat wordt geladen wanneer de gebruiker zich aanmeldt.

Standaard houdt Bash 500 regels in de lijst met opdrachtgeschiedenis. Met de variabele HISTSIZE kunt u deze waarde wijzigen. Om deze in te stellen op 10000, voeg je de volgende regel toe aan je .bashrc bestand:

HISTSIZE=10000

De variabele HISTCONTROL accepteert een dubbele punt gescheiden lijst met waarden die definiëren hoe de opdrachten worden opgeslagen in de geschiedenislijst:

  • ignorespace - commando's die beginnen met spatie worden niet opgeslagen in de geschiedenislijst. ignoredups - dubbele opdrachten worden niet opgeslagen. ignoreboth - is een afkorting, inclusief zowel ignorespace als ignoredups .

HISTCONTROL=ignoreboth

Wanneer de variabele HISTTIMEFORMAT is ingesteld, staat Bash voor elke opdracht een tijdstempel van uitvoering voor.

Als u bijvoorbeeld instelt:

HISTTIMEFORMAT="%F %T: "

De geschiedenis wordt weergegeven in de volgende indeling:

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

Conclusie

De history geeft een lijst met eerder uitgevoerde opdrachten weer. U kunt bijvoorbeeld de geschiedenis gebruiken om een ​​lange opdracht te bekijken die u eerder hebt gebruikt en die u zich niet kunt herinneren.

geschiedenis terminal