BashStarter: verschil tussen versies

Uit LinuxMintNL WiKi
Ga naar: navigatie, zoeken
(Nieuw)
 
(zie ook)
 
(4 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 31: Regel 31:
 
== Maken ==
 
== Maken ==
 
Maak met '''fe''' (je <u>'''f'''</u>avoriete <u>'''e'''</u>ditor) b.v. gedit of tunar.
 
Maak met '''fe''' (je <u>'''f'''</u>avoriete <u>'''e'''</u>ditor) b.v. gedit of tunar.
:1. sudo '''fe''' 'naam bestand', b.v. sudo gedit /mijndirectory/Mijnbestand
+
:1. sudo /'''fe'''/'naam bestand', b.v. sudo gedit /mijndirectory/Mijnbestand
 
:Met deze commandoregel opent ''gedit'' de file 'Mijnbestand in de directory 'mijndirectory'.
 
:Met deze commandoregel opent ''gedit'' de file 'Mijnbestand in de directory 'mijndirectory'.
 
Als het bestand niet bestaat wordt het hiermee gemaakt.
 
Als het bestand niet bestaat wordt het hiermee gemaakt.
 
:2. Bewerken
 
:2. Bewerken
 +
:De gegevens die nodig zijn om het programma te starten.
 
Daarna
 
Daarna
 
:3. Opslaan
 
:3. Opslaan
Regel 40: Regel 41:
 
Startbaar maken
 
Startbaar maken
 
:5. chmod 755 Mijnbestand
 
:5. chmod 755 Mijnbestand
:Met chmod wordt de toegang tot de file geregeld waarmee kan worden aangegeven wie wel en niet van de file gebruik kunnen maken.  
+
Met chmod worden de toegangsrechten voor het bestand geregeld waarmee kan worden aangegeven wie wel en niet van de file gebruik kunnen maken.  
 
:Het nummer "755" zorgt er voor dat de eigenaar lees, schrijf en uitvoer rechten heeft en alle anderen kunnen alleen lezen en uitvoeren. Met "700" is het file prive en helemaal afgesloten voor anderen.
 
:Het nummer "755" zorgt er voor dat de eigenaar lees, schrijf en uitvoer rechten heeft en alle anderen kunnen alleen lezen en uitvoeren. Met "700" is het file prive en helemaal afgesloten voor anderen.
 +
Het kan ook via de "Eigenschappen" van het bestand, bereikbaar via het [[PCmuis#Muis_menu_knop|Muismenu]].
 +
:Zet daar bij [[BestandRechten|Rechten]] dat het bestand "uitvoerbaar" moet zijn.
  
 
== Inhoud ==
 
== Inhoud ==
Regel 47: Regel 50:
 
:<nowiki>#</nowiki>!/bin/bash of <nowiki>#</nowiki>!/bin/sh
 
:<nowiki>#</nowiki>!/bin/bash of <nowiki>#</nowiki>!/bin/sh
 
In de eerste regel staat achter #! welk programma het script moet uitvoeren.  
 
In de eerste regel staat achter #! welk programma het script moet uitvoeren.  
Normaliter is dat de shell waarmee u inlogt; u kunt hiermee voorkomen dat een programma niet werkt als het bijvoorbeeld vanaf de C-shell wordt gestart. <br />
+
Normaliter is dat de shell waarmee u inlogt (in ons geval bash in de directie biin); u kunt hiermee voorkomen dat een programma niet werkt als het bijvoorbeeld vanaf de C-shell wordt gestart. <br />
Aan de andere kant zal een script dat begint met #!/bin/bash niet werken op een systeem waar die shell in /usr/local/bin staat of afwezig is. Deze eigenschap is vooral handig voor scripts in andere talen.  
+
Aan de andere kant zal een script dat begint met #!/bin/ niet werken op een systeem waar die shell in /usr/local/bin staat of afwezig is. Deze eigenschap is vooral handig voor scripts in andere talen.  
  
 
Regels met uitleg over het programma (# betekent, is geen programma onderdeel)  
 
Regels met uitleg over het programma (# betekent, is geen programma onderdeel)  
Regel 59: Regel 62:
  
 
== Voorbeeld ==
 
== Voorbeeld ==
'''Voorbeeld'''
+
;Voorbeeld
 +
Maak met Gedit een directorie lijst.
 
:sudo gedit Dirlist  
 
:sudo gedit Dirlist  
:<nowiki>#</nowiki>!/bin/bash  
+
<pre>
:<nowiki>#</nowiki>Plaats de directory en de errorcode in een file
+
#!/bin/bash  
:ls > Dirlist 2>&1
+
# Plaats de directory en de errorcode in een file
:Opslaan  
+
ls > Dirlist 2>&1
:Afsluiten
+
</pre>
 +
Opslaan en afsluiten
 
:chmod 755 Dirlist
 
:chmod 755 Dirlist
  
 
Let er op dat de volgorde van commando's en opties gevolgen hebben b.v.:
 
Let er op dat de volgorde van commando's en opties gevolgen hebben b.v.:
 
:ls > dirlist 2>&1
 
:ls > dirlist 2>&1
Lees 'ls' de bestandslijst van een directory en schrijf '>' die naar de file (bestand) 'dirlist' en schrijf daarna '2>' de foutcode '&1' in dat file.
+
Lees 'ls' de bestandslijst van een directory en schrijf '>' die naar de file (bestand) 'dirlist' en schrijf daarna de foutcode '2>' in dat file '&1'.
  
 
terwijl
 
terwijl
Regel 76: Regel 81:
 
alleen de bestandslijst plaatst omdat de foutcode al verwerkt is voor het bestand is geschreven.
 
alleen de bestandslijst plaatst omdat de foutcode al verwerkt is voor het bestand is geschreven.
  
'''Ander voorbeeld:'''
+
;Ander voorbeeld:
 
+
De string variabele STR wordt aangemaakt en gevuld met de alfanumerieke karakters Hallo Wereld!<br />
De string variabele wordt STR aangemaakt en gevuld met de alfanumerieke karakters Hallo Wereld!<br />
 
 
Daarna wordt de string op het scherm getoond door 'echo'  
 
Daarna wordt de string op het scherm getoond door 'echo'  
 
:sudo gedit Werelddag
 
:sudo gedit Werelddag
:<nowiki>#</nowiki>!/bin/bash
+
<pre>
:<nowiki>#</nowiki>Dit programma groet de wereld
+
#!/bin/bash
:STR="Hallo wereld!"
+
# Dit programma groet de wereld
:echo $STR   
+
STR="Hallo wereld!"
:Opslaan  
+
echo $STR   
:Afsluiten
+
</pre>
 +
Opslaan en afsluiten
 
:chmod 755 Werelddag
 
:chmod 755 Werelddag
  
== Programma starten ==
+
;Nog een voorbeeld
Toets in de terminal ./prgrammanaam
+
Maakt een starter om met Xed twee lege tekstbestanden te openen.
:./Dirlist plaatst in de terminal en in een file in de gebruikersmap met de hele map inhoud.
+
<pre>
 +
#!/bin/bash
 +
comment = "Nieuwe starter"
 +
xed Naamloos document
 +
</pre>
 +
Opslaan en afsluiten
 +
:Maak het uitvoerbaar.
 +
'''Let op:''' De spatie tussen Naamloos & document opent twee bestanden.
 +
:Zorg er dus voor dat de bestandsnaam een geheel vormt. Spaties kunnen worden vervangen door '''-''' of '''_'''.
 +
:Een naam met spatie kan ook worden gebruikt als alle naamdelen tussen aanhalingstekens '''"''' & '''"''' staan, zoals "Naamloos document".
 +
'''Tip:''' De regel ''# Dit programma groet de wereld'' is, door het # teken, gewone tekst ter verduidelijking van het programma en geen programma onderdeel.
 +
 +
=== Programma starten ===
 +
Toets in de terminal ./programmanaam waarvan hieronder twee voorbeelden
 +
:./Dirlist plaatst de hele map inhoud in de terminal en in een file in de gebruikersmap.
 
:./Werelddag groet de gebruiker in de terminal met de tekst uit het programma.
 
:./Werelddag groet de gebruiker in de terminal met de tekst uit het programma.
  
 
== Shellshock ==
 
== Shellshock ==
 
In september 2014 ontdekte Stephane Chazelas een beveiligingskwetsbaarheid in Bash versies 1.14 tot en met 4.3 en kreeg de naam "shellshock".  
 
In september 2014 ontdekte Stephane Chazelas een beveiligingskwetsbaarheid in Bash versies 1.14 tot en met 4.3 en kreeg de naam "shellshock".  
Ontwikkelaar Chet Ramey, die Bash voor de laatste tweeëntwintig jaar heeft onderhouden, zegt dat hij waarschijnlijk in 1992 de bug per ongeluk aan Bash heeft toegevoegd
+
Ontwikkelaar Chet Ramey, die Bash voor de laatste tweeëntwintig jaar heeft onderhouden, zegt dat hij waarschijnlijk in 1992 de bug per ongeluk aan Bash heeft toegevoegd.
 
Het haalde de hoogst mogelijke NCSC- en CVSS-score, wat inhoudt dat er zeer eenvoudig misbruik van te maken was en de potentiële schade hiervan zeer groot kon zijn.  
 
Het haalde de hoogst mogelijke NCSC- en CVSS-score, wat inhoudt dat er zeer eenvoudig misbruik van te maken was en de potentiële schade hiervan zeer groot kon zijn.  
 
Voor zover bekent is er voor de ontdekking nooit misbruik van gemaakt, ondanks dat Bash in Linux, OS X en Unix op dat moment mogelijk op honderden miljoenen systemen aanwezig was.
 
Voor zover bekent is er voor de ontdekking nooit misbruik van gemaakt, ondanks dat Bash in Linux, OS X en Unix op dat moment mogelijk op honderden miljoenen systemen aanwezig was.
 +
 +
== Zie ook ==
 +
[[ProgramStarters]]
  
 
== Bronnen ==
 
== Bronnen ==

Huidige versie van 10 aug 2019 om 02:20

Bash is een programma dat in de terminal kan worden gebruikt om shell bestanden (scripts) te maken of interactief terminalcommando's uit te voeren.

Het is de taak van de kernel om de hardware af te schermen, terwijl de shell dient om toegang tot het systeem te geven.

De shell wordt vaak afgekort tot sh en is de Engelse term voor omhulsel of schil om een reeks commando's.

Wat is bash

Bash is een handige commandoverwerker voor interactief gebruik, maar ook een programmeertaal. Het is de afkorting van Bourne Again Shell en is een woordgrapje op de naam van de originele shell die voluit Bourne shell heet, naar de auteur Stephen Bourne (zie bron 1). De naam Bourne again wordt in het Engels uitgesproken als born again en betekent wedergeboren.

De bash is geschreven door Brian Fox (zie bron 1), een werknemer van de Free Software Foundation GNU, en sterk geïnspireerd op de Unix shell /bin/sh die Bourne ontwikkelde voor Bell Labs.

Bash streeft ernaar om volledig achterwaartse compatibiliteit te zijn met sh, de afkorting voor shell.

Gebruik

De shell werkt op POSIX systemen en wordt onder andere gebruikt in Linux en OS X.

Met bash is het mogelijk om ingewikkelde opdrachtregels uit te voeren. Deze opdrachten of verzamelingen kunnen in een bestand worden opgeslagen en vormen dan een script.

Er worden drie soorten tekens gebruikt:

  1. reserved words - zijn woorden met een speciale bedoeling om gegevens te sturen of te onderzoeken zoals if en while.
  2. words - speciale tekens om verbinden tussen gegevens aan te geven zoals | en >.
  3. operators - de rest van de input zijn gewone woorden waarvan sommige een speciaal doel hebben.

Zoals in elke programmeertaal heeft bash variabelen die refereren aan een alfanumerieke naam en zijn verbonden door de formule naam=waarde.

Een 'word' variabele begint met een $ en vertegenwoordigt een variabele die de waarde daarvan overneemt.

Een commando wordt uitgevoerd door de regelvolgorde: commandonaam opties argumenten.

Maken

Maak met fe (je favoriete editor) b.v. gedit of tunar.

1. sudo /fe/'naam bestand', b.v. sudo gedit /mijndirectory/Mijnbestand
Met deze commandoregel opent gedit de file 'Mijnbestand in de directory 'mijndirectory'.

Als het bestand niet bestaat wordt het hiermee gemaakt.

2. Bewerken
De gegevens die nodig zijn om het programma te starten.

Daarna

3. Opslaan
4. Sluiten

Startbaar maken

5. chmod 755 Mijnbestand

Met chmod worden de toegangsrechten voor het bestand geregeld waarmee kan worden aangegeven wie wel en niet van de file gebruik kunnen maken.

Het nummer "755" zorgt er voor dat de eigenaar lees, schrijf en uitvoer rechten heeft en alle anderen kunnen alleen lezen en uitvoeren. Met "700" is het file prive en helemaal afgesloten voor anderen.

Het kan ook via de "Eigenschappen" van het bestand, bereikbaar via het Muismenu.

Zet daar bij Rechten dat het bestand "uitvoerbaar" moet zijn.

Inhoud

De eerste regel is:

#!/bin/bash of #!/bin/sh

In de eerste regel staat achter #! welk programma het script moet uitvoeren. Normaliter is dat de shell waarmee u inlogt (in ons geval bash in de directie biin); u kunt hiermee voorkomen dat een programma niet werkt als het bijvoorbeeld vanaf de C-shell wordt gestart.
Aan de andere kant zal een script dat begint met #!/bin/ niet werken op een systeem waar die shell in /usr/local/bin staat of afwezig is. Deze eigenschap is vooral handig voor scripts in andere talen.

Regels met uitleg over het programma (# betekent, is geen programma onderdeel)

#dit is alleen uitleg

Daarna volgen de opdrachten in de gewenste volgorde b.v.:

  • programmanaam variabele
  • variabele commando
  • commando programmanaam

Voorbeeld

Voorbeeld

Maak met Gedit een directorie lijst.

sudo gedit Dirlist
#!/bin/bash 
# Plaats de directory en de errorcode in een file
ls > Dirlist 2>&1

Opslaan en afsluiten

chmod 755 Dirlist

Let er op dat de volgorde van commando's en opties gevolgen hebben b.v.:

ls > dirlist 2>&1

Lees 'ls' de bestandslijst van een directory en schrijf '>' die naar de file (bestand) 'dirlist' en schrijf daarna de foutcode '2>' in dat file '&1'.

terwijl

ls 2>&1 > dirlist

alleen de bestandslijst plaatst omdat de foutcode al verwerkt is voor het bestand is geschreven.

Ander voorbeeld

De string variabele STR wordt aangemaakt en gevuld met de alfanumerieke karakters Hallo Wereld!
Daarna wordt de string op het scherm getoond door 'echo'

sudo gedit Werelddag
#!/bin/bash
# Dit programma groet de wereld
STR="Hallo wereld!"
echo $STR  

Opslaan en afsluiten

chmod 755 Werelddag
Nog een voorbeeld

Maakt een starter om met Xed twee lege tekstbestanden te openen.

#!/bin/bash
comment = "Nieuwe starter"
xed Naamloos document

Opslaan en afsluiten

Maak het uitvoerbaar.

Let op: De spatie tussen Naamloos & document opent twee bestanden.

Zorg er dus voor dat de bestandsnaam een geheel vormt. Spaties kunnen worden vervangen door - of _.
Een naam met spatie kan ook worden gebruikt als alle naamdelen tussen aanhalingstekens " & " staan, zoals "Naamloos document".

Tip: De regel # Dit programma groet de wereld is, door het # teken, gewone tekst ter verduidelijking van het programma en geen programma onderdeel.

Programma starten

Toets in de terminal ./programmanaam waarvan hieronder twee voorbeelden

./Dirlist plaatst de hele map inhoud in de terminal en in een file in de gebruikersmap.
./Werelddag groet de gebruiker in de terminal met de tekst uit het programma.

Shellshock

In september 2014 ontdekte Stephane Chazelas een beveiligingskwetsbaarheid in Bash versies 1.14 tot en met 4.3 en kreeg de naam "shellshock". Ontwikkelaar Chet Ramey, die Bash voor de laatste tweeëntwintig jaar heeft onderhouden, zegt dat hij waarschijnlijk in 1992 de bug per ongeluk aan Bash heeft toegevoegd. Het haalde de hoogst mogelijke NCSC- en CVSS-score, wat inhoudt dat er zeer eenvoudig misbruik van te maken was en de potentiële schade hiervan zeer groot kon zijn. Voor zover bekent is er voor de ontdekking nooit misbruik van gemaakt, ondanks dat Bash in Linux, OS X en Unix op dat moment mogelijk op honderden miljoenen systemen aanwezig was.

Zie ook

ProgramStarters

Bronnen

  1. The Bourne-Again Shell
  2. man book