De Bourne Again Shell, beter bekend als bash, is de standaard voor de meeste Linux-distributies. Het is extreem krachtig voor wat betreft commandoschillen, en bevat allerlei handige trucs voor mensen die willen leren. Een van de beste functies is, naar mijn mening, het systeem met commandogeschiedenis.

Er zijn veel opties om met de bash-geschiedenis te gebruiken, sommige gebruik ik bijna elke keer dat ik een opdrachtshell opent. Vandaag zal ik enkele van de nuttigste aspecten van de geschiedenis behandelen, maar ik zal ze zeker niet allemaal kunnen behandelen.

Pijl-omhoog / omlaag

Velen van jullie kennen deze waarschijnlijk, maar voor iedereen die dat niet doet, zal het je leven een stuk eenvoudiger maken. Telkens wanneer u zich in de opdrachtshell bevindt, gebruikt u eenvoudigweg de pijlen omhoog en omlaag op uw toetsenbord om door de lijst met eerder ingevoerde opdrachten te bladeren. De volgende keer dat u een lange opdracht invoert die een typfout blijkt te hebben, hoeft u niet alles opnieuw in te tikken, maar drukt u gewoon op de pijl-omhoog en voert u de nodige bewerkingen uit.

!!

Een vergelijkbaar kenmerk als hierboven is de dubbele knal (!!). De tekens die in de shell zijn ingevoerd, vertegenwoordigen de laatst getypte opdracht. Laten we zeggen dat je een opdracht probeert uit te voeren om er achter te komen dat je root-rechten nodig hebt om het te doen. In plaats van het hele commando opnieuw te typen, kunt u eenvoudig invoeren

 sudo !! 

Bash zal de !! vervangen! voor het vorige commando, zoals in het onderstaande voorbeeld.

Dit werkt ook verder achteruit, je kunt zoiets doen

 ! -5 

om de opdracht 5 vermeldingen terug te roepen in de geschiedenis.

!(woord)

Misschien een paar dagen geleden typte je een lange, complexe opdracht in je shell, bijvoorbeeld een reeks opties voor "wterm". U kunt vinden en opnieuw invoeren dan opdracht door de ingebouwde zoekfunctie van de geschiedenis te gebruiken. Je voegt eenvoudig de eerste paar letters van het commando toe na de! en bash zal het vinden.

Wees voorzichtig met deze. U loopt mogelijk iets anders dan wat u verwachtte. Gebruik dit niet voor potentieel gevaarlijke opdrachten zoals "rm" of "fdisk".

!?(woord)

Dit is vergelijkbaar met de laatste functie omdat het de geschiedenis doorzoekt voor het ingevoerde woord, maar in tegenstelling tot! (Woord) zal dit het woord overal in het commando vinden, niet alleen het begin.

Wees voorzichtig met deze. U loopt mogelijk iets anders dan wat u verwachtte. Gebruik dit niet voor potentieel gevaarlijke opdrachten zoals "rm" of "fdisk".

Ctrl-R

Dit kan mijn persoonlijke favoriete geschiedenishulpmiddel zijn. Het lijkt een beetje op de !? item hierboven, maar interactief. In je opdrachtshell, druk je op Ctrl-R en het begint met zoeken. Terwijl u typt, zal bash de geschiedenis doorzoeken en de resultaten weergeven terwijl u typt. Wanneer het de gewenste opdracht toont, drukt u op Enter en voert u die opdracht uit. Dit kan veiliger zijn dan dingen als !? omdat u kunt zien wat de opdracht zal zijn voordat u hem uitvoert, zodat u niet hoeft te raden of op geheugen moet vertrouwen.

Handmatig zoeken

Misschien vind je de manier waarop Ctrl-R werkt niet leuk, of wil je ALLE opdrachten zien die je hebt ingetypt, of alleen de opdrachten die een bepaald woord bevatten. De geschiedenisopdracht zal je je volledige commandogeschiedenis laten zien, samen met het geschiedenisnummer van elke opdracht (houd die gedachte vast, we zullen die nummers in een moment behandelen).

U kunt ook het aantal items opgeven dat de geschiedenisopdracht zal weergeven. Als u de laatste 10 items in de geschiedenis wilt zien, kunt u typen

 geschiedenis 10 

Als u alle geschiedenisitems met een bepaald woord wilt bekijken, kunt u grep gebruiken om de resultaten te filteren, zoals hieronder.

!(aantal)

Wanneer u de opdracht history gebruikt om uw lijst met opdrachthistorieën weer te geven, ziet u dat elk item in de lijst een bijbehorend nummer heeft. Je kunt dat gebruiken om dat specifieke commando te herinneren. Item 87 kan bijvoorbeeld opnieuw worden uitgevoerd door te typen

 ! 87 

in je schelp.

Woordvervanging

Deze is redelijk goed. Hoe vaak heb je een groot lang commando uitgeschreven om je te realiseren dat je bijvoorbeeld hdd hebt geplaatst toen je HDC wilde? Nou bash heeft je gedekt. U kunt een woord in het vorige commando door een ander vervangen door "^", zoals in het onderstaande voorbeeld

Uw geschiedenis beheren

Standaard wordt de geschiedenis opgeslagen in ~ / .bash_history. U kunt dit bestand naar eigen inzicht bewerken, maar er zijn enkele nuttige dingen die u zou kunnen proberen om het bestand automatisch te beheren. Namelijk, het instellen van de omgevingsvariabelen HISTSIZE en HISTFILSIZE . Als u het aantal items wilt instellen dat in het geschiedenisbestand in 1000 kan worden opgeslagen, voert u in

 export HISTFILESIZE = 1000 

in je schelp. Hierdoor wordt het bestand beperkt tot 1000 items. Als u deze wijziging permanent wilt maken, plaatst u die exportopdracht in uw .bashrc- of .bash_profile-bestand.