Tips en Trucs 2016

Bash history

De geschiedenis van alle opdrachten die je in een bash terminal uitvoert, wordt in het geheugen bijgehouden, bij het verlaten van bash (terminal) wordt de geschiedenis met opdrachten naar het verborgen bestand ~/.bash_history geschreven. Bij het starten van een nieuwe bash terminal wordt het verborgen bestand ~/.bash_history ingelezen en staan alle voordien uitgevoerde opdrachten terug ter beschikking via de pijltoetsen omhoog, omlaag, PgUp en PgDn. Deze geschiedenisfunctie van bash wordt algemeen beschouwd als een pluspunt, maar heeft een keerzijde. Als je een gevoelige opdracht uitvoert (waarin bijvoorbeeld een wachtwoord staat), wordt deze ook in de geschiedenis opgenomen en kan dus voor iedereen die toegang heeft tot bash terug opgeroepen en uitgevoerd worden.

History opdrachten

Om de geschiedenis van bash weer te geven, gebruik je de volgende opdracht:

dany@laptop:~> history
    1  sudo zypper up
    2  kwrite ~/.bashrc
    3  joe ~/.bashrc
    4  sh ~/Documenten/Systeembeheer/rsyncSNT.sh
    5  sh ~/Documenten/Systeembeheer/SoftAP.sh
    6  ssh dany@main.local
    7  ls -la
    8  history

Om opdracht 7 (ls -la) uit de geschiedenis te verwijderen, gebruik je de volgende opdracht

dany@laptop:~> history -d 7
dany@laptop:~> history
    1  sudo zypper up
    2  kwrite ~/.bashrc
    3  joe ~/.bashrc
    4  sh ~/Documenten/Systeembeheer/rsyncSNT.sh
    5  sh ~/Documenten/Systeembeheer/SoftAP.sh
    6  ssh dany@main.local
    7  history
    8  history -d 7
    9  history

Om de volledige bash geschiedenis te wissen, gebruik je de volgende opdracht:

dany@laptop:~> history -c
dany@laptop:~> history
    1  history

Deze opdrachten werken enkel op de in het geheugen bewaarde geschiedenis, wat blijkt na het uitvoeren van de volgende opdracht:

dany@laptop:~> more ~/.bash_history
sudo zypper up
kwrite ~/.bashrc
joe ~/.bashrc
sh ~/Documenten/Systeembeheer/rsyncSNT.sh
sh ~/Documenten/Systeembeheer/SoftAP.sh
ssh dany@main.local

Om de huidige in het geheugen bewaarde geschiedenis naar de schijf weg te schrijven, gebruik je de volgende opdracht:

dany@laptop:~> history -w
dany@laptop:~> more ~/.bash_history
history
more ~/.bash_history
history -w

Standaard geschiedenis aanmaken bij het starten van bash

Bij het starten van bash wordt standaard het verborgen script ~/.bashrc opgestart. Daarin kunnen we dus een standaard ~/.bash_history bestand aanmaken met enkele standaard veel gebruikte opdrachten. Daarenboven worden zo alle voordien opgeslagen opdrachten automatisch gewist. Dit kan bijvoorbeeld met behulp van KWrite die je opstart met de toetscombinatie Alt+F2 en de opdracht kwrite ~/.bashrc te typen gevolgd door een druk op Return. Typ onderaan opdrachten die het ~/.bash_history bestand aanmaakt en opvult met opdrachten. De laatste zes opdrachten in het voorbeeld zorgen voor een standaard ~/.bash_history bestand. De eerste van deze zes opdrachten gebruikt één >-teken waardoor je het oude ~/.bash_history bestand overschrijft. Met andere woorden de geschiedenis bevat dan enkel de opdracht sudo zypper up. De vijf laatste opdrachten bevatten telkens twee >-tekens waardoor je opdrachten toevoegt aan het ~/.bash_history bestand en dus aan de bash geschiedenis. Sla de aanpassingen op, start een bash shell (terminal) en controleer de geschiedenis. Je zult merken dat je nu bij elke herstart van bash dezelfde geschiedenis hebt.
KWrite ~/.bashrc