Elke distributie gebruikt history, een bash onderdeel om elke terminalopdracht die je uitvoert bij te houden. Zo kan je vlug vroeger uitgevoerde terminalopdrachten nogmaals of in een licht aangepaste versie uitvoeren. OpenSUSE zorgt zelf voor extra gemak door de pijltoetsen op en neer te gebruiken om door de opdrachtengeschiedenis te bladeren. De PgUp en PgDn toetsen gebruikt openSUSE om reeds half ingetypte opdrachten in de opdrachtengeschiedenis op te zoeken.
Zelfs zonder de vooringestelde toetsen in openSUSE is het werken met de opdrachtengeschiedenis eenvoudig en zorgt voor een pak extra gebruikersgemak.
Met de volgende opdracht wordt de volledige opdrachtengeschiedenis venster per venster weergegeven:
dany@pindabook:~> history | more
1 sudo zypper up
2 sudo zypper install-new-recommends
...
18 sudo zypper up
19 exit
20 sudo pip3 mu-editor
21 sudo pip3 install mu-editor
22 sudo pip3 install shortcut
23 shortcut mu-editor
24 sudo pip3 install --upgrade pip3
25 sudo pip3 install --upgrade pip
26 pip3 --version
De more opdracht zorgt dat je opdrachtengeschiedenis venster per venster wordt weergegeven. Een druk op de spatiebalk toont dan een volgend venster tot alle opdrachten in de geschiedenis werden weergegeven. Met de q toets (Quit) verlaat je de more opdracht onmiddellijk.
Je kunt de history opdracht met behulp van vooraf ingestelde omgevingsvariabelen beïnvloeden. Zo bepaalt de variabele HISTTIMEFORMAT de manier waarop de history opdracht de datum en tijd weergeeft. De volgende opdrachten zorgen dat history de datum en tijd waarop een opdracht werd uitgevoerd in mensentaal weergeeft:
dany@pindabook:~>export HISTTIMEFORMAT="%F %T: "
dany@pindabook:~>history | more
1 2019-11-16 13:36:31: sudo zypper up 2 2019-11-16 13:36:31: sudo zypper install-new-recommends ... 18 2019-11-16 13:36:31: sudo zypper up 19 2019-11-16 13:36:31: exit 20 2019-11-16 13:36:31: sudo pip3 mu-editor 21 2019-11-16 13:36:31: sudo pip3 install mu-editor 22 2019-11-16 13:36:31: sudo pip3 install shortcut 23 2019-11-16 13:36:31: shortcut mu-editor 24 2019-11-16 13:36:31: sudo pip3 install --upgrade pip3 25 2019-11-16 13:36:31: sudo pip3 install --upgrade pip 26 2019-11-16 13:36:31: pip3 --version ... 39 2019-11-16 14:00:05: history | more 40 2019-11-16 14:07:24: export HISTTIMEFORMAT="%F %T: " 41 2019-11-16 14:07:34: history | more
In situaties waarbij je liever geen opdrachtengeschiedenis bijhoudt, kan je deze uitschakelen:
dany@pindabook:~>export HISTSIZE=0
dany@pindabook:~>history
Dit kan ook met de history opdracht met de -c (Clear) optie:
dany@pindabook:~> history -c
Deze opdracht en de omgevingsvariable HISTSIZE schakelt enkel de opdrachtengeschiedenis in het RAM geheugen uit. Met de variable HISTFILESIZE bepaal je hoeveel opdrachtregels er in het geschiedenisbestand worden opgeslagen. Bij elke start van een terminal wordt dit geschiedenisbestand met opdrachtregels gelezen en beschikbaar voor de gebruiker. Bij het beëindigen van een terminal worden de in het RAM geheugen bewaarde opdrachtregels in het geschiedenisbestand opgeslagen. Je kunt de opdrachtengeschiedenis terug inschakelen om 1000 opdrachtregels te onthouden met de opdracht:
dany@pindabook:~>export HISTSIZE=1000
dany@pindabook:~>echo Hier ben ik terug
Hier ben ik terug dany@pindabook:~>history
42 2019-11-16 14:40:50: echo Hier ben ik terug 43 2019-11-16 14:41:00: history
Experimenteren is leuk, maar gevaarlijk zonder back-up. Om een omgevingsvariabele weer te geven, voor je ze aanpast, gebruik je de echo opdracht:
dany@pindabook:~> echo $HISTCONTROL
ignoreboth
Door de variabele HISTCONTROL in te stellen op ignorespace zullen opdrachtregels die beginnen met een spatie niet in de opdrachtgeschiedenis worden opgenomen:
dany@pindabook:~>export HISTCONTROL=ignorespace
dany@pindabook:~>cat /etc/fstab
UUID=33b64539-5d67-4e8c-b3b5-83e6dd7dc1bf / ext4 acl,user_xattr 0 1 UUID=b9f19cec-a3ce-4e7e-8635-187310973824 swap swap defaults 0 0 UUID=820d7da4-657f-4918-b863-6d2b847e8ba3 /usr/home/Documents ext4 defaults 0 2 UUID=0C54-931D /boot/efi vfat defaults 0 0 /usr/home/Documents/Web/ /srv/www/htdocs none bind 0 0 dany@pindabook:~> history 42 2019-11-16 14:40:50: echo Hier ben ik terug 43 2019-11-16 14:41:00: history 44 2019-11-16 14:46:16: echo HISTCONTROL 45 2019-11-16 14:46:22: echo $HISTCONTROL 46 2019-11-16 14:48:32: export HISTCONTROL=ignorespace 47 2019-11-16 14:50:19: history
Daarna kan je de omgevingsvariabele herstellen met de oorspronkelijke waarde:
dany@pindabook:~> export HISTCONTROL=ignoreboth
Deze instelling zorgt dat identieke reeds in de geschiedenis aanwezige opdrachtregels en opdrachtregels die beginnen met een spatie niet in de opdrachtengeschiedenis worden opgenomen.
Met de sneltoets Ctrl+r activeer je de zoekfunctie van de opdrachtgeschiedenis.
(reverse-i-search)`':
De opdrachtprompt duidt aan dat je bij het typen van een opdracht in de opdrachtengeschiedenis zult zoeken. Zo krijg ik bij het typen van de letters ec, de meest recent uitgevoerde echo opdracht te zien:
(reverse-i-search)`ec
': echo $HISTCONTROL
Druk nogmaals de sneltoets Ctrl+r om nog verder in de opdrachtengeschiedenis naar de lettercombinatie ec te zoeken:
(reverse-i-search)`ec': echo Hier ben ik terug
Heb je de juiste opdracht gevonden, gebruik dan de pijltoets naar rechts om de zoekopdracht af te breken en de opdracht klaar te zetten om uitgevoerd te worden:
dany@pindabook:~> echo Hier ben ik terug
Hier ben ik terug
Om de vorige opdracht (de laatste in de opdrachtengeschiedenis) opnieuw uit te voeren, gebruik je:
dany@pindabook:~> !!
echo Hier ben ik terug
Hier ben ik terug
Om de voorlaatste opdracht opnieuw uit te voeren:
dany@pindabook:~>echo Vorige opdracht
Vorige opdracht dany@pindabook:~>!-2
echo Hier ben ik terug Hier ben ik terug
Enz.
De opdrachtengeschiedenis maakt deel uit van bash, het terminalprogramma. Om je verder te verdiepen in de mogelijkheden van bash en zijn opdrachtengeschiedenis, kan je de man pagina van bash raadplegen.