Als we een groot besturingssysteem gebruiken, hebben we indirect interactie met de schelp . Terwijl we Ubuntu, Linux Mint of een andere Linux-distributie draaien, communiceren we met de shell door de terminal te gebruiken. In dit artikel bespreken we Linux-shells en shell-scripting, dus voordat we shell-scripting begrijpen, moeten we vertrouwd raken met de volgende terminologieën:
- Kernel
- Schelp
- Terminal
Inhoudsopgave
- Wat is Kernel?
- Wat is Shell?
- Commandoregelshell
- Grafische schelpen
- Wat is een terminal?
- Shell-scripting
Wat is Kernel?
De kernel is een computerprogramma dat de kern vormt van het besturingssysteem van een computer, met volledige controle over alles in het systeem. Het beheert de volgende bronnen van het Linux-systeem:
- Bestandsbeheer
- Procesmanagement
- I/O-beheer
- Geheugen management
- Apparaatbeheer enz.
Er wordt vaak ten onrechte beweerd dat Linus Torvalds het Linux-besturingssysteem heeft ontwikkeld, maar eigenlijk is hij alleen verantwoordelijk voor de ontwikkeling van de Linux-kernel.
Compleet Linux-systeem = Kernel + GNU systeemhulpprogramma's en bibliotheken + andere beheerscripts + installatiescripts.
Wat is Shell?
Een shell is een speciaal gebruikersprogramma dat de gebruiker een interface biedt om besturingssysteemservices te gebruiken. Shell accepteert voor mensen leesbare opdrachten van gebruikers en zet deze om in iets dat de kernel kan begrijpen. Het is een opdrachttaalinterpreter die opdrachten uitvoert die worden gelezen van invoerapparaten zoals toetsenborden of uit bestanden. De shell wordt gestart wanneer de gebruiker inlogt of de terminal start.
binair zoekalgoritme

Linux-shell
Shell wordt grofweg in twee categorieën ingedeeld:
- Commandoregelshell
- Grafische schaal
Commandoregelshell
Shell is toegankelijk voor gebruikers via een opdrachtregelinterface. Er is een speciaal programma genaamd Terminal in Linux/macOS, of Command Prompt in Windows OS, beschikbaar om voor mensen leesbare commando's in te typen, zoals cat, ls enz., en vervolgens wordt het uitgevoerd. Het resultaat wordt vervolgens op de terminal aan de gebruiker weergegeven. Een terminal in het Ubuntu 16.4-systeem ziet er als volgt uit:

Linux-opdrachtregel
In de bovenstaande schermafbeelding ls commando met -l optie wordt uitgevoerd. Het zal alle bestanden in de huidige werkmap weergeven in een lange lijstindeling.
Werken met een opdrachtregelshell is een beetje moeilijk voor beginners, omdat het moeilijk is om zoveel opdrachten te onthouden. Het is erg krachtig; het stelt gebruikers in staat opdrachten in een bestand op te slaan en deze samen uit te voeren. Op deze manier kan elke repetitieve taak eenvoudig worden geautomatiseerd. Deze bestanden worden in Windows meestal batchbestanden genoemd Schelp Scripts in Linux/macOS-systemen.
Grafische schelpen
Grafische shells bieden middelen voor het manipuleren van programma's op basis van de grafische gebruikersinterface (GUI), door bewerkingen mogelijk te maken zoals het openen, sluiten, verplaatsen en vergroten of verkleinen van vensters, en door het wisselen van de focus tussen vensters. Window OS of Ubuntu OS kan worden beschouwd als een goed voorbeeld dat de gebruiker een GUI biedt voor interactie met het programma. Gebruikers hoeven niet voor elke actie opdrachten in te typen. Een typische GUI in het Ubuntu-systeem –

GUI-shell
roep een js-functie aan vanuit html
Er zijn verschillende shells beschikbaar voor Linux-systemen zoals –
- BASH (Bourne Again SHell) – Het is de meest gebruikte shell in Linux-systemen. Het wordt gebruikt als standaard login-shell in Linux-systemen en in macOS. Het kan ook op Windows OS worden geïnstalleerd.
- CSH (C SHell) – De syntaxis en het gebruik van de C-shell lijken sterk op de programmeertaal C.
- KSH (Korn SHell) - De Korn Shell was ook de basis voor de POSIX Shell-standaardspecificaties enz.
Elke shell doet hetzelfde werk, maar begrijpt verschillende commando's en biedt verschillende ingebouwde functies.
Wat is een terminal?
Een programma dat verantwoordelijk is voor het bieden van een interface aan een gebruiker zodat hij/zij toegang heeft tot de shell. Het stelt gebruikers in principe in staat opdrachten in te voeren en de uitvoer van die opdrachten in een op tekst gebaseerde interface te bekijken. Grote scripts die zijn geschreven om complexe taken te automatiseren en uit te voeren, worden in de terminal uitgevoerd.
Om toegang te krijgen tot de terminal, zoekt u eenvoudigweg in het zoekvak van Terminal en dubbelklikt u erop.
geopende terminal
Hier kun je zien hoe de terminal eruit ziet van Red Hat Linux.
terminal
Shell-scripting
Meestal zijn shells interactief, wat betekent dat ze opdrachten als invoer van gebruikers accepteren en uitvoeren. Soms willen we echter routinematig een aantal opdrachten uitvoeren, dus moeten we elke keer alle opdrachten in de terminal typen.
Python tupel gesorteerd
Omdat een shell ook commando's als invoer uit een bestand kan nemen, kunnen we deze commando's in een bestand schrijven en ze in de shell uitvoeren om dit repetitieve werk te voorkomen. Deze bestanden worden genoemd Shell-scripts of Shell-programma's . Shell-scripts zijn vergelijkbaar met het batchbestand in MS-DOS. Elk shellscript wordt opgeslagen met `.sh` bestandsextensie, bijvoorbeeld mijnscript.sh.
Een shellscript heeft syntaxis net als elke andere programmeertaal. Als je enige ervaring hebt met een programmeertaal zoals Python, C/C++ enz. Het zou heel gemakkelijk zijn om ermee aan de slag te gaan.
Een shellscript bestaat uit de volgende elementen:
overwinteren dialect
- Shell-trefwoorden – if, else, break etc.
- Shell-opdrachten – cd, ls, echo, pwd, touch etc.
- Functies
- Controlestroom – als..dan..anders, behuizings- en shell-lussen enz.
Waarom hebben we shellscripts nodig?
Er zijn veel redenen om shellscripts te schrijven:
- Om repetitief werk en automatisering te voorkomen
- Systeembeheerders gebruiken shell-scripting voor routinematige back-ups.
- Systeembewaking
- Nieuwe functionaliteit toevoegen aan de shell etc.
Enkele voordelen van shellscripts
- De opdracht en syntaxis zijn exact dezelfde als die welke rechtstreeks op de opdrachtregel worden ingevoerd, zodat programmeurs niet naar een geheel andere syntaxis hoeven over te schakelen
- Het schrijven van shellscripts gaat veel sneller
- Snelle start
- Interactieve foutopsporing enz.
Enkele nadelen van shellscripts
- Gevoelig voor kostbare fouten, kan een enkele fout de opdracht veranderen, wat schadelijk kan zijn.
- Trage uitvoeringssnelheid
- Ontwerpfouten binnen de syntaxis of implementatie van de taal
- Niet goed geschikt voor grote en complexe taken
- Bied een minimale datastructuur, in tegenstelling tot andere scripttalen. enz.
Eenvoudige demo van shell-scripting met Bash Shell
Als je op een terminal werkt, doorloop je iets diep in mappen. Om vervolgens een paar mappen in het pad te komen, moeten we een opdracht als deze uitvoeren, zoals hieronder weergegeven, om naar de Python-map te gaan:

ga naar de python-map:
Het is behoorlijk frustrerend, dus waarom kunnen we niet een hulpprogramma hebben waarin we alleen de naam van de map hoeven te typen en daar direct naartoe kunnen springen zonder de opdracht uit te voeren cd../ commando steeds opnieuw. Sla het script op als spring.sh
bashen # !/bin/bash # A simple bash script to move up to desired directory level directly function jump() { # original value of Internal Field Separator OLDIFS=$IFS # setting field separator to '/' IFS=/ # converting working path into array of directories in path # eg. /my/path/is/like/this # into [, my, path, is, like, this] path_arr=($PWD) # setting IFS to original value IFS=$OLDIFS local pos=-1 # ${path_arr[@]} gives all the values in path_arr for dir in '${path_arr[@]}' do # find the number of directories to move up to # reach at target directory pos=$[$pos+1] if [ '' = '$dir' ];then # length of the path_arr dir_in_path=${#path_arr[@]} #current working directory cwd=$PWD limit=$[$dir_in_path-$pos-1] for ((i=0; i; i++)) do cwd=$cwd/.. done cd $cwd break fi done }>
Voorlopig kunnen we ons shellscript niet uitvoeren omdat het geen rechten heeft. We moeten het uitvoerbaar maken door de volgende opdracht te typen:
$ chmod +x pad/naar/ons/bestand/jump.sh
Om dit bij elke terminalsessie beschikbaar te maken, moeten we dit invoeren .bashrc bestand.
.bashrc is een shellscript dat Bash shell uitvoert wanneer het interactief wordt gestart. Het doel van een .bashrc-bestand is om een plaats te bieden waar u variabelen, functies en aliassen kunt instellen, onze prompt kunt definiëren en andere instellingen kunt definiëren die we willen gebruiken wanneer we een nieuw terminalvenster openen.
Open nu de terminal en typ het volgende commando:
mb versus gb
$ echobron ~/pad/naar/onze/bestand/jump.sh>> ~/.bashrc
Open nu uw terminal en probeer de nieuwe sprongfunctionaliteit uit door de volgende opdracht te typen:
$ spring mapnaam
net als de onderstaande schermafbeelding:

spring mapnaam
Conclusie
In dit artikel leerden we over de essentiële onderdelen van Linux-systemen: de kernel, die alles bestuurt, de shell, waarmee we met het besturingssysteem kunnen communiceren, en de terminal, onze interface om opdrachten te geven. We verkenden opdrachtregel- en grafische shells, zoals BASH, en begrepen dat de terminal de plek is waar we onze opdrachten typen. Het artikel introduceerde shell-scripting, een manier om taken te automatiseren met behulp van eenvoudige scripts, en besprak de voor- en nadelen van het gebruik ervan. Een praktisch voorbeeld demonstreerde het maken van een script voor snelle directory-navigatie. Ten slotte zagen we hoe we het script konden laten werken en toegankelijk konden maken in elke terminalsessie. Dit artikel is een beginnersvriendelijke gids voor het begrijpen en gebruiken van Linux-shells en shell-scripting. Linux is een goede taal, het is geschreven in Linux-taal