
Als je het gedrag van je Bash-shell afstemt met shopt, kunt u meer dan 50 instellingen beheren. We laten u zien hoe u uw Linux-systeem kunt aanpassen zoals u het wilt.
De shopt ingebouwd
De shopt ingebouwd maakt deel uit van alle versies van de Bash-shell, dus u hoeft niets te installeren. Het aantal beschikbare opties in shopt is in de loop der jaren gestaag toegenomen. Dus hoe ouder de versie van Bash die u heeft, hoe korter de lijst met shopt opties zullen zijn.
Als iets niet lijkt te werken op uw machine, controleer dan het man pagina-invoer voor Bash en controleer of die optie beschikbaar is in uw versie van shopt.
We behandelen alle shopt opties hieronder. We beschrijven ook hoe u het kunt gebruiken en delen enkele voorbeelden. Van daaruit kun je de Bash man-pagina of GNU Bash Reference Manual bekijken om te zien of een van deze opties nuttig of aantrekkelijk klinkt.
Sommige shopt opties zijn standaard ingeschakeld en maken deel uit van het standaardgedrag van Bash. U kunt een shopt optie als een korte termijn wijziging in Bash. Het keert dan terug naar het standaardgedrag wanneer u de shell sluit.
Als u echter wilt dat een aangepast gedrag beschikbaar is wanneer u een Bash-shell start, kunt u de wijzigingen permanent maken.
De winkel Opties
Er zijn 53 shopt opties. Als u de shopt commando zonder enige opties, het geeft deze weer. Als we de uitvoer door de wc commando, zal het de regels, woorden en karakters voor ons tellen. Omdat elk shopt optie staat op een eigen regel, het aantal regels is het aantal opties.
We typen het volgende:
shopt | wc

Om alle opties te zien, kunnen we de uitvoer door de column commando om de optienamen in kolommen weer te geven, of we zouden het naar less.
We typen het volgende:
shopt | column

Shopt vinden in de Linux-handleiding
De sectie bespreken shopt en zijn opties staan ​​in de Bash-sectie van de Linux-handleiding. De Bash-sectie is meer dan 6000 regels lang. U vindt de beschrijving van shopt met veel scrollen, of je kunt er gewoon naar zoeken in de handleiding.
Open hiervoor de handleiding in het gedeelte Bash:
man bash

Druk in de handleiding op / om een ​​zoekopdracht te starten. Typ het volgende en druk op Enter:
assoc_expand_once

Het begin van de shoptoptie sectie zal verschijnen in het man venster.

VERWANT: Hoe Linux’s man Command te gebruiken: Hidden Secrets and Basics
Opties in- en uitschakelen
In- en uitschakelen shopt opties, gebruik de volgende commando’s:
- -s: Instellen of inschakelen.
- -u: Uitgeschakeld of uitgeschakeld.
Omdat sommige opties standaard zijn ingeschakeld, is het ook handig om te controleren welke opties aan staan. U kunt dit doen met de -s en -u opties zonder een optienaam te gebruiken. Dit veroorzaakt shopt om de opties weer te geven die in- en uitgeschakeld zijn.
Typ het volgende:
shopt -s

shopt -u | column

U kunt een shopt optie zonder de -s of -u commando’s om de aan of uit status voor elke optie te zien.
We kunnen bijvoorbeeld het volgende typen om de instelling van de histverify optie:
shopt histverify
We kunnen het volgende typen om het in te schakelen:
shopt -s histverify
Vervolgens kunnen we het volgende typen om het opnieuw te controleren:
shopt histverify

De histverify optie verandert hoe een aspect van het history commando werkt. Meestal, als je het vraagt history om een ​​commando te herhalen door er met een nummer naar te verwijzen, zoals !245wordt de opdracht opgehaald uit de opdrachthistorie en onmiddellijk uitgevoerd.
Als u liever een commando bekijkt om er zeker van te zijn dat het degene is die u had verwacht en het indien nodig wilt bewerken, typt u het volgende om de shopt histverify optie om op:
!245

De opdracht wordt opgehaald en gepresenteerd op de opdrachtregel. U kunt het verwijderen, bewerken of uitvoeren door op Enter te drukken.
VERWANT: Hoe het geschiedeniscommando op Linux te gebruiken
De autocd-optie
Met de autocd optie ingeschakeld, als u de naam van een map op de opdrachtregel typt en op Enter drukt, wordt deze behandeld alsof u hebt getypt cd voor.
We typen het volgende om het autocd optie:
shopt -s autocd
Vervolgens typen we de naam van een directory:
Documents

De cdspell-optie
Wanneer de cdspell optie is ingeschakeld, zal Bash automatisch eenvoudige spelfouten en typefouten in directory-namen corrigeren.
We typen het volgende om het cdspell optie:
shopt -s cdspell
Om te proberen over te schakelen naar een directory in kleine letters die een hoofdletter zou moeten hebben, typen we het volgende:
cd documents
Vervolgens kunnen we het volgende typen om een ​​directorynaam te proberen met een extra “t” in de naam:
cd ../Picttures

Bash verandert in elke map, ongeacht de spelfouten.
De optie xpg_echo
Wanneer de xpg_echo optie is ingeschakeld, zal het echo-commando de ontsnapte tekens gehoorzamen, zoals n voor nieuwe regel en t voor horizontale tab.
Eerst typen we het volgende om er zeker van te zijn dat de optie is ingesteld:
shopt -s xpg_echo
We nemen dan op n in een string waar we naartoe gaan echo:
echo "This is line onenThis is line two"

Het ontsnapte teken voor een nieuwe regel forceert een regeleinde in de uitvoer.
Dit levert hetzelfde gedrag op als de -e (ontsnappingsinterpretatie mogelijk maken) echo optie, maar xpg_echo staat toe dat het de standaardactie is.
VERWANT: Hoe de echo-opdracht op Linux te gebruiken
De dotglob-optie
De dotglob optie moet met enige voorzichtigheid worden behandeld. Het staat bestanden en mappen toe die beginnen met een punt (.) om te worden opgenomen in naamuitbreidingen of ‘globbing’. Dit worden “puntbestanden” of “puntmappen” genoemd en zijn meestal verborgen. De dotglob optie negeert de punt aan het begin van hun namen.
Eerst zoeken we naar bestanden of mappen die eindigen op ‘nerd’ door het volgende te typen:
ls *geek
Er is één bestand gevonden en weergegeven. Vervolgens zetten we de dotglob optie door het volgende te typen:
shopt -s dotglob
We geven hetzelfde uit ls commando om te zoeken naar bestanden en mappen die eindigen op “geek”:
ls *geek

Dit keer worden twee bestanden gevonden en weergegeven, waarvan er één een puntbestand is. Je moet voorzichtig zijn met rm en mv als je de dotglob optie ingeschakeld.
De nocaseglob-optie
De nocaseglob optie is vergelijkbaar met de dotglob optie, behalve nocaseglob zorgt ervoor dat verschillen in hoofdletters en kleine letters in bestandsnamen en mappen worden genegeerd in naamuitbreidingen.
We typen het volgende om te zoeken naar bestanden of mappen die beginnen met ‘hoe’:
ls how*
Er is één bestand gevonden en weergegeven. We typen het volgende om het nocaseglob optie:
shopt -s nocaseglob
Vervolgens herhalen we de ls opdracht:
ls how*

Er zijn twee bestanden gevonden, waarvan er één hoofdletters bevat.
Veranderingen permanent maken
De wijzigingen die we hebben aangebracht, duren alleen totdat we de huidige Bash-shell sluiten. Om ze permanent te maken over verschillende shell-sessies, moeten we ze toevoegen aan ons “.bashrc” -bestand.
Typ in je homedirectory het volgende commando om het “.bashrc” -bestand in de grafische Gedit-teksteditor te openen (of verander het dienovereenkomstig om de editor van jouw voorkeur te gebruiken):
gedit .bashrc
De gedit editor wordt geopend met het “.bashrc” -bestand geladen. Je zult er een paar zien shopt vermeldingen staan ​​er al in.

U kunt uw eigen shopt opties hier ook. Als u ze heeft toegevoegd, slaat u uw wijzigingen op en sluit u de editor. Telkens wanneer u een nieuwe Bash-shell opent, worden uw opties voor u ingesteld.
Opties zover het oog reikt
Het is waar de shopt command heeft veel opties, maar je hoeft ze niet allemaal tegelijk te behandelen, of nooit. Aangezien het er zo veel zijn, zijn er waarschijnlijk enkele die u niet interesseren.
Er zijn bijvoorbeeld een heleboel die Bash dwingen om te werken op manieren die compatibel zijn met specifieke, oudere versies. Dat is misschien handig voor iemand, maar het is een redelijk nichegeval.
Je kunt de Bash man-pagina of de GNU Bash Reference Manual bekijken. Bepaal welke opties voor u het verschil gaan maken en experimenteer er vervolgens mee. Wees voorzichtig met opties die van invloed zijn op de manier waarop bestands- en directorynamen worden uitgebreid. Probeer ze met een goedaardig commando, zoals ls, totdat u zich er prettig bij voelt.