AllesLinux Forumindex AllesLinux
Het forum van AllesLinux.com.
Deze site wordt gehost door Exonet Internet Services
 
 FAQFAQ   ZoekenZoeken   GebruikerslijstGebruikerslijst   GebruikersgroepenGebruikersgroepen   RegistrerenRegistreren 
 ProfielProfiel   Log in om je privéberichten te bekijkenLog in om je privéberichten te bekijken   InloggenInloggen 

Bashspreukenboek (nog niet af)

 
Nieuw onderwerp plaatsen   Reageren    AllesLinux Forumindex -> Documentatie
Vorige onderwerp :: Volgende onderwerp  
Auteur Bericht
rinke



Geregistreerd op: 16 Sep 2004
Berichten: 1557

BerichtGeplaatst: Do Jul 19, 2007 5:02 pm    Onderwerp: Bashspreukenboek (nog niet af) Reageren met citaat

Inleiding

Tegenwoordig leveren de meeste Linux distributies BASH mee als shell. In een shell geef je commando's aan je computer. Shell betekent dus invoer console.

Zelf geschreven scripts voor een shell zijn erg eenvoudig. Ook kun je zo goed kennis maken met de Linux-commando's.

Opmerking: Mocht je moeite hebben met de opmaak van deze handleiding. Ik maak hem ook in Wikiformaat op: http://www.redskillz.nl/host/rinke/wiki/index.php

De handleiding is nog lang niet klaar, mocht u snel informatie nodig hebben dan kunt u kijken op:
http://wiki.nedlinux.nl/index.php?page=BasiscursusBash
en http://de.wikibooks.org/wiki/Linux-Kompendium:_Shellprogrammierung


Wat je vooraf moet weten


  1. Het is gebasseerd op de volgende handleiding: http://www.delight.ch/linux/bash-script-howto/index.html (Duits)

  2. Het script moet uitvoerbaar zijn (chmod 700) script
  3. Boven aan geef je aan dat het om een bash script gaat dus in de eerste regel staat: #!/bin/bash
  4. Je voert elk commando uit door ./script in een terminal venster intevoeren.
  5. Vragen, opmerkingen of kritiek stuur mij een pb

_________________
rinke89.hyves.nl


Laatst aangepast door rinke op Za Jul 21, 2007 11:44 am; in totaal 3 keer bewerkt
Terug naar boven
Profiel bekijken Stuur privébericht Website bekijken
rinke



Geregistreerd op: 16 Sep 2004
Berichten: 1557

BerichtGeplaatst: Do Jul 19, 2007 5:11 pm    Onderwerp: Inhoud Reageren met citaat

Inhoud
Hoofdstuk 1 de eerste paar stappen

  • 1.1 Het opslaan en uitvoeren van het eerste "halllo wereld script"
  • 2.1 Een groeter

_________________
rinke89.hyves.nl


Laatst aangepast door rinke op Do Jul 19, 2007 5:19 pm; in totaal 3 keer bewerkt
Terug naar boven
Profiel bekijken Stuur privébericht Website bekijken
rinke



Geregistreerd op: 16 Sep 2004
Berichten: 1557

BerichtGeplaatst: Do Jul 19, 2007 5:11 pm    Onderwerp: Hoofdstuk 1 Reageren met citaat

1 . De eerste stappen

1.1 Het hallo wereld script
Open je teskteditor en sla de volgende code op:
Code:

#!/bin/bash
echo hallo wereld


Ik ga er vanuit dat het script hallo is genoemd.
Open een terminal venster en typ:

chmod 700 hallo
./hallo


Resultaat
Code:

rinke@debian:~/bash$ chmod 700 hallo
rinke@debian:~/bash$ ./hallo
hallo wereld




1.2 De groeter
Sla de volgende code op, en voer hem uitzoals bij het hallo wereld script van (1.1)

Code:

#vragen om de naam
echo -n "Hoe heet u?"
read naam
echo "Aangenaam $naam ik heet $HOSTNAME"


Bij de eerste regel staat achter echo -n, dat heb ik gedaan om het antwoord achter de vraag te krijgen.
In de tweede regel staat $naam, dat is de invoer van gebruiker en $HOSTNAME is een standaart variable van BASH die de computernaam bevat.

Resultaat
Code:

rinke@debian:~/bash$ ./naam
Hoe heet u? Rinke
Aangenaam Rinke ik heet debian


1.3 De weergave van ls filteren
Sla op en voeruit netals het hallo wereld script (1.1).
Code:

#!/bin/bash
echo -n "Typ uw trefwoord in: "
read GREP
ls  | grep $GREP

ls is om de inhoud van een map weer te geven.
Grep, zoekt in het voorbeeld naar de variabel $grep.
De variable $grep bevat de invoer van de gebruiker.
Door de | wordt de uitvoer van ls doorzocht met ls.

Resultaat:
Code:

rinke@debian:~/bash$ ./lsfilter
Typ uw trefwoord in: hallo
hallo


(Het script van paragraaf 1.1 wordt gevonden.)

(Word nog aan gewerkt)
_________________
rinke89.hyves.nl
Terug naar boven
Profiel bekijken Stuur privébericht Website bekijken
fietser



Geregistreerd op: 20 Aug 2005
Berichten: 91

BerichtGeplaatst: Do Jul 19, 2007 8:09 pm    Onderwerp: Reageren met citaat

Leuk idee Rinke.
Hiermee kun je nog wel een poosje bezig zijn.
Groeten.
_________________
Slackware 13.37
Terug naar boven
Profiel bekijken Stuur privébericht
rinke



Geregistreerd op: 16 Sep 2004
Berichten: 1557

BerichtGeplaatst: Do Jul 19, 2007 10:25 pm    Onderwerp: Reageren met citaat

Omleiden



De stdout schrijven in een bestand
Sla de code op in bestand en voer hem uit zoals in par 1.1.
Code:

#!/bin/bash
date +%D  > datum.txt


De datum verschijnt niet in beeld, maar weggeschreven naar het bestand datum.txt PAS OP: de eventuele andere gegevens, in het bestand worden verwijdert. Bestaat het bestand niet dan wordt het aangemaakt.


De stder schrijven in een bestand
Sla de code op in bestand en voer hem uit zoals in par 1.1.
Code:

#!/bin/bash
grep Linux * 2> linux.txt

Het commando grep Linux * zoekt in alle bestanden naar het begrip linux Vervolgens worden regels met het begrip linux naar linux.txt geschreven.


Fietser schreef:

Leuk idee Rinke.
Hiermee kun je nog wel een poosje bezig zijn.

Bedankt, de zomervakantie duurt nog lang Wink
_________________
rinke89.hyves.nl
Terug naar boven
Profiel bekijken Stuur privébericht Website bekijken
fietser



Geregistreerd op: 20 Aug 2005
Berichten: 91

BerichtGeplaatst: Zo Jul 22, 2007 1:03 pm    Onderwerp: Reageren met citaat

Met >> voeg je toe aan het bestand.
Je kunt dit gebruiken om datum en tijd in je bestand te zetten.
Voorbeeld:
Je wilt een verslag bijhouden van het Bashspeukenboek.
Gaan we hier een programmaatje voor maken "verslagBash"
Dus vim verslagBash en zet onderstaande erin.

Citaat:
#!/bin/bash
date +%A-%d-%B-%Y-%k-uur-%M-minuten-%S-seconden >> Bashspeukenboek.txt
vim Bashspeukenboek.txt
exit 0


Maak uitvoerbaar met chmod u+x verslagBash
Als nu opstart met ./verslagBash
Komt er een regel op het einde van je Bashspeukenboek.txt met datum en tijd te staan.
Je kunt dan daaronder verder gaan met je verslag.
Groeten
_________________
Slackware 13.37
Terug naar boven
Profiel bekijken Stuur privébericht
rinke



Geregistreerd op: 16 Sep 2004
Berichten: 1557

BerichtGeplaatst: Ma Jul 23, 2007 7:59 pm    Onderwerp: Variablen en arrays Reageren met citaat

Variabelen en arrays


Variabelen
Sla de volgende code op, en voer het uit als in paragraaf 1.1.
Code:

#!/bin/bash
#Het instellen van een variabel.
naam=rinke;
zinnetje="Het bashspreukenboek is nog lang niet af";
#Het uitprinten van de variabel.
echo $naam;
echo $zinnetje


Resultaat:
Code:

rinke@debian:~/bash$ ./variabele
rinke
Het bashspreukenboek is nog lang niet af

Je gebruikt aanhalingstekens, als je spaties wilt opnemen.

Opgepast
Sommige karakters als " en $, kunnen door BASH op twee manieren worden gelezen. Als u bijvoorbeelt iets tussen aanhalingtekens in een variabele dan het zijn om aan te geven waar de variable begint en waar die stopt. Het kan natuurlijk ook voorkomen dat u aanhalingtekens in een variabele wilt opnemen.

Bij een dollar-teken, kan het gaan om een variabele, maar u kunt ook terug verwijzen naar een variabele.

Om aan te geven, wat u wilt kunt tekens opnemen. De negeertekens zorgen ervoor dat de tekens op worden genomen in de variabele.
\ Alles word overgenomen.
' ' Alles word overgenomen met uitzondering van $ en \
" " Alles word binnen de aanhalingtekens overgenomen,
met uitzondering van ' $ en \


Een voorbeeld:
Sla op en voeruit als in paragraaf 1.1
Code:
#!/bin/bash
dollars=variabele;
echo "Rinke schreef \"Dit kan alleen met een extra schuinestreep(de baskslash"\" ;
echo "In de Verenigde Staten kennen ze geen euro's maar: \$\ dollars";
echo $dollars;


Resultaat:
Code:
rinke@debian:~/bash$ ./tekens
Rinke schreef "Dit kan alleen met een extra schuinestreep(de baskslash"In de Verenigde Staten kennen ze geen euro's maar: $ dollars
variabele



Enkele variabelen ingesteld door bash

$HOSTNAME
Deze variabele bevat de computernaam.

$RANDOM
Deze variable bevat een willekeurig cijfer van 0 tussen 32767

$HOME
Deze variable bevat de locatie van de persoonlijkemap.




Arrays
Hieronder ziet u een voorbeeld van een array. Ik vind het een beetje lastig te omschrijven wat precies een array is. Ik zie het voor mij als een soort lijst.

voorbeeld:
Code:

#!/bin/bash
naam=(Rinke  Tjerk Gea Henk);
echo "Ik heet"  ${naam[0]}; 
echo "Mijn broertje heet" ${naam[1]};
echo "Mijn moeder heet" ${naam[2]};
echo "Mijn vader heet" ${naam[3]};

Bash begint te tellen bij nul, omdat rinke het eerst voor komende element is Rinke=${naam[0] en omdat Henk het laatste element is Henk ${naam[3]}

Het resultaat lijkt mij vrij logisch:
Code:

rinke@debian:~/bash$ ./array
Ik heet Rinke
Mijn broertje heet Tjerk
Mijn moeder heet Gea
Mijn vader heet Henk

_________________
rinke89.hyves.nl
Terug naar boven
Profiel bekijken Stuur privébericht Website bekijken
rinke



Geregistreerd op: 16 Sep 2004
Berichten: 1557

BerichtGeplaatst: Wo Jul 25, 2007 12:33 pm    Onderwerp: Reageren met citaat

Voorwaarden


Voorwaarden met if
if is handig om te kijken als er aan enkele voorwaarden wordt voldaan.

Sla op en voeruit als in paragraaf 1.1
Code:

#!/bin/bash
PATH="$PATH:$PWD"
if [ "$1" = "tux" ] ; then
echo ja
elif [ "$1" = "rinke" ] ; then
echo goede keus
else
echo -e "Voorwaarde programma 1.1 geschreven door Rinke\nGebruik: voorwaarde opdracht\nOpdrachten:\ntux - Print de tekst ja uit \nrinke - Print de tekst goede keuze uit"
echo -e "\nZie het bashspreukenboek voor meer informatie";
fi

De eerste regel, zet de huidige locatie in de variabele PATH. Dat maakt het uitvoeren van het script makkelijker, want je hoeft dan niet de locatie van het script aantegeven. Het wordt echter niet vastgelegt het is tijdelijk.

Met elif kun je meerder voorwaarden opnemen.

else wordt uitgevoerd als er aan geen van de voorwaarden wordt voldaan. In dit voorbeeld, wordt er een hulp tekst weergegeven als de gebruiker geen opdracht heeft ingevoerd.

De volgende regels zijn misschien niet echt netjes. Zo'n grote tekstuitvoer had misschien beter los gekunt in een tekstbestandje. Dit heb ik niet gedaan. Bij grotere script had je misschien echo hulptekst.txt kunnen gebruiken.

Resultaat van het script:
Code:

rinke@debian:~/bash$ voorwaarde
Voorwaarde programma 1.1 geschreven door Rinke
Gebruik: voorwaarde opdracht
Opdrachten:
tux - Print de tekst ja uit
rinke - Print de tekst goede keuze uit

Zie het bashspreukenboek voor meer informatie
rinke@debian:~/bash$ voorwaarde tux
ja
rinke@debian:~/bash$ voorwaarde rinke
goede keus






Voorwaarden met case
Met case kunt gemakkelijker een hele reeks voorwaarden schrijven.
Case zorgt voor een vergelijking met vast iets. Van de eerste vergelijking tot de laatste vergelijking alles wordt met het zelfde vergeleken. In het onderstaande voorbeeld wordt alles met de variabele dier vergeleken.

Nog meer mogelijkheden met if
Met if kun je heel veel vergelijking opstellen. Hier onder een lijst met de mogelijkheden.
Code:
 If [  x vergelijking y]; then
#Alles wat moet worden uitgevoerd. 


[list=1]
[*]

Code:

#!/bin/bash
echo "Dierengeluiden"
echo  -n "Voer de naam in van het gewenste dier:"
read dier

case "$dier" in
     hond)
            echo "Woef woef"

            ;;
     koe)
            echo "moee"

            ;;
     kip)
          echo "tok tok tok"

           ;;
     *)
             echo "Probeer is koe, hond of kip"   
                 
             ;;
esac


case $dier geeft aan dat u iets wilt vergelijken met $dieren.
Eerst wordt $dier met een hond vergeleken. Is de invoer van de gebruiker hond, dan wordt het commando echo woef woef uitgevoerd. Het zelfde geld voor kip en koe. Het sterretje is een wildcard. Het sterretje betekent alles daardoor wordt er altijd aan de laatste voorwaarde in het voorbeeld voldaan. Het is niet verstandig het sterretje boven aan te zetten. De andere voorwaarden komen dan nooit aanbod.

Resultaat:
Code:

rinke@debian:~/bash$ ./dieren
Dierengeluiden
Voer de naam in van het gewenste dier:hond
Woef woef






Tellen met while
While gaat netzolang door tot dat er niet aan de vorwaarde wordt voldaan. Als voorbeeld nemen ze vaak een teller. Dit simpele programma hieronder telt tot 5. Eerst maken we de variabele teller aan. Wile wordt volgen uitgevoerd, in het Nederlands staat in de eerste regel: Als teller kleiner of gelijk aan 5 is.
Code:


#!/bin/bash
teller=1  #Teller op nul instellen
while [ $teller -le 5 ]   # Het onderstande wordt uitgevoerd als de teller gelijk of kleiner is dan 5
      do
        sleep 1s
        echo $teller        #Uitprinten van de teller
        teller=$[$teller+1]  #De teller 1 verhogen
      done


Het resultaat:
Code:

rinke@debian:~/bash$ ./teller
1
2
3
4
5


_________________
rinke89.hyves.nl
Terug naar boven
Profiel bekijken Stuur privébericht Website bekijken
rinke



Geregistreerd op: 16 Sep 2004
Berichten: 1557

BerichtGeplaatst: Za Jul 28, 2007 1:26 pm    Onderwerp: Reageren met citaat

Commandovormen

Proces op de achtergrond.
Een proces op de achtergrond laten draaien, is handig als je geen uitvoer van het programma nodig hebt.

Je kunt een commando op de volgende manier op de achtergrond laten draaien:
Code:

commando &


Voorbeeld:
Code:

rinke@debian:~$ gedit tekst.txt&
[1] 5821



Het ene of het andere proces
Code:

commandx || commandy


Voorbeeld:
Code:

#!/bin/bash
#Programma om bestanden te verwijderen
rm -R $S1 ||  rm $S1



Commando uitvoer doorgeven (Pipe)
Grep wordt vaak gebruikt bij een pipe, bijvoorbeeld als je een hele bestandlijst hebt met
ls.
Code:
comandox | commandoy


Voorbeeld:
Code:

ls | less

De inhoud van inhoud wordt weergegeven door het programma less.
Waardor u kunt scrollen door de inhoud.
_________________
rinke89.hyves.nl
Terug naar boven
Profiel bekijken Stuur privébericht Website bekijken
Berichten van afgelopen:   
Nieuw onderwerp plaatsen   Reageren    AllesLinux Forumindex -> Documentatie Tijden zijn in GMT + 2 uur
Pagina 1 van 1

 
Ga naar:  
Je mag geen nieuwe onderwerpen plaatsen in dit subforum
Je mag geen reacties plaatsen in dit subforum
Je mag je berichten niet bewerken in dit subforum
Je mag je berichten niet verwijderen in dit subforum
Je mag niet stemmen in polls in dit subforum


Powered by phpBB © 2001, 2005 phpBB Group
Vertaling door Lennart Goosens.