Shell (informatica): verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Regel 4:
 
In Windows is er geen scheiding tussen de terminalemulator en de shell. Onder de meeste [[Microsoft Windows]]versies kunnen zowel de terminalemulator als de bijbehorende shell worden benaderd door het programma ''cmd'' of ''command'' te starten. Deze shell is ongeveer gelijk aan de shell in [[DOS (besturingssysteem)|DOS]] die COMMAND.COM heet. Onder [[Unix]] (en daarmee [[Linux]]) is die scheiding er wel en kunnen verschillende shells worden gebruikt op dezelfde terminal(emulator). Bekende shells onder UNIX zijn [[sh]], [[csh]], [[ksh]] en [[bash]].
 
== Shellscripts ==
Shellscripts zijn niets meer dan achter elkaar uitgevoerde commando's. In Microsoft Windows worden deze shellscripts dan ook '[[batch]]bestanden' genoemd. Een shellscript wordt regel voor regel uitgevoerd door de [[interpreter]] (in dit geval de shell). Een voorbeeld van een shellscript is de volgende alias:
 
alias worldwritable='for i in *; do echo "Checking ./$i" >&2 && find $i -perm -2 -type p -ls 2>/dev/null; done'
 
Met dit shellscript kan gezocht worden naar bestanden die beschrijfbaar zijn voor iedereen. Dit wordt in een grafisch aantrekkelijke interface gegoten. Dit shellscript kan eenvoudiger gelezen worden indien er wat newlines zouden zijn toegevoegd. Dan wordt ook duidelijk dat deze regel slechts een opeenvolging van commando's is:
 
----
 
for i in *
do
echo "Checking ./$i" >&2
find $i -perm -2 -type p -ls 2>[[/dev/null]]
done
 
Bovenstaande is een stuk duidelijker te lezen en onthult dat dit shellscript slechts een aantal commando's achter elkaar uitvoert:
 
----
 
for i in *
do
('for' is een zogenaamde [[builtin]]; een commando dat niet door een extern programma, maar door de shell zelf wordt uitgevoerd. Dit bevordert de snelheid van de uitvoering.) Voer het volgende stuk code uit voor ieder bestand in de huidige directory (en sla voor iedere [[iteratie]] de bestandsnaam op in de [[variabele (informatica)|variabele]] genaamd 'i').
 
----
 
echo "Checking ./$i" >&2
Vertel de gebruiker wat we momenteel doen (de inhoud van de variabele genaamd '$i').
 
----
 
find $i -perm -2 -type p -ls 2>/dev/null
Roep het eigenlijke programma 'find' aan met als argument het huidige bestand '$i' en nog wat [[parameters]].
 
----
 
done
Beëindig de 'for'-loop.
 
== Aanverwante onderwerpen ==