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 shopt
optie 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 !245
wordt 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.