Ik Van Linux

Enkele Bash Trucjes


Even een tussendoortje. Je leert in dit hoofdstuk even geen nieuwe commando’s kennen. In plaats daarvan ga ik je een paar slimmigheden verklappen, waarmee je sneller kunt werken in de terminal.

Geschiedenis

Mijn minst geliefde vak op school, maar in Bash kan de geschiedenis best handig zijn. Druk maar eens een paar keer op de pijl omhoog toets. Je ziet dan je laatste commando’s die je gegeven hebt een voor een voorbij komen. Als je te ver bent kun je met de pijl omlaag natuurlijk ook weer terug, richting het heden.
Als je het commando wat je nog een keer wilt uitvoeren gevonden hebt hoef je alleen maar op Enter te drukken om het te starten. Maar voor je op Enter drukt kun je eventueel ook een deel van het commando nog aanpassen als je dat wil.
Je komt snel weer terug in het heden door op Ctrl-C te drukken.

Je kunt de regel ook beginnen met het uitroepteken, gevolgd door de eerste paar letters van een van je reeds uitgevoerde commando’s. Het laatst uitgevoerde commando wat met die letters begon wordt nog een keer herhaald. Dat werkt eigenlijk alleen als die eerste letters redelijk uniek zijn. Als je bijvoorbeeld !l intypt wordt zeer waarschijnlijk je laatst ls commando herhaald.
Zelf gebruik ik dit trucje vaak om mysql op te starten. Mysql is een database client programma wat nogal een boel parameters nodig heeft. Door !my in te typen kom ik zeer waarschijnlijk weer in mijn database client terecht, zonder dat ik die berg parameters opnieuw moet intypen.

Type eens het commando history . Oeps, ik had beloofd geen nieuwe commando’s te gebruiken, doe ik het toch. Je ziet nu een hele lijst met alle commando’s die je hebt uitgevoerd. Voor elke regel staat een getal. Door nu !123 in te typen op het begin van de regel wordt commando op regel 123 uit je geschiedenis uitgevoerd. Op die manier kun je snel een commando terugvinden wat je al redelijk lang geleden hebt gebruikt.
En ik denk dat we nu voldoende geleerd hebben om te weten wat we moeten doen wanneer de geschiedenis zo lang is dat de eerste regels van het scherm vliegen voordat we ze hebben kunnen lezen. Ja, je hebt het goed geraden: history | less .

Je wil soms niet hebben dat het commando in de history lijst wordt opgeslagen. Dat kan interessant zijn, bijvoorbeeld als je een wachtwoord op de commandoregel moet of wil invoeren. Je wilt namelijk niet dat dat wachtwoord gewoon terug te zoeken is in de geschiedenis.
In dat geval begin je je commando met een spatie, dus niet op de eerste positie van de commandoregel.

Nu hebben we gezien hoe we door de laatst gegeven commando’s kunt bladeren. Maar we kunnen ook door de laatst gegeven parameters heen bladeren door Alt-. (herhaaldelijk) in te drukken.

Toekomst Voorspellen

Bash kan niet alleen in het verleden terugkijken. Het kan ook een heel klein beetje de toekomst voorspellen. Doe maar eens dit:

ls -l /etc/mim

Maar voordat je op Enter drukt moet je eerst de TAB toets indrukken. Heb je de Enter toets al ingedrukt dan krijg je een foutmelding dat het bestand niet bestaat. Als je het wel goed gedaan hebt zal Bash automatisch /etc/mim hebben uitgebreid naar /etc/mime.types, alsof het wist dat je dat helemaal in had willen typen.
Auto completion noemen ze dat. In Bash kun je de TAB toets heel vaak gebruiken om lange bestandsnamen in te typen. Als de eerste letters, gevolgd door de TAB toets een unieke match oplevert zal die match meteen voor je uitgeschreven worden. Levert het echter geen unieke match op dan gebeurt er niets. Druk in dat geval nog een keer op de TAB toets en je krijgt een lijstje te zien van alle bestanden die wel een match op zouden leveren. Je kunt dan nog een paar letters meer intypen en dan alsnog op TAB drukken om op die manier wel een unieke match te krijgen.

Auto completion werkt niet alleen met bestandsnamen, maar ook met commando’s. Type maar eens l, gevolgd door de TAB toets. Er gebeurt nu nog niets. Dat komt omdat l<TAB> nog geen uniek resultaat oplevert. Druk dus nog een keer op de TAB toets om de lijst met mogelijke commando’s te zien die allemaal met l beginnen.

Display all 153 possibilities? (y or n)

Oei, Bash vindt dat dat er te veel zijn. Door op y te drukken krijg je de lijst alsnog te zien. Alle 153 (in mijn geval).