Innholdsfortegnelse:
- Hva er et skall?
- History and a Roundup of Shells
- scripting
- En titt under kommandolinjen til Unix / Linux
Kommandolinjen på Unix og Linux-systemer er allerede veldig kraftig, men skjell er et enda kraftigere verktøy enn det som møter øyet. Du kan tilpasse dem og bytte dem ut til ditt hjertes innhold, så lenge du vet hvordan.
Hva er et skall?
Nesten alle Unix- og Linux-manualer har standardskjemaet over et skall som vikles rundt operativsystemet, og ligner en slags godteribar. Skallet er egentlig ikke annet enn et grensesnitt mellom operativsystemet, inkludert kjernen, filsystemet og de forskjellige systemanropene og brukeren. I mange år var det det eneste interaktive brukergrensesnittet før grafiske brukergrensesnitt ble vanlig på 1980-tallet. Grafiske brukergrensesnitt kan også betraktes som en type skall, ettersom de tjener mange av de samme funksjonene: å starte programmer, konfigurere systemet og administrere filer.
Disse ydmyke tekstbaserte grensesnittene har en overraskende mengde kraft. For det første er de fullverdige programmeringsspråk. Før utseendet til enda kraftigere skriftspråk som Python, var shell-skript ideelt for å skrive programmer som ikke nødvendigvis trenger kraften fra C. De er fremdeles nyttige for å automatisere systemoppgaver og for hurtig prototypering.
De har også en rekke funksjoner som gjør det lettere å jobbe med og finne filer. En av de mest brukte er "wildcarding" eller "globbing." Nesten alle Unix- og Linux-brukere er kjent med jokertegnet "*" for å matche enhver karakter. Dette er faktisk skallets jobb. Ulike skjell har enda kraftigere alternativer.
Et av Unix særegne funksjoner er muligheten til å omdirigere programinndata og -utgang. Skallet implementerer denne funksjonaliteten.
Skallet er bare et annet program, så det er mulig for enhver programmerer med de rette ferdighetene å lage et. Det har vært flere store skjell som har dukket opp gjennom årene.
History and a Roundup of Shells
Selv om det var flere Unix-skjell i de tidlige dagene av operativsystemet, var den første som fikk stor anerkjennelse utenfor Bell Labs Bourne Shell, oppkalt etter Stephen R. Bourne. Skallets viktigste nyskapning var at det støttet funksjoner for strukturert programmering, noe som gjorde det mulig for første gang å bruke skallet som et reelt programmeringsspråk. Det er så uunnværlig at alle moderne Unix- og Linux-versjoner fremdeles bruker den, selv om det vanligvis er en av de nyere skjellene som etterligner Bourne-skallet.
Det neste større skallet var C Shell, ofte forkortet som "csh." Dette skallet ble utviklet ved UC Berkeley, og ble en viktig del av BSD-smaken til Unix. Som navnet antyder, er syntaks designet for å ligne C-programmeringsspråket, men det var virkelig designet for interaktiv bruk.
Den inkluderte en historikkmekanisme som gjorde det mulig for brukere å gå tilbake og gjenta alle kommandoer de utstedte tidligere uten å måtte skrive inn en hel linje og forbedret jobbkontroll, noe som gjorde det å gjøre flere oppgaver enklere. (Husk at dette var en tid da de fleste fortsatt brukte tekstbaserte terminaler.)
Det neste store skallet var Korn Shell, som også kom ut fra Bell Labs. Skallet ble forresten oppkalt etter David Korn, ikke bandet. Korn-skallets viktigste nyskapning er introduksjonen av kommandolinjebehandling, og utvider historikkfunksjonaliteten ytterligere. Brukere kan gå tilbake og redigere kommandoene de har skrevet ved å bruke kommandoer som ligner enten vi- eller Emacs-redaksjonen.
Av de største skjellene er Bourne Again Shell, eller bash, den mest populære siden introduksjonen på slutten av 80-tallet. Dette skallet, utviklet som en del av GNU-prosjektet, inkorporerer innovasjonene i C- og Korn-skjellene, samtidig som de opprettholder kompatibilitet med Bourne-skallet, derav navnet. Det er det "vanlige" skallet på de fleste Linux-distribusjoner.
Z Shell (zsh), først utgitt i 1990, er en drøm om en kommandolinje. Ikke bare har den de fleste av de andre hovedfunksjonene som de andre skjellene har, den er sinnssykt tilpassbar med mange kraftige funksjoner. Noe av det kraftigste er rekursiv globbing, som lar brukere samsvare med filnavn i underkataloger når de utsteder kommandoer i stedet for filer i den gjeldende arbeidskatalogen. Virkelig avanserte brukere kan også tilpasse kompletteringsalternativene, matche filer uten å måtte skrive dem ut fullstendig. Og for de fetfingrede maskinskriverne kan det også rette stavemåten din. Dette skallet er så avansert, den manuelle siden har blitt delt inn i flere veldig lange seksjoner.
scripting
Som tidligere nevnt er skjell ikke bare kommandolinjegrensesnitt, men kraftige programmeringsspråk. Det fine med shell-scripting er at du kan bruke det samme språket i både vanlig interaktiv bruk og i skript, noe som gjør læringskurven mye flatere. Moderne skall inkluderer alle de vanlige programmeringsspråkfunksjonene, inkludert flytkontroll, funksjoner og variabler. Noen få av dem har til og med avanserte datastrukturer som assosiative matriser.
Til tross for deres kraft, har programmering i skjell noen få fallgruver. Det største problemet er at det er for enkelt å skrive skript som er avhengig av et program som kanskje ikke er på et annet system, eller som avhenger av en spesiell smak av Unix eller Linux. Derfor egner shell-skripter seg best for programmer du vet bare skal kjøres på ett system. Hvis du prøver å bygge noe bærbart og ikke ønsker å skrive et C-program, er det beste alternativet å skrive på et annet skriptspråk som Perl eller Python.
En titt under kommandolinjen til Unix / Linux
Det lurer mer kraft under overflaten på Unix / Linux-kommandolinjen. Denne artikkelen kan inspirere deg til å ta en titt under panseret på favorittskjellet ditt for å se hva du virkelig kan gjøre. Hvis du ønsker å komme inn på shell-scripting, kan det være lurt å sjekke ut bøkene Unix Power Tools and Learning the Bash Shell. Stephen R. Bournes originalartikkel på skallet hans fungerer også som en god introduksjon til verdenen av shell-scripting, selv om det er gammelt.