Indholdsfortegnelse:
- Hvad er en skal?
- Historie og en roundup af skaller
- Scripting
- Et kig under hætten på Unix / Linux kommandolinjen
Kommandolinjen på Unix- og Linux-systemer er allerede meget kraftfuld, men skaller er et endnu mere kraftfuldt værktøj, end det møder øjet. Du kan tilpasse dem og skifte dem til dit hjerte indhold, så længe du ved hvordan.
Hvad er en skal?
Næsten hver Unix- og Linux-manual har standarddiagrammet over en skal, der ombrydes rundt om operativsystemet, der ligner en slags candy bar. Skallen er virkelig intet andet end en grænseflade mellem operativsystemet, inklusive kernen, filsystemet og de forskellige systemopkald og brugeren. I mange år var det den eneste interaktive brugergrænseflade, før grafiske brugergrænseflader blev almindelige i 1980'erne. Grafiske brugergrænseflader kan også betragtes som en type shell, da de tjener mange af de samme funktioner: lancering af programmer, konfiguration af systemet og styring af filer.
Disse ydmyge tekstbaserede grænseflader har en overraskende mængde kraft. For det første er de fulde programmeringssprog. Før udseendet af endnu mere kraftfulde scripting-sprog som Python, var shell-scripts ideelle til at skrive programmer, der ikke nødvendigvis har brug for kraften fra C. De er stadig nyttige til at automatisere systemopgaver og til hurtig prototype.
De har også en række funktioner, der gør det lettere at arbejde med og finde filer. En af de mest anvendte er "wildcarding" eller "globbing." Næsten alle Unix- og Linux-brugere er bekendt med wild * -kortet, der matcher ethvert tegn. Dette er faktisk skalets job. Forskellige skaller har endnu mere kraftfulde muligheder.
Et af Unixs særpræg er evnen til at omdirigere programinput og output. Skallen implementerer denne funktionalitet.
Skallen er bare et andet program, så det er muligt for enhver programmør med de rigtige færdigheder at oprette et. Der har været flere større skaller, der er vokset frem gennem årene.
Historie og en roundup af skaller
Selvom der var flere Unix-skaller i de tidlige dage af operativsystemet, var den første, der fik større anerkendelse uden for Bell Labs, Bourne Shell, opkaldt efter Stephen R. Bourne. Shells vigtigste innovation var, at den understøttede funktioner til struktureret programmering, hvilket gjorde det muligt for første gang at bruge skallen som et rigtigt programmeringssprog. Det er så uundværligt, at alle moderne Unix- og Linux-versioner stadig bruger det, skønt det normalt er en af de nyere skaller, der emulerer Bourne-skallen.
Den næste større skal var C Shell, der ofte forkortes som "csh." Denne skal blev udviklet ved UC Berkeley og blev en vigtig komponent i BSD-smagen af Unix. Som navnet antyder er dens syntaks designet til at ligne C-programmeringssprog, men det var virkelig designet til interaktiv brug.
Det inkluderede en historikmekanisme, der gjorde det muligt for brugere at gå tilbage og gentage alle kommandoer, de udstedte tidligere, uden at skulle indtaste en hel linje og forbedret jobkontrol, hvilket gjorde det at køre flere opgaver lettere. (Husk, at dette var en tid, hvor de fleste stadig brugte tekstbaserede terminaler.)
Den næste større skal var Korn Shell, der også kom ud af Bell Labs. Skallen blev forresten opkaldt efter David Korn, ikke bandet. Korn-skalens vigtigste innovation er introduktionen af kommandolinjebearbejdning, der udvider historikfunktionaliteten yderligere. Brugere kan gå tilbage og redigere de kommandoer, de har skrevet, vha. Kommandoer, der ligner enten vi- eller Emacs-redigeringsprogrammet.
Af de store skaller er Bourne Again Shell eller bash den mest populære siden introduktionen i slutningen af 80'erne. Denne skal, der er udviklet som en del af GNU-projektet, inkorporerer nyskabelserne i C- og Korn-skaller, mens den opretholder kompatibilitet med Bourne-skallen, og dermed navnet. Det er den "standard" shell på de fleste Linux-distributioner.
Z Shell (zsh), der først blev frigivet i 1990, er en kommandolinjebrugeres drøm. Ikke kun har de fleste af de andre store funktioner, som de andre skaller har, det er sindssygt tilpasses med masser af kraftige funktioner. En af de mest kraftfulde er rekursiv klodning, der giver brugerne mulighed for at matche filnavne i undermapper, når de udsteder kommandoer i stedet for filer i den aktuelle arbejdsmappe. Virkelig avancerede brugere kan også tilpasse kompletteringsindstillingerne, så de matcher filer uden at skulle udtaste dem helt. Og for de fedtfattede maskinskrivere kan det også rette din stavemåde. Denne skal er så avanceret, at dens manuelle side er opdelt i flere meget lange sektioner.
Scripting
Som tidligere nævnt er skaller ikke kun kommandolinjegrænseflader, men kraftfulde programmeringssprog. Det fine med shell-scripting er, at du kan bruge det samme sprog i både regelmæssig interaktiv brug såvel som i scripts, hvilket gør læringskurven meget fladere. Moderne skaller inkluderer alle de sædvanlige programmeringssprogfunktioner, herunder flowkontrol, funktioner og variabler. Et par af dem har endda avancerede datastrukturer som assosiative arrays.
På trods af deres magt har programmering i skaller et par faldgruber. Det største problem er, at det er for let at skrive scripts, der afhænger af et program, der muligvis ikke er på et andet system, eller som afhænger af en bestemt smag af Unix eller Linux. Derfor er shell-scripts bedst egnede til programmer, du ved, kun skal køres på et system. Hvis du prøver at bygge noget bærbart og ikke ønsker at skrive et C-program, er dit bedste alternativ at skrive på et andet scriptingsprog som Perl eller Python.
Et kig under hætten på Unix / Linux kommandolinjen
Der er mere magt, der lurer under overfladen på din Unix / Linux-kommandolinje. Denne artikel inspirerer dig muligvis til at kigge under hætten på dit yndlingsskal for at se, hvad du virkelig kan gøre. Hvis du ønsker at komme ind på shell-scripting, kan du tjekke bøgerne Unix Power Tools og Learning the Bash Shell. Stephen R. Bournes originale papir på hans shell fungerer også som en god introduktion til verdenen af shell-scripting, selvom det er gammelt.