Gebruikershulpmiddelen

Site-hulpmiddelen


linux_scriptschrijven:basis

Linux Scripts schrijven - basis kennis

Linux Scripts schrijven voor beginners

Linux Terminal - Bash Shell

https://itsfoss.com/create-bash-script/

https://www.makeuseof.com/tag/what-is-shell-scripting/

https://linuxhandbook.com/shebang/ #!/bin/bash

Er zijn allerlei manieren van programmeren.

Hier gaat het over De Terminal gebruiken, en het combineren van meerdere terminal commando's in een tekstfile, die als programma gedraaid kan worden. Dat is een script.

Voor alle andere soorten van programmeren moet u ergens anders zijn …

Linux Scripts schrijven

Script schrijf gereedschap

Een tekst editor

  • een platte tekst editor
    • geen Office writer !
  • geany
  • gedit
  • xed

Het moet een tekst opleveren zonder opmaak : platte tekst dus.

'Syntax high ligting' is het slim weergeven van de tekst in een script. Een slimme editor herkent het soort script en doet dat automatisch voor je. Geany is er zo een. en dus mijn favoriet.

Script uitvoer gereedschap

De terminal

Script schrijf stappenplan

  • De script tekst begint altijd en uitsluitend en alleen met : #!/bin/sh (voor een bash script)
  • De < code > en < / code > horen er niet in. Die zijn onderdeel van de wiki pagina, niet van Linux
  • Maak het script met een platte tekst editor
  • Sla onderstaande tekst als script op in het script, als /home/jijzelf/bin/spatiesuitpng.sh
  • Zet de rechten goed met : chmod 755 /home/jijzelf/bin/spatiesuitpng.sh
  • Maak een commando van het script met
    • ln -s /home/jijzelf/bin/spatiesuitpng.sh /home/jijzelf/bin/spatiesuitpng
    • spatiesuitpng is nu een symbolische link naar het script zelf
    • Vanaf nu heb je een commando 'spatiesuitpng'. Het kan in elke map in de terminal opgestart worden !
    • als /home/jijzelf/bin in het zoekpad zit. Bekijk het met echo $PATH

Linux Scripts voorbeeld scripts uitproberen

Mijn voorbeeld scripts uitproberen doe je zo :

De eerste regel is altijd de Shebang: #!/bin/sh of #!/bin/bash of #!/user/bin/bash

Zoek het op met $ which bash

Zie de uitleg op (bijvoorbeeld) : https://bash.cyberciti.biz/guide/Shebang

Alles vanaf “#!/bin/sh” opslaan in een tekst bestand /home/jijzelf/bin/de_naam_van_het_script.sh

In de terminal de rechten op uitvoerbaar zetten (de x moet er bij):

chmod 755 /home/jijzelf/bin/*.sh

ls -l

de rechten zijn nu -rwxr-xr-x

Start het script door de naam in te typen. ENTER !!!

Linux Scripts - handleiding

Linux Scripts - handleiding in de terminal zelf

man bash
man test

Linux Scripts - schrijven leren

  • Leer eerst de terminal te gebruiken
  • Boeken lezen helpt
  • Afkijken, bij elkaar en op tinternet
  • Met hele kleine scriptjes beginnen.
  • Leren hoe je je terminal en je werkomgeving goed inricht

Linux Scripts - kennis documenteren

  • Documenteer je opgedane kennis.
  • Per commando in een bestandje.
  • Bijvoorbeeld het kommando find. Daar maak je een bestandje find.txt voor.
  • Maak er een verzamel map voor. Noem die map 'scripts'.
  • /home/jizelf/linux/scripts/find.txt.
  • Enzovoort

De Terminal

Het gereedschap waarin je een commando in typt waarna er een antwoord op komt

De Shell

Dat is het commandline programma dat draait in de terminal

zie ook Linux Terminal - Bash Shell

De shell wordt geconfigureerd middels een aantal files. Zie

Scripts - bestand namen

Script naam eisen:

  • kies een logische functionele naam
  • gebruik alleen kleine letters
  • gebruik de extensie sh
  • versie beheer middels mijnscript-1.0.sh

Alle kornshell scripts hebben de extensie .ksh

Scripts - bestand rechten

De rechten van elk script moet zijn : -rwxr-xr-x

Dat regel je in de terminal met

cd; cd bin; chmod 755 *sh; ls -l

chmod 755 /home/jijzelf/bin/*.sh

https://www.howtogeek.com/67469/the-beginners-guide-to-shell-scripting-the-basics/

https://www.howtogeek.com/70822/the-beginners-guide-to-shell-scripting-4-conditions-and-if-then-statements/

Scripts - jouw verzameling

Jouw verzameling scripts komt in /home/jijzelf/bin. In deze map komen uitsluitend jouw scripts.

Alle bash shell scripts hebben de extensie .sh

Scripts - Opslag map

Zet al je scripts in /home/jijzelf/bin.

Scripts - zoek pad

Zie je script als een uitvoerbaar commando. Dan moet de terminal weten waar die staan. In /home/jijzelf/bin.

Dit pad moet je toevoegen aan de variabele PATH. Bekijk de huidige inhoud ervan met

echo $PATH

Dit moet laten zien (als onderdeel van meerdere mappen) : /home/jijzelf/bin

Waarschijnlijk staat het er al zo in : $HOME/bin

$HOME = /home/jijzelf

De configuratie bestand waarin je dit regelt is (waarschijnlijk) : /home/jijzelf/.profile

$HOME/.profile

In mijn linux moet deze regel in de /home/jijzelf/.profile komen : PATH=“$HOME/bin:$PATH” Hier staat : voeg /home/jijzelf/bin toe aan het al bestaande PATH

Het al bestaande PATH wordt dus door Linux zelf al eerder ingesteld.

Staat het niet in $HOME/.profile, kijk dan in /etc/profile

o]

Scripts - uitvoeren

Script uitvoeren : In de terminal intypen : voorbeeldscript.sh en starten met ENTER

Zorg er dus voor dat je script in het zoekpad staat : /home/jijzelf/bin/voorbeeldscript.sh

Er zijn meer mogelijkheden. Wat werkt hangt af van de shell, de configuratie, de huidige map waarin je zit, de script bestand locatie, de script bestand rechten, etc.

Al lerende ga je door hebben hoe het echt moet. tot dan : proberen dus

voorbeeldscript

voorbeeldscript.sh

./voorbeeldscript.sh

. ./voorbeeldscript.sh

source voorbeeldscript.sh

source ./voorbeeldscript.sh

./home/jijzelf/bin/voorbeeldscript.sh

. /home/jijzelf/bin/voorbeeldscript.sh

sh /home/jijzelf/bin/voorbeeldscript.sh

bash /home/jijzelf/bin/voorbeeldscript.sh

source /home/jijzelf/bin/voorbeeldscript.sh

# source /etc/profile

# source ~/.bashrc

Linux Script : slimmigheden

Alle terminal commando's doen het ook in een script. Daarnaast is er nog veeeel meer mogelijk !

Zie de voorbeelden in Linux Scripts schrijven voor beginners

Linux Script : datum zaken

Linux Script : if then else

Demo script bij de hcczob 2021 0623

-rwxr-xr-x 1 hans hans 652 jun 23 21:38 voorbeeldscript.sh

maken van dit script : schrijf de tekst, zet m in /home/jijzelf/bin

chmod 755 voorbeeldscript.sh

of voor alle scripts hiero : chmod 755 *.sh

Spaties verwijderen uit bestandsnamen

#!/bin/bash
# spatiesuitpng.sh
#
# Doel : de linux mint schermafbeelding plaatjes (png formaat) hernoemen naar geen spaties
# 
# Gemaakt op 2021 0628
# 
# Truuk gevonden op https://stackoverflow.com/questions/1806868/linux-replacing-spaces-in-the-file-names
#

pwd
echo De bestanden voor het aanpassen
# cd $HOME/Afbeeldingen
ls -l
pwd

for AFBEELDING in *png; do mv "$AFBEELDING" $(echo $AFBEELDING | tr ' ' '_' | tr '-' '_') ; done

echo De bestanden na het aanpassen
pwd
ls -l
pwd


# eeenmalige zaken om het werkend te krijgen
# cd /home/jijzelf/bin
# chmod 755 *sh
# ln -s spatiesuitpng.sh spatiesuitpng
# zorg dat de map /home/jijzelf/bin in PATH zit.
# echo $PATH
# je hebt nu een kommmando spatiesuitpng gemaakt, dat werkt in elke map op deze pc
# Dus ook in $HOME/Afbeeldingen

voorbeeldscript.sh

#!/bin/bash
# voorbeeldscript.sh
# Voorbeeld script op 2021 0623
clear
pwd
date
for NAAM in bert frank gerard hans laurens mart piet stephan ; do echo NAAM : $NAAM ; done
pwd

sleep 3

clear
echo $HOME
ch $HOME
ls -l
pwd
cd $HOME/Afbeeldingen
pwd

BESTANDEN=/home/hans/plaatjes.txt
ls -1 | grep -i Schermafdruk | sed 's/ /_/g' | sed 's/-/_/g' > $BESTANDEN

function dezedoethetniet {
for BESTAND in $BESTANDEN
do
	# Doe wat met elk bestand : $BESTAND
	echo "Aan het werk met bestand $BESTAND ..."
	echo BESTAND : $BESTAND
done
}
# haal het hekje in de volgende regel weg om deze functie aan te zetten
# dezedoethetniet

function dezedoethetwel {
for BESTAND in `cat $BESTANDEN`
do
	# print $NAAM
	# Doe wat met elk bestand : $BESTAND
	# echo "Hier komt BESTAND $BESTAND ..."
	echo BESTAND : $BESTAND
done
# haal het hekje in de volgende regel weg om deze functie aan te zetten
dezedoethetwel
linux_scriptschrijven/basis.txt · Laatst gewijzigd: 2026_0221_20:05 door Hans Bollen

Tenzij anders vermeld valt de inhoud van deze wiki onder de volgende licentie: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki