Zo nu en dan typ je een lange opdracht onder bash en, nog voor je de return-toets indrukt, zie je dat je aan het begin van de regel een spelfout hebt gemaakt. Je zou het vanaf het begin kunnen verwijderen en alles wat nodig is weer opnieuw in kunnen tikken, maar dat is wel erg veel moeite! In plaats daarvan kun je de pijltjestoetsen gebruiken om terug te gaan, de één of twee misgetypte tekens verwijderen om vervolgens de juiste informatie in te tikken.
Er bestaan diverse speciale toetsen om je te helpen bij het bewerken van de opdrachtregel, waarvan de meesten vergelijkbaar zijn met de opdrachten die worden gebruikt in GNU Emacs. Met bijvoorbeeld C-t verwissel je twee achtereenvolgende tekens[1] De meeste opdrachten zul je terug kunnen vinden in het hoofdstuk over emacs in hoofdstuk Hoofdstuk 9.
Een andere feature van bash is de automatische voltooiing van je opdrachtregels. Laten we als voorbeeld eens kijken naar het volgende waarbij gebruik wordt gemaakt van een typische cp opdracht:
/home/larry# ls -F dit-is-een-lang-bestand /home/larry# cp dit-is-een-lang-bestand korter /home/larry# ls -F korter dit-is-een-lang-bestand /home/larry# |
Om elk teken in te tikken van dit-is-een-lang-bestand kost nogal wat moeite, wanneer je het tracht te benaderen. Dus maak dit-is-een-lang-bestand aan door /etc/passwd ernaar te kopiëren[2]. Nu gaan we de bovenstaande cp opdracht zeer snel uitvoeren met een kleinere kans typfouten te maken.
In plaats van het intikken van de volledige bestandsnaam, typ je cp di en drukt de Tab toets in en laat deze direct weer los. Als magie, verschijnt de rest van de bestandsnaam op de opdrachtregel. Helaas kan bash je gedachten niet lezen, en zul je korter volledig in moeten tikken.
Wanneer je de Tab indrukt, bekijkt bash wat je hebt ingevoerd en gaat zoeken naar een bestand dat daarmee begint. Als ik bijvoorbeeld /usr/bin/ema intik en daarna de Tab indruk, dan zal bash /usr/bin/emacs vinden aangezien dat het enige bestand is op mijn systeem dat begint met /usr/bin/ema. Typ ik echter /usr/bin/ld en druk daarna op Tab, dan laat bash een beep horen. Dat komt omdat er drie bestanden op mijn systeem zijn, te weten /usr/bin/ld, /usr/bin/ldd, en /usr/bin/ld86 die allen met /usr/bin/ld beginnen.
Probeer je een voltooiing en retourneert bash een geluid, dan kun je onmiddellijk weer de Tab-toets indrukken om een lijst met alle bestanden te verkrijgen waar de ingegeven beginletters tot dusverre mee corresponderen. Mocht je niet zeker zijn van de exacte spelling van je bestand, dan kun je op die manier een begin maken en een veel kleinere lijst met bestanden scannen.
| [1] | C-t betekent het vasthouden van de toets met het label "Ctrl", om vervolgens de toets "t" in te drukken. Laat vervolgens de "Ctrl"-toets weer los. |
| [2] | cp /etc/passwd dit-is-een-lang-bestand |