Skip to main content

Linux - Unix Command: bash

Obkey - Openbox Key Editor - Linux LXDE (Kan 2025)

Obkey - Openbox Key Editor - Linux LXDE (Kan 2025)
Anonim

Linux-kommandoen Bash er ensh-kompatibel kommandosprog tolk, der udfører kommandoer, der læses fra standardindgangen eller fra en fil.Bash indeholder også nyttige funktioner fra Korn og C-skallerne (ksh ogCSH).

Bash muligheder

Ud over de enkeltpersoners skalindstillinger, der er dokumenteret i beskrivelsen afsæt builtin kommando,bash fortolker følgende muligheder, når den påberåbes:

  • -c snor: Hvis-c indstillingen er til stede, så kommandoer læses fra snor . Hvis der er argumenter efter snor , de er tildelt de positionelle parametre, begynder med$0.
  • -jeg: Hvis-jeg Muligheden er til stede, skalen er interaktiv .
  • -l: Lavebash fungere som om det var blevet påkaldt som en login shell.
  • -r: Hvis-r Muligheden er til stede, skalen bliver begrænset.
  • -s: Hvis-s valgmuligheden er til stede, eller hvis der ikke er argumenter efter valgbehandling, læses kommandoer fra standardindgangen. Denne mulighed gør det muligt at indstille positionsparametrene, når der påberåbes en interaktiv skal.
  • -D: En liste over alle dobbeltkodede strenge forud for$ er trykt på standard output. Dette er strengene, der er underlagt sprogoversættelse, når den nuværende landestandard ikke erC ellerPOSIX. Dette indebærer -n mulighed; ingen kommandoer vil blive udført.
  • - + O shopt_option : shopt_option er en af ​​de shell muligheder accepteret afshopt indbygget. Hvis shopt_option er til stede,-O indstiller værdien af ​​denne mulighed, og+ O indstiller det. Hvis shopt_option Leveres ikke, navnene og værdierne for de shell muligheder accepteret afshopt er trykt på standard output. Hvis indkaldelsen er + O, udgangen vises i et format, der kan genbruges som input.
  • --: EN-- signalerer slutningen af ​​mulighederne og deaktiverer yderligere valgmulighed. Eventuelle argumenter efter-- behandles som filnavne og argumenter. Et argument af- svarer til--.

Bash fortolker også en række flere tegnoptioner. Disse indstillinger skal vises på kommandolinjen, før de enkelte tegnoptioner kan genkendes:

  • --dump-po-strings: Ækvivalent med-D, men output er i GNU gettext po (bærbart objekt) filformat.
  • --dump-strings: Ækvivalent med-D.
  • --Hjælp: Vis en brugsbesked på standard output og afslut med succes.
  • --init-fil: fil og --rcfile fil : Udfør kommandoer fra fil i stedet for den standard personlige initialiseringsfil ~ / .Bashrc hvis skallen er interaktiv.
  • --Log på: Ækvivalent med-l.
  • --noediting: Brug ikke GNU'enreadline bibliotek for at læse kommandolinjer, når skallen er interaktiv.
  • --noprofile: Læs ikke den systembaserede opstartsfil / Etc / profile eller nogen af ​​de personlige initialiseringsfiler ~ / .Bash_profile , ~ / .Bash_login , eller ~ / .Profile . Som standard,bash læser disse filer, når den påberåbes som en login shell.
  • --norc: Læs ikke og udfør den personlige initialiseringsfil ~ / .Bashrc hvis skallen er interaktiv. Denne valgmulighed er aktiveret som standard, hvis skallen påberåbes somsh.
  • --posix: Ændre opførelsen afbash hvor standardoperationen adskiller sig fra POSIX-standarden for at matche standarden ( posix-tilstand ).
  • --restricted: Skallen bliver begrænset.
  • --rpm-kræver: Fremstil listen over filer, der kræves for shell scriptet til at køre. Dette indebærer '-n' og er underlagt de samme begrænsninger som kompileringstidsfejl kontrol kontrol; Backticks, tests og evals er ikke analyseret, så nogle afhængigheder kan blive savnet.
  • --ordrig: Svarende til-v.
  • --version: Vis versionsinformation for denne forekomst afbash på standard output og exit med succes.

argumenter

Hvis argumenter forbliver efter valgbehandling og ikke-c heller ikke-s mulighed er blevet leveret, antages det første argument at være navnet på en fil, der indeholder shell kommandoer. Hvis bash påberåbes på denne måde,$0 er indstillet til navnet på filen, og de positionelle parametre er indstillet til de resterende argumenter.Bash læser og udfører kommandoer fra denne fil derefter udgang.Bashs exit status er exit status for den sidste kommando udført i scriptet. Hvis ingen kommandoer udføres, er exitstatus 0. Et forsøg er først lavet for at åbne filen i den aktuelle mappe, og hvis der ikke findes nogen fil, søger skalen i mapperne iSTI til scriptet.

Indledningsbøn

EN login shell er en, hvis første tegn af argument nul er a-, eller en startede med--Log på mulighed.

en interaktiv shell er en startet uden argumenter uden valgmulighed og uden-c option, hvis standardindgang og -output begge er forbundet til terminaler som bestemt af isatty (3), eller en startet med-jeg mulighed.PS1 er indstillet og $- Inkluderer hvis bash er interaktiv, hvilket tillader et shell script eller en startfil til at teste denne tilstand.

De følgende afsnit beskriver hvordanbash udfører sine startfiler. Hvis nogen af ​​filerne findes, men ikke kan læses,bash rapporterer en fejl. Tildes udvides i filnavne som beskrevet i Tilde Expansion.

Hvornårbash påberåbes som en interaktiv login shell eller som en ikke-interaktiv shell med--Log på mulighed, den læser og udfører først kommandoer fra filen / Etc / profile , hvis den pågældende fil eksisterer. Efter at have læst den fil, ser den efter ~ / .Bash_profile , ~ / .Bash_login , og ~ / .Profile i den rækkefølge og læser og udfører kommandoer fra den første, der eksisterer og kan læses. Det--noprofile Muligheden kan bruges, når skallen er begyndt at hæmme denne adfærd.

Når en login shell forlader,bash læser og udfører kommandoer fra filen ~ / .Bash_logout , hvis den eksisterer.

Når en interaktiv shell, der ikke er en login shell, er startet,bash læser og udfører kommandoer fra ~ / .Bashrc , hvis den pågældende fil eksisterer. Dette kan hæmmes ved at bruge--norc mulighed. Det--rcfile fil mulighed vil tvingebash at læse og udføre kommandoer fra fil i stedet for ~ / .Bashrc .

Hvornårbash er startet ikke-interaktivt - for at køre et shell script, for eksempel - det ser ud til variablenBASH_ENV i miljøet udvider sin værdi, hvis den vises der, og bruger den udvidede værdi som navnet på en fil, der skal læses og udføres.Bash opfører sig som om følgende kommando blev henrettet:

hvis -n "$ BASH_ENV"; derefter . "$ BASH_ENV"; fi

men værdien afSTI variabel bruges ikke til at søge efter filnavnet.

Hvisbash påberåbes med navnetsh, forsøger den at efterligne opstartspraksis for historiske versioner afsh så tæt som muligt, samtidig med at de overholder POSIX-standarden. Når påkaldes som en interaktiv login shell eller en ikke-interaktiv shell med--Log på mulighed, det forsøger først at læse og udføre kommandoer fra / Etc / profile og ~ / .Profile i den rækkefølge. Det--noprofile Muligheden kan bruges til at hæmme denne adfærd. Når påkaldes som en interaktiv skal med navnet sh, bash leder efter variablenENV, udvider sin værdi, hvis den er defineret, og bruger den udvidede værdi som navnet på en fil, der skal læses og udføres. Siden en shell kaldes somsh forsøger ikke at læse og udføre kommandoer fra andre startfiler,--rcfile indstillingen har ingen virkning. En ikke-interaktiv shell påkaldt med navnetsh forsøger ikke at læse andre opstart filer. Når påberåbt somsh, bash går ind i POSIX tilstand efter startfilerne læses.

Hvornårbash er startet i POSIX mode, som med--posix kommandolinjevalg, følger POSIX-standarden for opstartsfiler. I denne tilstand udvider interaktive skallerENV variabel og kommandoer læses og udføres fra filen, hvis navn er den udvidede værdi. Ingen andre startfiler læses.

Bash forsøger at bestemme, hvornår den bliver kørt af den fjerne shell daemon, som regel rshd . Hvis bash bestemmer det drives af rshd , det læser og udfører kommandoer fra ~ / .Bashrc , hvis den pågældende fil findes og kan læses. Det vil ikke gøre dette hvis påberåbt somsh. Det--norc mulighed kan bruges til at hæmme denne adfærd og--rcfile mulighed kan bruges til at tvinge en anden fil til at blive læst, men rshd anvender normalt ikke skallen med disse muligheder eller tillader dem at blive specificeret.

Hvis skalen er startet med det effektive brugernavn (gruppe) id ikke det samme som den rigtige bruger (gruppe) id og-p valgmulighed er ikke leveret, ingen startfiler læses, skalfunktioner er ikke arvet fra miljøet,SHELLOPTS variabel, hvis den vises i miljøet, ignoreres, og det effektive bruger-id er sat til det rigtige bruger-id. Hvis-p Alternativet leveres ved indkaldelse, startupadfærd er den samme, men det effektive bruger-id er ikke nulstillet.

Definitioner

Følgende definitioner anvendes i resten af ​​dette dokument:

  • Blank: Et mellemrum eller en fane.
  • Ord: En sekvens af tegn betragtes som en enkelt enhed af skallen. Også kendt som a polet.
  • Navn: EN ord der kun består af alfanumeriske tegn og understregninger, og begynder med et alfabetisk tegn eller understregning. Også omtalt som enid.
  • metategn: Et tegn, der, når det er unoteret, adskiller ord. Et af følgende:| &; () <> mellemrumsfanen
  • Kontroloperatør: A polet der udfører en kontrolfunktion. Det er et af følgende symboler: || & && ; ;; ( ) |

Reserverede ord

Reserverede ord er ord, der har en særlig betydning for skallen. Følgende ord anerkendes som reserveret, når det ikke er noteret, og enten det første ord i en simpel kommando eller det tredje ord af asagellertil kommando:

! tilfældet gøres elif else esac fi for funktion, hvis i vælg derefter indtil mens {} tid

Shell Grammatik: Simple Commands

EN simpel kommando er en række valgfrie variable opgaver efterfulgt afblankseparerede ord og omdirigeringer og afsluttet af a kontrol operatør . Det første ord specificerer den kommando, der skal udføres, og sendes som argument nul. De resterende ord sendes som argumenter til den påkaldte kommando.

Returneringsværdien af ​​a simpel kommando er dens exit status, eller 128 + n hvis kommandoen afsluttes med signal n .

Rørledninger

EN rørledning er en sekvens af en eller flere kommandoer adskilt af tegnet|. Formatet for en rørledning er tid -p ! kommando | Command2 … .

Standard output af kommando er forbundet via et rør til standardindgangen på Command2 . Denne forbindelse udføres før eventuelle omdirigeringer angivet af kommandoen.

Hvis det reserverede ord! forud for en rørledning er udgangsstatus for den pågældende rørledning det logiske IKKE af exitstatus for den sidste kommando. Ellers er status for rørledningen udgangsstatus for den sidste kommando. Skallen venter på alle kommandoer i rørledningen for at afslutte, før du returnerer en værdi.

Hvistid reserveret ord går forud for en rørledning, den forløbne samt bruger- og systemtid forbruges ved dens udførelse rapporteres, når rørledningen afslutter. Det-p Valg ændrer outputformatet til det, der er angivet af POSIX. DetTIDSFORMAT variabel kan indstilles til en formatstreng, der angiver, hvordan timingoplysningerne skal vises.

Hver kommando i en rørledning udføres som en separat proces (f.eks. I en subshell).

Lister

EN liste er en sekvens af en eller flere rørledninger, der er adskilt af en af ​​operatørerne;, &, &&, eller||, og eventuelt opsiges af en af;, &, eller.

Af disse liste operatører,&& og|| har samme forrang, efterfulgt af; og&, som har samme prioritet.

En sekvens af en eller flere nye linjer kan forekomme i en liste i stedet for et semikolon til at afgrænse kommandoer.

Hvis en kommando opsiges af kontroloperatøren&, skalen udfører kommandoen i baggrund i en subshell. Skallen venter ikke på, at kommandoen skal afslutte, og returstatusen er 0. Kommandoer adskilt af a; udføres sekventielt skallen venter på, at hver kommando skal afslutte igen. Returstatus er exitstatus for den sidste kommando, der udføres.

Kontroloperatørerne&& og|| betegne AND lister og ELLER lister. En AND-liste har formularen

Command1 && Command2

Command2 udføres hvis, og kun hvis, Command1 returnerer en exitstatus på nul.

En OR-liste har formularen

Command1 || Command2

Command2 udføres hvis og kun hvis Command1 returnerer en status for ikke-nul-udgang. Returneringsstatus for AND og ELLER lister er exitstatus for den sidste kommando, der udføres på listen.

Sammensatte kommandoer

EN sammensatte kommando er et af følgende:

(liste) : liste udføres i en subshell. Variable opgaver og indbyggede kommandoer, der påvirker shellens miljø, forbliver ikke i kraft, når kommandoen er færdig. Returstatus er udgangsstatus for liste .

{list; } : liste udføres simpelthen i det nuværende shell-miljø. liste skal afsluttes med en nyline eller semikolon. Dette er kendt som a gruppe kommando . Returstatus er udgangsstatus for liste . Bemærk, at i modsætning til metategnene( og), { og} er reserverede ord og skal forekomme, hvor et reserveret ord tillades at blive anerkendt. Da de ikke forårsager et ordbrud, skal de adskilles fra liste efter hvide rum.

((ekspression)) : Det ekspression evalueres i henhold til reglerne beskrevet under Aritmetisk evaluering. Hvis værdien af ​​udtrykket er ikke-nul, er returstatusen 0; ellers er returneringsstatusen 1. Dette svarer nøjagtigt tillade ' ekspression '.

ekspression : Returner en status på 0 eller 1 afhængigt af evalueringen af ​​det betingede udtryk ekspression . Udtryk er sammensat af primarierne beskrevet nedenfor under Betingede udtryk. Word splitting og pathname ekspansion udføres ikke på ordene mellem og; tilde ekspansion, parameter og variabel ekspansion, aritmetisk ekspansion, kommando substitution, proces substitution, og citat fjernelse udføres.

Når== og!= operatører anvendes, strengen til højre for operatøren betragtes som et mønster og matches i henhold til reglerne beskrevet underPattern Matching. Returværdien er 0, hvis strengen matcher eller ikke svarer til mønsteret henholdsvis 1 og ellers. Enhver del af mønsteret kan citeres for at tvinge det til at blive matchet som en streng.

Udtryk kan kombineres ved hjælp af følgende operatører, opført i faldende rækkefølge:

  • (udtryk): Returnerer værdien af ekspression . Dette kan bruges til at tilsidesætte operatørernes normale forrang.
  • ! expressio n: Sandt hvis ekspression er falsk.
  • udtryk1 && udtryk2 : Sandt hvis begge udtryk1 og udtryk2 er sande.
  • udtryk1 || udtryk2 : Sandt, hvis enten udtryk1 eller udtryk2 er sandt.

Det&& og|| operatører vurderer ikke udtryk2 hvis værdien af udtryk1 er tilstrækkeligt til at bestemme returværdien af ​​det hele betingede udtryk.

  • til navn i ord ; gøre liste ; Færdig: Listen over ord, der følgeri er udvidet og genererer en liste over genstande. Variabelen navn er sat til hvert element i denne liste til gengæld og liste udføres hver gang. Hvisi ord er udeladt, dentil kommandoen udføres liste en gang for hver positionsparameter, der er indstillet. Returstatusen er exitstatus for den sidste kommando, der udføres. Hvis udvidelsen af ​​emnerne følgeri resulterer i en tom liste, ingen kommandoer udføres, og returstatusen er 0.
  • til (( Udtr1 ; Udtr2 ; expr3 )) ; gøre liste ; Færdig: Først det aritmetiske udtryk Udtr1 evalueres i henhold til reglerne beskrevet underAritmetisk evaluering. Det aritmetiske udtryk Udtr2 evalueres derefter gentagne gange, indtil det vurderes til nul. Hver gang Udtr2 vurderes til en værdi, der ikke er nul, liste udføres og det aritmetiske udtryk expr3 er evalueret. Hvis et udtryk udelades, virker det som om det vurderes til 1. Returværdien er exitstatus for den sidste kommando i liste der udføres eller falsk hvis nogen af ​​udtrykkene er ugyldige.
  • Vælg navn i ord ; gøre liste ; Færdig: Listen over ord, der følgeri er udvidet og genererer en liste over genstande. Sættet med udvidede ord udskrives på standardfejlen, hver forfulgt af et nummer. Hvisi ord udelades, stilles de positionelle parametre. Det PS3 prompt vises derefter og en linje læses fra standardindgangen. Hvis linjen består af et tal svarende til et af de viste ord, så er værdien af navn er sat til det pågældende ord. Hvis linjen er tom, vises ord og prompt igen. Hvis EOF læses, fuldføres kommandoen. Eventuelle andre værdilæsningsårsager navn at blive indstillet til null. Linjelæsningen gemmes i variablenSVAR. Det liste udføres efter hvert valg indtil apause kommandoen udføres. Afgangsstatus forVælg er exitstatus for den sidste kommando, der udføres i liste , eller nul hvis ingen kommandoer blev udført.
  • sag ord i ( mønster | mønster : Asag kommandoen udvides først ord , og forsøger at matche det mod hver mønster Til gengæld bruger de samme matchende regler som for udvidelse af stienavnet. Når en kamp er fundet, svarer den liste udføres. Efter den første kamp bliver der ikke forsøgt nogen efterfølgende kampe. Udgangsstatus er nul, hvis der ikke matches noget mønster. Ellers er det udgangsstatus for den sidste kommando, der udføres i liste .
  • hvis liste ; derefter liste; og Elif liste ; derefter liste ; … andet liste ; fi: Dethvis liste udføres. Hvis dens udgangsstatus er nul, vil denderefter liste udføres. Ellers hver Elif liste udføres i sin tur, og hvis dens exitstatus er nul, svarer denderefter liste udføres og kommandoen fuldendes. Ellers er detandet liste udføres, hvis den er til stede. Udgangsstatus er exitstatus for den sidste kommando, der er udført, eller nul, hvis ingen tilstand er testet sand.
  • mens liste ; gøre liste ; Færdig og så længe liste ; gøre liste ; Færdig: Detmens kommandoen udfører løbendegøre liste så længe den sidste kommando i liste returnerer en exitstatus på nul. Detså længe kommandoen er identisk medmens kommando, bortset fra at testen er negeret detgøre liste udføres så længe som den sidste kommando i liste returnerer en status for ikke-nul-udgang. Udgangsstatus formens også længe Kommandoer er udgangsstatus for den sidstegøre liste kommando udført, eller nul hvis ingen blev henrettet.
  • fungere navn () { liste ; }: Dette definerer en navngivet funktion navn . Det legeme af funktionen er liste af kommandoer mellem {og}. Denne liste udføres hver gang navn er angivet som navnet på en simpel kommando. Afslutningsstatus for en funktion er exitstatus for den sidste kommando, der udføres i kroppen.

Kommentarer

I en ikke-interaktiv skal eller en interaktiv skal, hvor interactive_comments mulighed forshopt builtin er aktiveret, et ord der begynder med# får det ord og alle de resterende tegn på den linje til at blive ignoreret. En interaktiv skal udeninteractive_comments mulighed aktiveret tillader ikke kommentarer. Det interactive_comments indstillingen er som standard i interaktive skaller.

Citerer

Citerer bruges til at fjerne den særlige betydning af visse tegn eller ord til skallen. Citering kan bruges til at deaktivere speciel behandling for specialtegn, for at forhindre reserverede ord i at blive anerkendt som sådan og for at forhindre parameterudvidelse.

Hver af de metategn anført ovenfor underDefinitioner har særlig betydning for skallen og skal citeres, hvis den skal repræsentere sig selv.

Når kommandoen Historieudvidelsesfaciliteter anvendes, historieudvidelse karakter, som regel!, skal citeres for at forhindre historisk ekspansion.

Der er tre citeringsmekanismer: escape karakter , single citater og dobbelt citater.

Et ikke-citeret tilbageslag () er escape karakter . Den bevarer den bogstavelige værdi af det næste tegn, der følger med undtagelse af . Hvis en par vises, og backslash er ikke selv citeret, den behandles som en linie fortsættelse (det vil sige, den fjernes fra input streamen og ignoreres effektivt).

Vedhæftende tegn i enkelte citater bevarer den bogstavlige værdi af hvert tegn i citaterne. Et enkelt citat må ikke forekomme mellem enkelte citater, selv når det går forud for en tilbageslag.

Vedhæftende tegn i dobbelt citater bevarer bogstavelig værdi af alle tegn i citaterne, med undtagelse af$, ', og. Karaktererne$ og' Bevare deres særlige betydning inden for dobbelt citater. Baggrunden holder kun sin særlige betydning, når den efterfølges af et af følgende tegn:$, ', ', , eller. Et dobbelt citat kan citeres inden for dobbelt citater ved at foregå det med en tilbageslag.

De særlige parametre* og@ Har særlig betydning, når de er i dobbelt citater.

Ord i formularen$' snor 'behandles specielt. Ordet udvides til snor , med udskiftelige tegn, der er udskiftet som erstattet af ANSI C-standarden. Backslash escape-sekvenser, hvis de er til stede, dekodes som følger:

  • en: alarm (bell)
  • b: backspace
  • e: en flugt karakter
  • f: form feed
  • n: ny linje
  • r: vognretur
  • t: vandret faneblad
  • v: lodret faneblad
  • \: backslash
  • ': enkelt citat
  • nnn : den otte-bit tegn, hvis værdi er oktalværdien nnn (et til tre cifre)
  • x HH : den otte-bit tegn, hvis værdi er den hexadecimale værdi HH (et eller to hex cifre)
  • c x : en kontrol- x Karakter

Det udvidede resultat er enkeltnoteret, som om dollartegnet ikke var til stede.

En dobbelt-citeret streng foran et dollartegn ($) vil medføre, at strengen oversættes i henhold til den aktuelle lokalitet. Hvis den aktuelle lokalitet erC ellerPOSIX, dollartegnet ignoreres. Hvis strengen er oversat og erstattet, er erstatningen dobbeltnoteret.

Parametre

EN parameter er en enhed, der lagrer værdier. Det kan være en navn , et tal eller et af specialtegnene anført underSærlige parametre. Til skalens formål a variabel er en parameter betegnet med a navn . En variabel har a værdi og nul eller mere egenskaber . Attributter er tildelt ved hjælp aferklære builtin kommando.

En parameter er indstillet, hvis den er blevet tildelt en værdi. Nulstrengen er en gyldig værdi. Når en variabel er indstillet, kan den kun være frakoblet ved at brugefrakoblet builtin kommando.

EN variabel kan tildeles ved en erklæring af formularen: navn = værdi

Hvis værdi er ikke givet, variablen er tildelt null-strengen. Alle værdier gennemgå tilde ekspansion, parameter og variabel ekspansion, kommando substitution, aritmetisk ekspansion og citat fjernelse. Hvis variablen har sinheltal attribut sæt, så værdi er underlagt aritmetisk ekspansion, selvom udvidelsen $ ((…)) ikke anvendes. Ordopdeling udføres ikke, med undtagelse af'$@' som forklaret underSærlige parametre. Udvidelse af navneudførsel udføres ikke. Opgavesætninger kan også fremstå som argumenter forerklære, typeset, eksport, Læs kun, og lokal indbyggede kommandoer.

Positionsparametre

EN positionsparameter er en parameter betegnet med et eller flere cifre, bortset fra enkeltcifret 0. Positionsparametre er tildelt fra skalens argumenter, når det påberåbes, og kan omfordeles ved hjælp afsæt builtin kommando. Positionsparametre må ikke tildeles til opgaveopgørelser. Positionsparametrene udskiftes midlertidigt, når en skalfunktion udføres.

Når en positionsparameter, der består af mere end et enkeltciffer, udvides, skal den være lukket i beslag.

Særlige parametre

Skallen behandler flere parametre specielt. Disse parametre må kun henvises til; tildeling til dem er ikke tilladt.

  • *: Udvider til de positionelle parametre, startende fra en. Når ekspansion sker inden for dobbelt citater, udvides det til et enkelt ord med værdien af ​​hver parameter adskilt af den første tegn påIFS speciel variabel. Det er, "$*"svarer til"$1 c $2 c ", hvor c er den første karakter af værdien afIFS variabel. HvisIFS er frakoblet, parametrene er adskilt af mellemrum. HvisIFS er null, parametrene forbindes uden mellemliggende separatorer.
  • @: Udvider til de positionelle parametre, startende fra en. Når ekspansion sker inden for dobbelt citater, udvides hver parameter til et særskilt ord. Det er, "$@"svarer til"$1' '$2"… Når der ikke er nogen positionelle parametre,"$@"og$@udvide til ingenting (de fjernes).
  • #: Udvider til antallet af positionsparametre i decimal.
  • ?: Udvider til status for den senest udførte forgrundsrørledning.
  • -: Udvider til de nuværende valgflag som angivet ved indkaldelse afsæt indbygget kommando eller dem, der er indstillet af selve skallen, som f.eks-jeg mulighed.
  • $: Udvider til shellens proces ID. I et () underskala udvides det til proces ID for den aktuelle shell, ikke underskallen.
  • !: Udvider til proces ID for den senest udførte baggrund (asynkron) kommando.
  • 0: Udvider til navnet på shell eller shell scriptet. Dette er indstillet til shell initialisering. Hvisbash er påkaldt med en fil med kommandoer,$0 er sat til navnet på den pågældende fil. Hvisbash er startet med-c mulighed, så$0 er sat til det første argument efter den streng, der skal udføres, hvis en er til stede. Ellers er den sat til det filnavn, der bruges til at påberåbe sigbash, som angivet ved argument nul.
  • _: Ved shell-opstart skal du angive det absolutte filnavn på shell eller shell scriptet, der udføres som bestået i argumentlisten. Efterfølgende udvides til det sidste argument til den foregående kommando, efter ekspansion. Sæt også til det fulde filnavn på hver kommando, der udføres og placeres i miljøet, der eksporteres til den kommando. Når du kontrollerer mail, indeholder denne parameter navnet på den mailfil, der aktuelt kontrolleres.

Shell Variabler

Følgende variabler indstilles af skallen:

BASH: Udvider til det fulde filnavn, der bruges til at påberåbe denne forekomst afbash.

BASH_VERSINFO: En readonly array variabel, hvis medlemmer har versionsinformation for denne forekomst af bash. Værdierne tilordnet array medlemmerne er som følger:

  • BASH_VERSINFO 0: Hovedversionsnummeret (den frigøre )
  • BASH_VERSINFO 1: Den mindre version nummer (den version )
  • BASH_VERSINFO 2: Patchniveauet
  • BASH_VERSINFO 3: Den byggede version
  • BASH_VERSINFO 4: Udgivelsesstatus ( beta1, for eksempel)
  • BASH_VERSINFO 5: Værdien afMACHTYPE

BASH_VERSION: Udvider til en streng, der beskriver versionen af ​​denne forekomst afbash.

COMP_CWORD: Et indeks i$ {COMP_WORDS} af ordet indeholdende den aktuelle markørposition. Denne variabel er kun tilgængelig i skalfunktioner påberåbt af de programmerbare færdiggørelsesfaciliteter.

COMP_LINE: Den aktuelle kommandolinje. Denne variabel er kun tilgængelig i skalfunktioner og eksterne kommandoer påberåbt af de programmerbare færdiggørelsesfaciliteter.

COMP_POINT: Indekset for den aktuelle markørposition i forhold til begyndelsen af ​​den aktuelle kommando. Hvis den aktuelle markørposition er i slutningen af ​​den nuværende kommando, er værdien af ​​denne variabel lig med$ {# COMP_LINE}. Denne variabel er kun tilgængelig i skalfunktioner og eksterne kommandoer påberåbt af de programmerbare færdiggørelsesfaciliteter.

COMP_WORDS: En array-variabel bestående af de enkelte ord i den aktuelle kommandolinje. Denne variabel er kun tilgængelig i skalfunktioner påberåbt af de programmerbare færdiggørelsesfaciliteter.

DIRSTACK: En array-variabel indeholdende det nuværende indhold i katalogstakken. Kataloger vises i stakken i den rækkefølge, de vises afdirs indbygget. Tildeling til medlemmer af denne array-variabel kan bruges til at ændre mapper, der allerede er i stakken, menPUSHD ogPopD builtins skal bruges til at tilføje og fjerne mapper. Opgave til denne variabel ændrer ikke den aktuelle mappe. HvisDIRSTACK er afbrudt, mister den sine specielle egenskaber, selv om den senere nulstilles.

EUID: Udvider til den aktuelle brugers effektive bruger-id, initialiseret ved shell-opstart. Denne variabel er læselig.

FUNCNAME: Navnet på enhver aktuelt udført shell-funktion. Denne variabel eksisterer kun, når en shell-funktion udføres. Opgaver tilFUNCNAME har ingen virkning og returnerer en fejlstatus. HvisFUNCNAME er afbrudt, mister den sine specielle egenskaber, selv om den senere nulstilles.

GRUPPER: En array-variabel, der indeholder listen over grupper, som den nuværende bruger er medlem af. Opgaver tilGRUPPER har ingen virkning og returnerer en fejlstatus. HvisGRUPPER er afbrudt, mister den sine specielle egenskaber, selv om den senere nulstilles.

HISTCMD: Historiknummeret eller indekset i historiklisten for den aktuelle kommando. HvisHISTCMD er afbrudt, mister den sine specielle egenskaber, selv om den senere nulstilles.

VÆRTSNAVN: Indstil automatisk til navnet på den aktuelle vært.

HOSTTYPE: Indstil automatisk til en streng, der unikt beskriver den type maskine, på hvilkenbash udfører. Standard er afhængigt af systemet.

LINENO: Hver gang denne parameter henvises, erstatter skallen et decimaltal, der repræsenterer det nuværende sekventielle linjenummer (begynder med 1) inden for et script eller en funktion. Når det ikke er i et script eller en funktion, er værdien substitueret ikke garanteret at være meningsfuld. HvisLINENO er afbrudt, mister den sine specielle egenskaber, selv om den senere nulstilles.

MACHTYPE: Indstil automatisk til en streng, der beskriver systemtypen fuldt udbash udføres i standard GNU cpu-firma-systemet format. Standard er systemafhængig.

OLDPWD: Den tidligere arbejdskatalog som angivet afcd kommando.

OPTARG: Værdien af ​​det sidste alternativ argument behandlet afgetopts builtin kommando.

OPTIND: Indekset for det næste argument, der skal behandles afgetopts builtin kommando.

ostype: Indstil automatisk til en streng, der beskriver operativsystemet, hvorpåbash udfører. Standard er afhængigt af systemet.

PIPESTATUS: En array-variabel, der indeholder en liste over exitstatusværdier fra processerne i den mest for nylig udførte forgrundsrørledning, som kun kan indeholde en enkelt kommando.

PPID: Processens ID for skalens forælder. Denne variabel er læselig.

PWD: Den aktuelle arbejdsmappe som angivet afcd kommando.

TILFÆLDIG: Hver gang denne parameter henvises, genereres et tilfældigt helt tal mellem 0 og 32767. Sekvensen af ​​tilfældige tal kan initialiseres ved at tildele en værdi til TILFÆLDIG. HvisTILFÆLDIG er afbrudt, mister den sine specielle egenskaber, selv om den senere nulstilles.

SVAR: Sæt til linjen for input, der læses afLæs builtin kommando, når der ikke leveres argumenter.

SEKUNDER: Hver gang denne parameter henvises, returneres antallet af sekunder siden shellindkaldelse. Hvis en værdi er tildelt tilSEKUNDER, er værdien returneret ved efterfølgende referencer antallet af sekunder siden tildelingen plus den tildelte værdi. Hvis SEKUNDER er afbrudt, mister den sine specielle egenskaber, selv om den senere nulstilles.

SHELLOPTS: En kolon-adskilt liste over aktiverede shell-indstillinger. Hvert ord i listen er et gyldigt argument for-o mulighed forsæt builtin kommando. De indstillinger, der vises iSHELLOPTS er de rapporteret som på vedsæt -o. Hvis denne variabel er i miljøet, nårbash starter, vil hver shell valgmulighed på listen blive aktiveret, før du læser nogen startfiler. Denne variabel er læselig.

SHLVL: Forøges af en hver gang en forekomst afbash er i gang.

UID: Udvider til brugerens bruger-id, initialiseret ved shell-opstart. Denne variabel er læselig.

Følgende variabler anvendes af skallen. I nogle tilfælde,bash tildeler en standardværdi til en variabel disse tilfælde er noteret.

BASH_ENV: Hvis denne parameter er indstillet, nårbash udfører et shell script, er dets værdi fortolket som et filnavn, der indeholder kommandoer for at initialisere skallen, som i ~ / .Bashrc . Værdien af BASH_ENV underkastes parameterudvidelse, kommandosubstitution og aritmetisk ekspansion, før den fortolkes som et filnavn.STI er ikke vant til at søge efter det resulterende filnavn.

CDPATH: Søgesporet forcd kommando. Dette er en kolon-adskilt liste over mapper, hvor skalen kigger efter destinationsmapper, der er angivet afcd kommando. En prøveværdi er ".: ~: / Usr".

COLUMNS: Anvendes afVælg builtin-kommando for at bestemme terminalbredden ved udskrivning af valglister. Indstil automatisk ved modtagelse af en SIGWINCH.

COMPREPLY: En array variabel, hvorafbash læser de mulige udførelser, der genereres af en skalfunktion påberåbt af den programmerbare færdiggørelsesfacilitet.

FCEDIT: Standard editor forfc builtin kommando.

FIGNORE: En kolon-adskilt liste over suffikser, der skal ignoreres, når filen udføres. Et filnavn hvis suffiks matcher en af ​​posterne iFIGNORE er udelukket fra listen over matchede filnavne. En prøveværdi er ".o: ~".

GLOBIGNORE: En kolonskilt liste over mønstre, der definerer sæt af filnavne, der skal ignoreres ved udvidelse af stinavn. Hvis et filnavn, der matches med et udvidelsesmønster for stienavnet, også matcher et af mønstrene iGLOBIGNORE, den fjernes fra listen over kampe.

HISTCONTROL: Hvis indstillet til en værdi af ignorespace , linjer der begynder med aplads tegn indtastes ikke på historiklisten. Hvis indstillet til en værdi på ignoredups , linjer der matcher den sidste historiklinje, indtastes ikke. En værdi af ignoreboth kombinerer de to muligheder. Hvis unset eller hvis indstillet til en anden værdi end dem ovenfor, gemmes alle linjer, der læses af parseren, på historiklisten, underlagt værdien afHISTIGNORE. Denne variabels funktion erstattes af HISTIGNORE. Den anden og efterfølgende linjer i en kommando med flere linjer er ikke testet og tilføjes til historien uanset værdien afHISTCONTROL.

HISTFILE: Navnet på den fil, hvor kommandobeskrivelsen er gemt. Standardværdien er ~ / .Bash_history . Hvis unset er gemt, gemmes kommandologgen ikke, når en interaktiv shell forlader.

HISTFILESIZE: Det maksimale antal linjer indeholdt i historikfilen. Når denne variabel er tildelt en værdi, afkortes historikfilen, om nødvendigt ikke mere end det antal linjer. Standardværdien er 500. Historikfilen bliver også afkortet til denne størrelse efter at have skrevet det, når en interaktiv shell udløber.

HISTIGNORE: En kolonskilt liste over mønstre, der bruges til at bestemme hvilke kommandolinjer, der skal gemmes på historiklisten. Hvert mønster er forankret i begyndelsen af ​​linjen og skal matche den komplette linje (intet implicit '*'er vedlagt). Hvert mønster testes mod linjen efter den kontrol, der er specificeret afHISTCONTROL anvendes. Ud over de normale skabelon matchende tegn, '&'svarer til den tidligere historiklinje. '&'kan undslippes ved hjælp af et tilbageslag Baggrundsløbet fjernes, før du prøver et match. Den anden og efterfølgende linie i en kommando med flere linjer er ikke testet og tilføjes til historien uanset værdien afHISTIGNORE.

HISTSIZE: Antallet af kommandoer, der skal huskes i kommandolinjen. Standardværdien er 500.

HJEM: Hjemmappen for den aktuelle bruger; standard argument forcd builtin kommando. Værdien af ​​denne variabel bruges også, når du udfører tilde-ekspansion.

HOSTFILE: Indeholder navnet på en fil i samme format som / etc / hosts Det skal læses, når skalen skal udfylde et værtsnavn. Listen over mulige værtsnavn-udfyldelser kan ændres, mens skallen kører; næste gang værtsnavnet fuldføres, efter at værdien er ændret,bash tilføjer indholdet af den nye fil til den eksisterende liste. Hvis HOSTFILE er indstillet, men har ingen værdi,bash forsøger at læse / etc / hosts for at få listen over mulige værtsnavn kompletteringer. HvornårHOSTFILE er afbrudt, er værtsnavnslisten ryddet.

IFS: Det Internal Field Separator bruges til orddeling efter ekspansion og for at dele linjer i ord medLæs builtin kommando. Standardværdien er "''.

IGNOREEOF: Kontrollerer virkningen af ​​en interaktiv skal ved modtagelse af enEOF tegn som eneste input. Hvis angivet, er værdien antallet af på hinanden følgendeEOF tegn, der skal skrives som de første tegn på en indtastningslinje førbash udgange. Hvis variablen eksisterer, men ikke har en numerisk værdi eller har ingen værdi, er standardværdien 10. Hvis den ikke eksisterer,EOF betyder slutningen af ​​input til skallen.

INPUTRC: Filnavnet tilreadline startfil, der overstyrer standard for ~ / .Inputrc .

LANG: Bruges til at bestemme lokalkategorien for enhver kategori, der ikke specifikt er valgt med en variabel, der begynder medLC_.

LC_ALL: Denne variabel overstyrer værdien afLANG og enhver andenLC_ variabel angiver en lokal kategori.

LC_COLLATE: Denne variabel bestemmer den sorteringsrækkefølge, der anvendes, når du sorterer resultaterne af ekspansion af stienavn og bestemmer opførelsen af ​​intervaludtryk, ækvivalensklasser og sorteringssekvenser inden for udvidelse af stienavnet og mønstermatching.

LC_CTYPE: Denne variabel bestemmer fortolkningen af ​​tegn og opførsel af tegnklasser inden for udvidelse af stienavn og mønstermatchning.

LC_MESSAGES: Denne variabel bestemmer den lokal, der bruges til at oversætte dobbeltkodede strenge forud for a$.

LC_NUMERIC: Denne variabel bestemmer den lokale kategori, der anvendes til nummerformatering.

LINES: Anvendes afVælg builtin kommando til at bestemme kolonne længde for udskrivning valglister. Indstil automatisk ved modtagelse af en SIGWINCH.

POST: Hvis denne parameter er indstillet til et filnavn ogMAILPATH variabel er ikke indstilletbashinformerer brugeren om ankomsten af ​​post i den angivne fil.

MailCheck: Angiver, hvor ofte (i sekunder)bash Kontrol af post. Standardindstillingen er 60 sekunder. Når det er på tide at tjekke for post, gør skalen det, før den primære prompte vises. Hvis denne variabel er frakoblet eller indstillet til en værdi, der ikke er et tal, der er større end eller lig med nul, deaktiverer skalen mailkontrol.

MAILPATH: En kolonskilt liste over filnavne, der skal kontrolleres for post. Meddelelsen, der skal udskrives, når mail kommer i en bestemt fil, kan specificeres ved at adskille filnavnet fra meddelelsen med en '?'. Når det bruges i tekstens besked,$_ udvider til navnet på den aktuelle mailfil. Eksempel:

MAILPATH = '/ var / mail / bfox? "Du har mail": ~ / shell-mail? "$ _ Har mail!"'

Bash leverer en standardværdi for denne variabel, men placeringen af ​​de brugerpostfiler, den bruger, er systemafhængig (/ var / mail /$ USER).

OPTERR: Hvis indstillet til værdien 1,bash viser fejlmeddelelser genereret afgetopts builtin kommando.OPTERR initialiseres til 1 hver gang skallen påberåbes eller et skal script udføres.

STI: Søgevej for kommandoer. Det er en kolon-adskilt liste over mapper, hvor skallen leder efter kommandoer. Standardbanen er systemafhængig og indstilles af den administrator, der installererbash. En fælles værdi er "/ usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT: Hvis denne variabel er i miljøet, nårbash starter, skalen kommer ind posix-tilstand før du læser startfilerne, som om--posix indkaldelse mulighed var blevet leveret. Hvis den er indstillet, mens skallen kører,bash gør det muligt for posix-tilstand som om kommandoen sæt -o posix var blevet henrettet.

PROMPT_COMMAND: Hvis angivet, udføres værdien som en kommando forud for udstedelsen af ​​hver primære prompte.

PS1: Værdien af ​​denne parameter udvides og bruges som den primære prompt streng. Standardværdien er " S- v $''.

PS2: Værdien af ​​denne parameter udvides som medPS1 og bruges som den sekundære hurtigstreng. Standard er "> ''.

PS3: Værdien af ​​denne parameter bruges som prompt forVælg kommando.

PS4: Værdien af ​​denne parameter udvides som medPS1, og værdien udskrives før hver kommandobash vises under et udførelsesspor. Den første karakter afPS4 gentages flere gange, som nødvendigt, for at indikere flere niveauer af indirektion. Standard er "+ ''.

TIDSFORMAT: Værdien af ​​denne parameter bruges som en formatstreng, der angiver, hvordan timingoplysninger for rørledninger præfikseret medtid reserveret ord skal vises. Det % tegn introducerer en flugtsekvens, der udvides til en tidsværdi eller anden information. Escape-sekvenserne og deres betydninger er som følger. Bøjlerne angiver valgfrie dele.

  • %%: En bogstavelig%
  • % p l R: Den forløbne tid i sekunder
  • % p l U: Antallet af CPU sekunder brugt i brugermodus
  • % p l S: Antal CPU sekunder brugt i systemtilstand
  • % P: CPU-procenten, beregnet som (% U +% S) /% R

Den valgfrie p er et ciffer, der angiver præcision , antallet af brøkdele efter et decimaltal. En værdi på 0 medfører ingen decimaltal eller en del, der skal udføres. Højst tre steder efter decimaltegnet kan angives; værdier af p større end 3 ændres til 3. Hvis p er ikke angivet, bruges værdien 3.

Den valgfriel angiver et længere format, herunder minutter, af formularen MM m SS . FF s. Værdien af p bestemmer om fraktionen er inkluderet eller ej.

Hvis denne variabel ikke er indstillet,bash virker som om det havde værdien $ ' nreal t% 3lR nuser t% 3lU nsys% 3lS'. Hvis værdien er null, vises ingen timingoplysninger. En efterfølgende ny linje tilføjes, når formatstrengen vises.

TMOUT: Hvis indstillet til en værdi større end nul,TMOUT behandles som standard timeout forLæs indbygget. DetVælg Kommando afslutter, hvis input ikke kommer efterTMOUT sekunder, når input kommer fra en terminal.I en interaktiv skal fortolkes værdien som antallet af sekunder, der venter på input efter udstedelse af primærprompten.Bash Afslutter efter at have ventet i det antal sekunder, hvis indgangen ikke ankommer.

auto_resume: Denne variabel styrer hvordan skallen interagerer med bruger og jobkontrol. Hvis denne variabel er indstillet, behandles enkeltord simple kommandoer uden omdirigeringer som kandidater til genoptagelse af et eksisterende stoppet job. Der er ingen tvetydighed tilladt. Hvis der er mere end ét job, der begynder med den indtastede streng, vælges det sidst tilgængelige arbejde. Det navn af et stoppet job, i denne sammenhæng er kommandolinjen brugt til at starte den. Hvis indstillet til værdien præcis , den leverede streng skal svare til navnet på et stoppet job nøjagtigt; hvis indstillet til substring , den medfølgende streng skal matche en substring af navnet på et stoppet job. Det substring værdi giver funktionalitet analog til%? jobidentifikator. Hvis den er angivet til en anden værdi, skal den medfølgende streng være et præfiks for et stoppet jobnavn; Dette giver funktionalitet analog med% jobidentifikator.

histchars: De to eller tre tegn, der styrer historisk ekspansion og tokenisering. Det første tegn er historieudvidelse tegn, det tegn, der signalerer starten på en historisk ekspansion, normalt '!'. Det andet tegn er hurtig substitution tegn, der bruges som stenografi for at genvinde den tidligere kommando, der er indtastet, og erstatte en streng til en anden i kommandoen. Standard er '^'. Det valgfrie tredje tegn er tegnet, der angiver, at resten af ​​linjen er en kommentar, når den findes som det første tegn af et ord, normalt '#'. Historik kommentar karakter forårsager historisk substitution at blive sprunget over for de resterende ord på linjen. Det medfører ikke nødvendigvis, at shell-parseren behandler resten af ​​linjen som en kommentar.

Arrays

Bash giver endimensionelle array variabler. Enhver variabel kan bruges som en matrix; det erklære builtin vil udtrykkeligt erklære en matrix. Der er ingen maksimal grænse for størrelsen af ​​et array eller krav om, at medlemmerne skal indekseres eller tildeles sammenhængende. Arrayer er indekseret med heltal og er nulbaserede.

Et array oprettes automatisk, hvis nogen variabel er tildelt til at bruge syntaksen navn sænket = værdi . Det sænket behandles som et aritmetisk udtryk, der skal evalueres til et tal større end eller lig med nul. For at udtrykkeligt erklære en matrix skal du brugeerklærer -a navn . erklærer -a navn sænket accepteres også; det sænket ignoreres. Attributter kan specificeres for en array variabel ved hjælp aferklære og Læs kun builtins. Hver attribut gælder for alle medlemmer af en matrix.

Arrays er tildelt til at bruge sammensatte opgaver af formularen navn =(værdi 1 … værdi n ), hvor hver værdi er af formen sænket = snor . Kun snor er påkrævet. Hvis valgfri parentes og abonnement leveres, er dette indeks tildelt; ellers er indekset for elementet tildelt det sidste indeks tildelt af sætningen plus en. Indeksering starter ved nul. Denne syntaks accepteres også aferklære indbygget. Individuelle arrayelementer kan tildeles til at bruge navn sænket = værdi syntaks.

Ethvert element i et array kan refereres ved hjælp af $ { navn sænket }. Bøjlerne er nødvendige for at undgå konflikter med udvidelse af stienavnet. Hvis sænket er@ eller*, ordet udvides til alle medlemmer af navn . Disse abonnementer adskiller sig kun, når ordet vises inden for dobbelt citater. Hvis ordet er dobbeltnoteret, $ { navn *} udvides til et enkelt ord med værdien af ​​hvert array medlem adskilt af den første tegn påIFS special variabel og $ { navn @} udvider hvert element af navn til et særskilt ord. Når der ikke er nogen array medlemmer, $ { navn @} udvider til ingenting. Dette er analog med udvidelsen af ​​de specielle parametre* og@. ${# navn sænket } udvides til længden på $ { navn sænket }. Hvis sænket er* eller@, ekspansionen er antallet af elementer i arrayet. Henvisning af en array-variabel uden et abonnement svarer til referenceelementet nul.

Detfrakoblet builtin bruges til at ødelægge arrays.Omstil navn sænket ødelægger arrayelementet på indekset sænket . Omstil navn , hvor navn er en matrix ellerfrakoblet navn sænket , hvor sænket er* eller@, fjerner hele arrayet.

Deterklære, lokal, ogLæs kun builtins hver accepterer a-en mulighed for at angive en matrix. DetLæs builtin accepterer a-en mulighed for at tildele en liste over ord, der læses fra standardindgangen til en matrix. Detsæt ogerklære indbygger display array værdier på en måde, der gør det muligt for dem at blive genbrugt som opgaver.

Udvidelse

Udvidelsen udføres på kommandolinjen, efter at den er blevet splittet i ord. Der er syv typer ekspansion udført: bøjleudvidelse, tildeudvidelse, parameter og variabel ekspansion, kommandosubstitution, aritmetisk ekspansion, orddeling og udvidelse af stienavnet.

Udvidelsesrækkefølgen er: spændviddeudvidelse, tildeudvidelse, parameter- og variabeludvidelse, aritmetisk ekspansion og kommandosubstitution (udført i venstre til højre), orddeling og udvidelse af stienavn.

På systemer, der kan understøtte det, er der en ekstra udvidelse til rådighed: proces substitution .

Kun spændviddeudvidelse, orddeling og udvidelse af stienavnet kan ændre antallet af ord i ekspansionen; Andre udvidelser udvider et enkelt ord til et enkelt ord. De eneste undtagelser herfra er udvidelserne af "$@"og"${ navn @}'.

Bøjleudvidelse

Bøjleudvidelse er en mekanisme, hvormed vilkårlige strenge kan genereres. Denne mekanisme ligner udvidelse af stienavn , men de genererede filnavne behøver ikke eksistere. Mønstre, der skal udbygges, udformes som en valgfri præambel , efterfulgt af en række kommaseparerede strenge mellem et par seler, efterfulgt af en valgfri efterskrift . Præamblet er præfikset til hver streng indeholdt i bøjlerne, og efterskriftet bliver derefter tilføjet til hver resulterende streng, der udvider venstre mod højre.

Bøjleudvidelser kan være nestede. Resultaterne af hver udvidet streng er ikke sorteret;