Linux geschiedenis commando tutorial voor beginners (8 voorbeelden)

Als je voor je werk gereedschappen en scripts op de Linux commandoregel uitvoert, zijn er vast heel wat commando’s die je elke dag uitvoert. Wie nieuw is met de commandoregel zou moeten weten dat er een hulpmiddel bestaat – geschiedenis genoemd – dat je een lijst geeft van commando’s die je eerder hebt uitgevoerd.

In deze zelfstudie bespreken we de basisprincipes van het commando geschiedenis aan de hand van enkele gemakkelijk te begrijpen voorbeelden. Maar voor we dat doen, is het de moeite waard te vermelden dat alle voorbeelden hier getest zijn op een Ubuntu 16.04LTS machine.

Linux geschiedenis commando

Als je weet hoe je je commandoregel geschiedenis effectief kunt gebruiken, kun je dagelijks veel tijd besparen. Hieronder volgen enkele vraag-antwoord-achtige voorbeelden die je een goed idee moeten geven over hoe je het geschiedenis commando in je voordeel kunt gebruiken.

Q1. Hoe werkt het commando geschiedenis?

Het basisgebruik is eenvoudig – voer gewoon het ‘history’ commando uit.

history

Hoe werkt het geschiedenis commando

Zo zie je dat je eerder uitgevoerde commando’s in de uitvoer worden getoond. Merk op dat ik het‘more‘ commando gebruikt heb om ervoor te zorgen dat de uitvoer-weergave op de eerste bladzijde wordt gepauzeerd (de volledige uitvoer van ‘history’ is meestal erg lang).

Q2. Hoe kun je geschiedenis ook datum en tijd laten weergeven?

Als je wilt dat het geschiedenis commando voor elk commando de datum en tijd van uitvoering toont, kun je dat doen door de variabele HISTTIMEFORMAT op de volgende manier uit te voeren:

export HISTTIMEFORMAT="%F %T: "

Dat is het. Als je nu het ‘history’ commando uitvoert, zie je de datum en tijd info in de uitvoer.

Hoe kun je geschiedenis ook datum en tijd laten tonen

Voor het geval je ziet dat datum en tijd voor alle commando’s hetzelfde zijn, moet de volgendeuitleg het duidelijk maken:

If you set the HISTTIMEFORMAT in bash your new entries get stored in the history file with a 
timestamp, older commands that don't have a timestamp (those before you ever set HISTTIMEFORMAT
will display one and the same date-time-stamp (I assume the one from the first entry found with a
real timestamp).

This problem should solve itself after your complete history has been updated in a few days.

You can look in ~/.bash_history to see what is the first line that has a date-time-stamp.
Those are lines starting with a # followed by a (currently) 10 digit number.

Q3. Hoe laat ik geschiedenis stoppen met het opnemen van commando’s?

Als zich een situatie voordoet waarin je niet wilt dat het systeem de geschiedenis van je commando’s opslaat, dan kun je dat doen met de variabele HISTSIZE. Exporteer hem gewoon met nul als waarde, en je bent goed.

Zie het volgende voorbeeld:

Hoe laat je geschiedenis stoppen met het opnemen van commando's

Zo zie je dat het nu uitvoeren van het ‘history’ commando geen resultaat opleverde.

Merk op dat er ook een HISTFILESIZE variabele is.Hier zie je het verschil tussen de twee:

HISTSIZE is the number of lines or commands that are stored in memory in a history list while your 
bash session is ongoing.

HISTFILESIZE is the number of lines or commands that (a) are allowed in the history file at startup
time of a session, and (b) are stored in the history file at the end of your bash session for use in
future sessions.

Q4. Hoe kan ik ervoor zorgen dat geschiedenis geen enkel commando opneemt?

Dat kan door de variabele HISTCONTROL op ‘ignorespace’ te zetten. Dit kun je op de volgende manier doen:

export HISTCONTROL=ignorespace

Telkens als je nu een commando uitvoert waarvan je niet wilt dat het in de geschiedenis wordt opgenomen, voer je het gewoon uit met een voorloopspatie.

Q5. Hoe kun je snel in de geschiedenis zoeken?

Natuurlijk kun je hetgrep commando gebruiken om naar specifieke trefwoorden of commando’s te zoeken in de uitvoer die door het geschiedenis commando wordt geproduceerd. Er bestaat echter ook een veel snellere methode: reverse-i-search.

Het is vrij eenvoudig – alles wat je hoeft te doen is CTRL+R in te drukken terwijl je op de commandolijn bent, en je ziet je prompt veranderen in iets als dit:

Typ nu het trefwoord dat je wilt zoeken, en je ziet rechts bijpassende suggesties uit de geschiedenis. Ik typte bijvoorbeeld ‘man’ (zonder aanhalingstekens), en het eerste resultaat dat ik kreeg was ‘man apropos’.

Als dit niet is wat je zoekt, kun je het volgende passende resultaat krijgen door nogmaals op CTRL+R te drukken. Dus in mijn geval was het volgende resultaat dat ik kreeg ‘man find search’.

Op deze manier kun je verder zoeken. Als je het gewenste resultaat hebt, druk je op de rechter pijltjestoets en je krijgt het hele commando op je prompt.

Je kunt dit commando nu dus uitvoeren, of gebruiken op welke manier je maar wilt.

Q6. Hoe voer je het vorige commando uit?

Er zijn twee eenvoudige manieren waarop je het laatst uitgevoerde commando kunt uitvoeren: druk op CTRL+P, of voer het volgende commando uit:

!!

Geloof je (vooral de tweede manier) niet? Probeer het maar eens.

In het geval dat het nodig is om snel het op een na laatste commando uit te voeren, kun je dat op de volgende manier doen:

!-1

Zo verder enzovoort.

Q7. Hoe kan ik geschiedenis dubbele vermeldingen in de uitvoer laten negeren?

Dit kun je doen door de HISTCONTROL variabele op ‘ignoreboth’ en ‘erasedups’ te zetten. Je kunt dat op de volgende manier doen:

echo HISTCONTROL=ignoreboth:erasedups

Als je nu het geschiedenis commando uitvoert, zal de uitvoer geen duplicaten bevatten.

Q8. Hoe geschiedenis wissen?

Wil je de bestaande geschiedenis wissen, zodat je opnieuw kunt beginnen, gebruik dan de -c commandoregel optie.

history -c

Conclusie

Je zult het er waarschijnlijk mee eens zijn dat geschiedenis een heel belangrijk commando is waarvan je op de hoogte moet zijn. In deze handleiding bespraken we verschillende belangrijke tips/trucs om dit hulpmiddel optimaal te benutten. Als je deze geoefend hebt, ga dan naar deman pagina van het gereedschap voor meer info.