schelp

Het beste uit de Linux Bash-geschiedenis halen

Het beste uit de Linux Bash-geschiedenis halen

Linux-opdrachtregel - de Terminal houdt, net als alle shells, een geschiedenis bij van opdrachten die in het verleden door een gebruiker zijn uitgevoerd. Deze geschiedenis is persistent en blijft in het geheugen, zelfs wanneer we ons systeem opnieuw opstarten. Deze opgeslagen commando's kunnen door ons op de meest optimale manier worden opgeroepen en opnieuw worden gebruikt om de geschiedenisopslagfunctie van de meeste shells efficiënt te gebruiken.

De Linux bash wordt geleverd met een zeer krachtige opdracht genaamd "geschiedenis". Deze opdracht is een ingebouwde bash-opdracht, die wordt gebruikt om de geschiedenisinformatie te extraheren over opdrachten die in alle voorgaande sessies door Linux-gebruikers zijn uitgevoerd. In deze tutorial zullen we je in staat stellen om het beste uit je shell-geschiedenis te halen door het juiste gebruik van de history-opdracht te leren. Linux slaat de opdrachtgeschiedenis voor een bepaalde gebruiker op in een bestand ~/.bash_history standaard.

We zullen de Terminal-toepassing van Linux gebruiken voor het uitvoeren van de opdrachten die in deze zelfstudie worden genoemd.

De volledige geschiedenis bekijken

Een gebruiker kan de volledige geschiedenis van zijn/haar shell-commando's bekijken vanuit het geschiedenisbestand dat exclusief voor die gebruiker is opgeslagen door het volgende eenvoudige commando te gebruiken:

$ geschiedenis

De geschiedenis wordt op het scherm afgedrukt in het volgende standaardformaat:

In de bovenstaande afbeelding ziet u een lijst met alle opdrachten met een nummer dat aan elk ervan is toegewezen. Het nummer 1 commando komt overeen met het eerste commando dat je hebt uitgevoerd en het laatst genummerde commando staat voor het laatste commando dat je hebt uitgevoerd.

Als je veel commando's hebt uitgevoerd sinds je de bash hebt gebruikt, zul je merken dat er honderden en zelfs duizenden van die commando's hier worden weergegeven. Om toegang te krijgen tot een paar relevante opdrachten, kunt u de resultaten filteren die worden weergegeven door de geschiedenisfunctie. U kunt ook de geschiedenisopdracht aanpassen om een ​​specifiek aantal opdrachten voor u weer te geven.

De historie-uitvoer filteren

Als u uw geschiedenisuitvoer wilt filteren op een specifiek trefwoord dat u mogelijk in de vorige opdrachten hebt gebruikt, kunt u de geschiedenisopdracht als volgt gebruiken:

$ geschiedenis | grep [zoekwoord]

Voorbeeld: In dit voorbeeld wil ik alleen de ping-commando's zien die ik ooit in de shell heb uitgevoerd. Daarom zal ik het volgende commando gebruiken:

$ geschiedenis | grep ping

U kunt zien dat mijn uitvoer nu alleen de opdrachten weergeeft, inclusief mijn zoekwoord "ping"Advertentie

Een aantal recente opdrachten bekijken

U kunt ook een bepaald aantal opdrachten bekijken, bijvoorbeeld:

OF

N Aantal recente opdrachten

U kunt een specifiek aantal recent uitgevoerde opdrachten bekijken via de volgende opdracht:

$ geschiedenis | staart -n

Voorbeeld:

In dit voorbeeld wil ik de laatste 3 commando's bekijken die ik heb uitgevoerd, met het trefwoord 'ping' :

$ geschiedenis | grep ping |staart -3

De uitvoer geeft alleen de 3 recente ping-opdrachten weer in plaats van de hele geschiedenis

N Aantal oudste opdrachten

U kunt een specifiek aantal van de oudste uitvoeringsopdrachten bekijken via de volgende opdracht:

$ geschiedenis | hoofd -n

Voorbeeld:

In dit voorbeeld wil ik de oudste 3 commando's bekijken die ik heb uitgevoerd, met het trefwoord 'ping' :

$ geschiedenis | grep ping |head -3

De uitvoer toont alleen de 3 oudste ping-opdrachten in plaats van de hele geschiedenis

Lijst met alle opdrachten met datum en tijdstempel

Als u uw opdrachtgeschiedenis samen met de datum en tijdstempel wilt bekijken, gebruikt u de volgende exportopdracht:

$ export HISTTIMEFORMAT="%F, %T"

Als u nu de geschiedenis wilt bekijken, voert u gewoon de geschiedenisopdracht uit om de uitvoer in het volgende formaat te zien:

Houd er rekening mee dat deze wijziging in formaat tijdelijk is en zal worden hersteld naar de vorige standaard wanneer u de sessie sluit.

Navigeren door opdrachten uit de geschiedenis

Terwijl u zich op de opdrachtregel bevindt, kunt u door eerder uitgevoerde opdrachten navigeren en ook enkele recent gebruikte opdrachten oproepen door een trefwoord op te geven.

Door opdrachten scrollen

U kunt de volgende toetsenbordbedieningen gebruiken om door geschiedenisopdrachten te navigeren:

Pijl omhoog/Ctrl+PMet deze bedieningselementen kunt u de vorige opdracht weergeven die u hebt gebruikt. U kunt meerdere keren op deze bedieningselementen drukken om terug te gaan naar een specifieke opdracht in de geschiedenis.
Pijl omlaag/Ctrl+NMet deze bedieningselementen kunt u de volgende opdracht weergeven die u hebt gebruikt. Je kunt meerdere keren op deze bedieningselementen drukken om verder te gaan naar een specifieke opdracht in de geschiedenis.
Alt+RAls u een commando, dat u uit de geschiedenis hebt gehaald, op een huidige regel bewerkt, kunt u dit besturingselement gebruiken om het terug te zetten naar het oorspronkelijke commando.

Opdrachten oproepen

U kunt een specifieke opdracht uit de geschiedenis oproepen, uitvoeren of ervoor kiezen om deze niet uit te voeren, met behulp van de volgende bedieningselementen:

Ctrl+RMet dit besturingselement kunt u een opdracht uit de geschiedenis oproepen door een zoekreeks op te geven.
Ctrl+OMet dit besturingselement kunt u de opdracht uitvoeren die u hebt opgeroepen met Ctrl+R
Ctrl+GMet dit besturingselement kunt u de geschiedenis afsluiten zonder de opdracht uit te voeren die u hebt opgeroepen met Ctrl+R

Voorbeeld:

In dit voorbeeld heb ik op ctrl+R gedrukt en vervolgens de zoekreeks 'ar' opgegeven. De geschiedenis toonde het commando 'arch'.

Toen ik het commando 'arch' uitvoerde door op ctrl+O te drukken, werd de CPU-architectuur van mijn systeem weergegeven:

De Bash-geschiedenis gebruiken

De echte magie van de bash-geschiedenis is door verschillende opdrachten te gebruiken en de geschiedenisopdracht zelf aan te passen om optimaal gebruik te maken van de geschiedenisfunctie:

Opdrachten uitvoeren vanuit de geschiedenis

$ !#

Voorbeeld:

Hier voer ik het commando nummer 95 uit mijn geschiedenis uit:

$ !95

De uitvoer geeft het resultaat weer van 'lscpu' dat werd vermeld als opdrachtnummer 95 in mijn bash-geschiedenis. Deze opdracht geeft de specificaties van mijn CPU en besturingssysteem weer.

$ !!

Voorbeeld:

Hier kun je zien dat ik het commando 'arch' heb uitgevoerd. Door de bovengenoemde opdracht uit te voeren, kan ik de opdracht 'arch' opnieuw uitvoeren om mijn CPU-architectuur als volgt te bekijken:

$ ![zoekwoord]

Voorbeeld:

Ik zal de volgende opdracht gebruiken om de laatste opdracht met het trefwoord 'dconf' erin opnieuw uit te voeren:

$ !dconf

U kunt in de volgende afbeelding opnieuw bevestigen dat dit de laatste dconf-opdracht was die ik had uitgevoerd.

Argumenten uit eerdere opdrachten gebruiken

Linux bash stelt je in staat om een ​​nieuwe opdracht uit te voeren met behulp van argumenten uit de vorige opdracht. Het is vooral handig als u lange of ingewikkelde argumenten niet opnieuw wilt typen. U kunt hiervoor het volgende commando gebruiken:

Het laatste argument van het vorige commando gebruiken

$ [Opdracht] !$

de variabele !$ heeft het laatste argument van het vorige commando erin opgeslagen.

Voorbeeld:

In dit voorbeeld maak ik een bestand met een lange naam.

Nano [lange naamOfaFile]

Ik zal het dan naar een andere locatie kopiëren door te voorkomen dat ik de lange naam als volgt opnieuw typ:

Cp !$ [bestemmingsmap]

Je kunt zien dat ik een bestand kon kopiëren zonder de bestandsnaam opnieuw te typen door de variabele te gebruiken !$

Het eerste argument van het vorige commando gebruiken

Soms is alleen het eerste argument van het vorige commando nuttig in het huidige.

In dat geval kunt u het volgende commando gebruiken:

$ [opdracht] !^

Voorbeeld:

In het volgende voorbeeld heb ik de ping-opdracht uitgevoerd door de hostnaam en een telling als argumenten op te geven. Nu wil ik de hostnaam (eerste argument) gebruiken in plaats van 2 (het laatste argument) in mijn nieuwe opdracht. Ik zal hiervoor het volgende commando gebruiken:

$ ping !^

Alle argumenten van de vorige opdracht gebruiken

U kunt ook alle argumenten uit de vorige opdracht gebruiken door de volgende opdracht te gebruiken:

$ !*

Eén argument uit een geschiedenisopdracht gebruiken

U kunt ook opdrachten uit uw geschiedenis gebruiken door hun argumenten opnieuw te gebruiken. Gebruik hiervoor het volgende commando:

$ [opdracht] ![zoekwoord]:#

Voorbeeld:

$ echo !cp:2

Deze opdracht heeft de volgende parameters:

commando: echo

Trefwoord:cp

#:2(tweede argument van de opdracht)

De volgende uitvoer toont het 2e argument van het laatste cp-commando dat ik heb uitgevoerd:

Alle argumenten van een geschiedeniscommando gebruiken

De volgende opdracht slaat alle argumenten van de opdracht in de doorzochte geschiedenis op en gebruikt ze in de huidige opdracht:

$ commando ![zoekwoord]:*

Voorbeeld:

In de volgende opdracht zal ik alle argumenten van de laatste cp-opdracht afdrukken door de echo-opdracht als volgt te gebruiken:

$ echo ![cp]:*

Eerdere opdrachten wijzigen en uitvoeren

Als je een commando verkeerd hebt getypt of je wilt een commando opnieuw uitvoeren door er wat tekst in te veranderen; volgende is de manier om dit te doen:

$ ^[vorige tekst]^[nieuwe tekst]

Voorbeeld:

Ik heb het commando 'grep' verkeerd getypt als 'gep' en nu wil ik het commando uitvoeren door de tekst te corrigeren:

$ ^gep^grep

Nu kunt u zien dat mijn gecorrigeerde opdracht als volgt correct wordt uitgevoerd:

Geschiedenis wissen

Gebruik de volgende opdracht om de geschiedenis van je bash te wissen:

$ geschiedenis -c

Met deze opdracht wordt uw geschiedenis gewist en wordt alle inhoud uit het bestand ~/ verwijderd.bash_history

In deze zelfstudie hebben we geleerd dat hoewel het afdrukken van de volledige geschiedenisinhoud misschien niet zo nuttig is, het optimaliseren van de uitvoer via de opdrachten die we hebben geleerd de echte game-wisselaar is. Door samen met dit artikel te oefenen, kun je de exacte commando's bekijken die je wilt, deze commando's opnieuw uitvoeren en opnieuw gebruiken, en ook argumenten gebruiken van eerder uitgevoerde commando's om nieuwe te optimaliseren.

AppyMouse trackpad en muisaanwijzer op het scherm voor Windows-tablets
Tabletgebruikers missen vaak de muisaanwijzer, vooral wanneer ze gewend zijn om de laptop te gebruiken. Het touchscreen Smartphones en tablets hebben ...
Middelste muisknop werkt niet in Windows 10
De middelste muis knop helpt u door lange webpagina's en schermen met veel gegevens te bladeren. Als dat stopt, zul je uiteindelijk het toetsenbord ge...
Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...