Wat is Shell Scripting en waarom zou je het moeten gebruiken?

Wat is Shell Scripting en waarom zou je het moeten gebruiken?

De shell is een programma binnen een Linux- of Unix-besturingssysteem waarmee u opdrachten kunt invoeren voor uitvoering door het systeem. Wanneer een terminalvenster wordt geopend op een Linux-computer, wordt het shell-programma gestart dat een interface presenteert om opdrachten in te voeren. Deze interface staat bekend als de opdrachtregelinterface. Wanneer een opdracht wordt ingevoerd, wordt deze uitgevoerd door de shell en wordt de uitvoer op het scherm weergegeven.





Naast het interactief accepteren en uitvoeren van opdrachten, kan de shell ook opdrachten uitvoeren die in een bestand zijn opgeslagen. Deze wijze van uitvoering staat bekend als: shell-scripting , en in dit artikel behandelen we de basisprincipes van shellscripting .





1. Geschiedenis van de Shell

Beginnend met Unix in de jaren 70, was er een shell-programma genaamd de V6-schaal ontwikkeld door Ken Thomson. Het was een interactieve shell en miste het vermogen om scripts te maken.





Het werd gevolgd door de Bourne Shell in 1977 en blijft vandaag in gebruik als de standaard shell voor de wortel rekening. Deze shell voegde scripting-mogelijkheden toe die door de jaren heen in de praktijk zeer nuttig zijn gebleken.

De verdere ontwikkeling van de schelp in de jaren 80 heeft geleid tot vele populaire schelpvarianten, waarvan de meest populaire de C-Shell en de Korn Shell . Elk van deze shells had zijn eigen syntaxis die in bepaalde gevallen drastisch afweek van de originele shell.



Een van de meest populaire schelpen van vandaag is de Bash Shell . Bash staat voor Bourne-Again-Shell en is een sterk verbeterde variant van de originele Bourne Shell.

verwijder advertenties van kindle fire 7

In dit artikel beschrijven we shellscripting voor de Bash Shell .





2. Een Shell-script uitvoeren

Hoe voer je een shellscript uit? Eenvoudig. Geef het scriptpad gewoon door als argument aan de shell:

Een voorbeeld shellscript:





echo 'hello world'

Voer het als volgt uit:

$ bash hello.sh
# prints
hello world

Opmerking: De shell vereist dat regels worden afgesloten met LF-tekens (Line-Feed). Als u uw shellscript op Windows schrijft en het rechtstreeks op een Linux-systeem probeert uit te voeren, kunt u fouten tegenkomen. Windows gebruikt de CR-LF-combinatie (Carriage-Return-Line-Feed) voor lijnafsluiting. Dit hoeft alleen naar LF te worden geconverteerd. Controleer uw Windows-editor voor manieren om dit te doen.

Er is nog een andere manier om een ​​shellscript direct als commando uit te voeren. Voeg de volgende regel in (de hasjbang declaratie) als de eerste regel van uw shellscript.

Windows 10 geluidspictogram ontbreekt in taakbalk
#!/bin/bash

Met deze wijziging is ons eenvoudige shellscript nu:

#!/bin/bash
echo 'hello world'

Nu moet u het scriptbestand als volgt uitvoerbaar maken:

$ chmod +x hello.sh

Op dit punt kunt u het scriptbestand rechtstreeks uitvoeren zonder dat u expliciet naar de shell hoeft te verwijzen.

$ hello.sh
# prints
hello world

Laten we nu eens kijken naar enkele voordelen van het gebruik van shellscripts.

3. Taakautomatisering

Het eerste voordeel van het gebruik van shellscripts is het automatiseren van vaak uitgevoerde taken. Stel dat u een taak heeft die u elke dag moet uitvoeren. Als u elke dag meerdere opdrachten op uw Linux-systeem moet uitvoeren, kunt u deze opdrachten in een bestand opslaan en het script uitvoeren. Voorbeelden zijn:

  • Archiveer en upload elke dag een bestand of map naar een cloudopslagfaciliteit zoals S3.
  • Comprimeer logbestanden die elke dag groter worden.
  • Haal aandelenkoersen op, analyseer de opgehaalde gegevens en activeer een e-mail of sms wanneer aan bepaalde voorwaarden wordt voldaan (te hoge of te lage prijzen).

4. Meerdere opdrachten combineren

Naast het automatiseren van frequente taken, vindt u het misschien ook voordelig dat u meerdere reeksen opdrachten kunt combineren in één enkele opdracht. Het onthouden van een enkele opdracht is veel eenvoudiger dan meerdere opdrachten, om nog maar te zwijgen van de volgorde waarin ze moeten worden uitgevoerd.

Een voorbeeld is de opstartvolgorde van het Linux-besturingssysteem zelf. Als onderdeel van het opstarten voert het besturingssysteem een ​​aantal opdrachten uit om het systeem in een goede staat te krijgen. Deze commando's zijn eigenlijk shellscripts die leven onder de /enzovoort map. Als je een van deze shellscripts bekijkt, zul je je realiseren hoe ingewikkeld het opstarten van een systeem is, wat je misschien met de hand had moeten uitvoeren als er geen shellscripts waren.

Het volgende is een voorbeeld van een shellscript, /etc/profiel , die elke keer dat een gebruiker inlogt wordt uitgevoerd. Stel je voor dat je deze commando's met de hand typt!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Gemakkelijker te ontwikkelen

Het is mogelijk om dezelfde acties uit te voeren als een shellscript in een regulier programma geschreven in C/C++. Het is echter veel gemakkelijker om een ​​shellscript te schrijven en te debuggen dan een C/C++-programma. Vooral voor systeembeheertaken, waaronder het uitvoeren van externe opdrachten, het maken en verwijderen van bestanden en mappen, het omleiden van uitvoer, enz.

C/C++-programma's zijn beter voor een veel lager bedieningsniveau, zoals het aanroepen van systeemaanroepen, het manipuleren van datastructuren, enz.

6. Transparantie

Omdat het een tekstbestand is, kan een shellscript gemakkelijk worden bekeken om te zien welke acties het uitvoert. De enige manier om te weten wat een programma dat is geschreven in een taal als C/C++ (en gecompileerd tot een uitvoerbaar bestand) doet, is daarentegen of het ervoor kiest om het je te vertellen of dat je toegang hebt tot de broncode. U kunt bijvoorbeeld controleren of een shellscript bestanden verwijdert en als u die bestanden nodig hebt, kunt u ze naar een andere locatie kopiëren.

Het is ook veel gemakkelijker om problemen met shellscripts te diagnosticeren dan met gewone programma's, aangezien u de broncode kunt bekijken. Mislukt dat script omdat er geen map bestaat? U kunt in de scriptcode kijken en de map maken (hoewel een goed opgevoede shellscript deze moet controleren en maken om dergelijke fouten te voorkomen).

7. Draagbaar

TOT shell-script kan worden overgebracht naar andere Unix en Unix-achtige besturingssystemen en worden uitgevoerd (als de shell zelf aanwezig is). Zelfs bij het overbrengen van een shellscript van verschillende architecturen zoals x86, MIPS, Sparc, enz., zijn shellscripts veel draagbaarder dan C/C++-programma's.

De enige manier waarop een C/C++-programma kan worden overgedragen en op een ander systeem kan worden gebruikt, is door de broncode te kopiëren, het programma te bouwen en te proberen het uit te voeren. Zelfs dan werkt het misschien niet zoals verwacht als het architectuurspecifieke code gebruikt.

Nu je een idee hebt wat shell-scripts zijn en hun vele voordelen, zou je ze niet willen gebruiken voor je taken? Welke problemen heb je ondervonden bij het gebruik ervan? Laat het ons weten in de reacties hieronder.

hoe maak je een afbeelding een transparante achtergrond?
Deel Deel Tweeten E-mail 5 tips om uw VirtualBox Linux-machines een boost te geven

Ben je de slechte prestaties van virtuele machines beu? Dit is wat u moet doen om uw VirtualBox-prestaties te verbeteren.

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Linux Bash Shell
Over de auteur Jay Sridhar(17 artikelen gepubliceerd) Meer van Jay Sridhar

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren