Unix / Linux Shells 101

Schrijver: Eugene Taylor
Datum Van Creatie: 11 Augustus 2021
Updatedatum: 22 Juni- 2024
Anonim
Unix Shell Crash Course || Unix Shell Tutorial for Beginners
Video: Unix Shell Crash Course || Unix Shell Tutorial for Beginners

Inhoud



Bron: Tomasz Bidermann / Dreamstime.com

Afhaal:

Unix- en Linux-shells zijn zeer krachtig en uiterst aanpasbaar.

De opdrachtregel op Unix- en Linux-systemen is al erg krachtig, maar shells zijn een nog krachtiger hulpmiddel dan je zou verwachten. Je kunt ze naar wens aanpassen en naar hartelust uitschakelen, als je maar weet hoe.

Wat is een schelp?

Bijna elke Unix- en Linux-handleiding heeft het standaarddiagram van een shell-verpakking rond het besturingssysteem, die lijkt op een soort candybar. De shell is eigenlijk niets anders dan een interface tussen het besturingssysteem, inclusief de kernel, het bestandssysteem en de verschillende systeemaanroepen en de gebruiker. Het was jarenlang de enige interactieve gebruikersinterface voordat grafische gebruikersinterfaces in de jaren tachtig gangbaar werden. Grafische gebruikersinterfaces kunnen ook als een soort shell worden beschouwd, omdat ze veel van dezelfde functies hebben: programma's starten, het systeem configureren en bestanden beheren.

Deze bescheiden gebaseerde interfaces hebben een verrassende hoeveelheid kracht. Ten eerste zijn het volwaardige programmeertalen. Voordat er nog krachtigere scripttalen als Python verschenen, waren shell-scripts ideaal voor het schrijven van programma's die niet noodzakelijk de kracht van C nodig hadden. Ze zijn nog steeds nuttig voor het automatiseren van systeemtaken en voor snelle prototyping.

Ze hebben ook een aantal functies die het werken met en het vinden van bestanden eenvoudiger maken. Een van de meest gebruikte is "wildcarding" of "globbing". Bijna alle Unix- en Linux-gebruikers zijn bekend met het jokerteken "*" voor elk teken. Dit is eigenlijk de taak van de shell. Verschillende shells hebben nog krachtigere opties.

Een van Unix's onderscheidende kenmerken is de mogelijkheid om programma-invoer en -uitvoer om te leiden. De shell implementeert deze functionaliteit.

De shell is gewoon een ander programma, dus het is mogelijk voor elke programmeur met de juiste vaardigheden om er een te maken. Er zijn in de loop der jaren verschillende grote granaten ontstaan.

Geschiedenis en een overzicht van schelpen

Hoewel er in de begindagen van het besturingssysteem verschillende Unix-shells waren, was de eerste die buiten Bell Labs grote erkenning kreeg de Bourne Shell, genoemd naar Stephen R. Bourne. De belangrijkste innovatie van shells was dat het functies voor gestructureerd programmeren ondersteunde, waardoor het voor het eerst mogelijk was om de shell als een echte programmeertaal te gebruiken. Het is zo onmisbaar dat alle moderne Unix- en Linux-versies het nog steeds gebruiken, hoewel het meestal een van de nieuwere shells is die de Bourne-shell emuleren.

De volgende grote schaal was de C-schaal, gewoonlijk afgekort als "csh". Deze schaal werd ontwikkeld bij UC Berkeley en werd een belangrijk onderdeel van de BSD-smaak van Unix. Zoals de naam al doet vermoeden, is de syntaxis ontworpen om te lijken op de programmeertaal C, maar het is echt ontworpen voor interactief gebruik.

Het omvatte een geschiedenismechanisme waarmee gebruikers terug konden gaan en alle eerder gegeven commando's konden herhalen zonder een hele regel opnieuw te hoeven typen en verbeterde taakcontrole, waardoor het uitvoeren van meerdere taken gemakkelijker werd. (Denk eraan, dit was een tijd waarin de meeste mensen nog steeds op terminals gebaseerde terminals gebruikten.)

De volgende grote shell was de Korn Shell, die ook uit Bell Labs kwam. De schaal is trouwens vernoemd naar David Korn, niet de band. De belangrijkste innovatie van de Korn-shell is de introductie van opdrachtregelbewerking, waardoor de geschiedenisfunctionaliteit nog verder wordt uitgebreid. Gebruikers kunnen teruggaan en de opdrachten bewerken die ze hebben getypt met behulp van opdrachten die vergelijkbaar zijn met de vi- of Emacs-editors.

Van de belangrijkste shells is de Bourne Again Shell of bash het populairst sinds de introductie in de late jaren 80. Deze shell, ontwikkeld als onderdeel van het GNU-project, bevat de innovaties van de C- en Korn-shells terwijl de compatibiliteit met de Bourne-shell, vandaar de naam, behouden blijft. Het is de "standaard" shell op de meeste Linux-distributies.

De Z Shell (zsh), voor het eerst uitgebracht in 1990, is de droom van een opdrachtregelgebruiker. Het heeft niet alleen de meeste andere belangrijke functies die de andere shells hebben, het is waanzinnig aanpasbaar met veel krachtige functies. Een van de krachtigste is recursieve globbing, waarmee gebruikers bestandsnamen in submappen kunnen matchen bij het uitvoeren van opdrachten in plaats van bestanden in de huidige werkmap. Zeer geavanceerde gebruikers kunnen ook de voltooiingsopties aanpassen en bestanden matchen zonder ze volledig te hoeven typen. En voor de typisten met dikke vingers, kan het ook uw spelling corrigeren. Deze shell is zo geavanceerd dat de handleidingpagina is opgedeeld in verschillende, zeer lange secties.

Scripting

Zoals eerder vermeld, zijn shells niet alleen opdrachtregelinterfaces, maar krachtige programmeertalen. Het mooie van shell scripting is dat je dezelfde taal kunt gebruiken in zowel regelmatig interactief gebruik als in scripts, waardoor de leercurve veel platter is. Moderne shells omvatten alle gebruikelijke programmeertaalfuncties, inclusief stroomregeling, functies en variabelen. Sommigen van hen hebben zelfs geavanceerde gegevensstructuren zoals associatieve arrays.

Ondanks hun kracht heeft programmeren in shells enkele valkuilen. Het grootste probleem is dat het te gemakkelijk is om scripts te schrijven die afhankelijk zijn van een programma dat mogelijk niet op een ander systeem staat, of dat afhankelijk is van een bepaalde smaak van Unix of Linux. Daarom zijn shell-scripts het meest geschikt voor programma's waarvan u weet dat ze slechts op één systeem worden uitgevoerd. Als je iets draagbaars probeert te bouwen en geen C-programma wilt schrijven, kun je het beste in een andere scripttaal schrijven, zoals Perl of Python.

Een kijkje onder de motorkap van de Unix / Linux-opdrachtregel

Er is meer kracht op de loer onder het oppervlak van uw Unix / Linux-opdrachtregel. Dit artikel kan je inspireren om een ​​kijkje te nemen onder de motorkap van je favoriete shell om te zien wat je echt kunt doen. Als je meer wilt weten over shell scripting, kun je de boeken van Unix Power Tools en Learning the Bash Shell bekijken. Het originele papier van Stephen R. Bournes op zijn schaal dient ook als een goede introductie in de wereld van shell-scripting, zelfs als deze oud is.