Bash Script – kurz mal erklärt

Heute mal eine einfache Sache, falls man sie Klever einsetzt, eine Menge Arbeit abnehmen kann. Die Rede ist vom guten alten Shell-Script.

Wer ständig die gleichen Befehle absetzen muss, der kann sich doch automatisieren. Ich zum Beispiel nutze Shell Script für das Deployment Prozess. Also den fertigen Code von der Entwicklungsumgebung in die Produktionsumgebung zu schieben.

Fange wir an. Wir möchten ein Script erstellen, dass uns in einem Git Repository alle Änderungen verfolgt, commitet und in unser Remote Repository pusht.

Dafür brauchen wir erst einmal ein Shell Script bzw. Bash Script. Ein Bash Script hat die Dateiendung .sh.

In unserer Konsole geben wir also ein:

touch mypusher.sh 

Dann öffnen wir unsere Datei und schreiben die Commands nieder die wir sonst in unserer Console hacken.

#!/bin/bash
echo -e "Deployment Process..."
# start the git deployment
git add .
git commit -m "Updates"
git push 

#!/bin/bash – Was issn dit?

Jedes Shell Script fängt in der ersten Zeilemit dem sogenannten Shebang an. Diese Zeile sagt einfach nur mit welchem Kommandointerpreter bzw. welcher Shell das Script gelesen und ausgewertet werden soll. Statt #!/bin/bash kann man hier nun auch #!/bin/sh schreiben. Das führt dann dazu, dass das Script auch von BSD Systemen (Apple OS) gelesen werden kann.

Eine Besonderheit ist die Route. Grundsätzlich wird mit der Route in Shellscripten kommentiert. Eine Ausnahme gibt es nur in der ersten Zeile. In anderen Zeilen wäre das ein Kommentar:

# Hier kommt Kurt 

So wird sind auch fast fertig. Nun speichern wir unsere Datei und gehen über zum letzten Schritt.

Mache die Datei „executable“

Ein Shell script muss ausführbar / executable sein. Dafür benötigt es besondere Rechte. Wir geben also nun in unserer Kommandzeile noch folgendes ein:

chmod u+x mypusher.sh

Und nun testen wir es mal. Allerdings nicht mit den Anweisungen von oben. Den dafür bräuchtet ihr ja noch ein entferntes Repository bei Github oder Bitbucket. Also ändern wir es mal kurz um:

#!/bin/bash
echo -e "Kleine Git Automatisierung..."
mkdir gitTestAuto
cd gitTestAuto
touch index.html
git init && git add . && git commit -m"Init Commit"
git status
touch app.js
git status
echo -e"Chiao"

Um das Script nun zu starten, geben wir über die Kommandozeile ein:

./mypusher.sh

A viola! Ich hoffe im groben merkt ihr, wozu so ein Shellscript alles helfen kann. Das hier ist die einfachste Variante. Wir können in Shellscripten mit Variablen, Parametern arbeiten. Wie einleitend bereits erwähnt. Es kann uns eine Menge arbeit abnehmen und wir können mehr Zeit in DevOp Themen investieren um beim nächsten Gespräch mit einem DevOp nicht ganz wie ein Trottel dazustehen.


Leave a Comment

Your email address will not be published. Required fields are marked *

*

*

Empfholende Artikel


Count files via the CLI in a folder (also recursive)

December 5, 2022

For example, you want to know how many files are in your Laravel vendor folder. To do this, go to the project folder with your console. Now you can count the files with find. If you don’t want a recursion and just want to know how many folders and files a certain path has, you […]

Symlinks – Was sind symbolische Links

March 11, 2022

Bei einem aktuellen Projekt bin ich auf ein außergewöhnliches deployment gestoßen. Außergewöhnlich aber nicht negativ wertend gemeint. Halt nicht “state of the art”. Stack: Amazon EC2 Server mit einem NGINX Webserver. Der Ablauf ist wie folgt. Der Order html unter dem Pfad /usr/share/nginx/html war ein Symlink auf ein Verzeichnis im selben Pfad. Nennen wir den […]

Odt Dateien in ein PDF konvertieren

January 4, 2022

Möchte man über die Commandline aus einer odt Datei eine PDF machen, brinbt libre Office von Hause auch gleich ein Headless Tool mit. libreoffice –headless –convert-to pdf textdatei.odt und schubdiwup, da ist das neue PDF.

Mit sed Text in einer Datei ändern

November 20, 2021

Wer über die CLI in einer Textdatei etwas editieren möchte greift für gewöhnlich zu nano, vim etc. Aber es gibt auch eine andere Möglichkeit in einer Textdatei etwas zu ändern. Über eine Stream (Stream Edit). Das kann zum Beispiel bei einem Deploymentscript sinnvoll sein. Wenn man zum Beispiel ein Deploymentscript hat und mit Release Ordner […]

Verschlüsseltes Zip über die Kommandozeile erstellen

November 9, 2021

Folgendes Szenario. Ihr seid via SSH auf einem Server der nicht mehr ansprechbar ist. Um die Dateien zu sichern erstellt ihr rasch ein ZIP von den Dateien die gesichert werden müssen. Das geht schnell mit: zip -re outputfileName.zip input folder/file r = rekursive = encryption

What does the -p option stand for in mkdir?

November 4, 2021

If you want to create several directories with the command mkdir you use the -p option. But what does the -p stand for? One could assume it stands for “Path”. But no. It stands for “parent”. And the flag is needed to create a parent directory if it is required. If you try to create […]