Skip to content
README.md 3,79 KiB
Newer Older
Thorsten Eggeling's avatar
Thorsten Eggeling committed
# Produktive Bash-Scripts

Thorsten Eggeling's avatar
Thorsten Eggeling committed
Der Beitrag in der LinuxWelt 2025-03 liefert zu Beginn eine minimale Einführung in die Nutzung von Bash-Scripts, danach folgen praktische Beispiele.
Thorsten Eggeling's avatar
Thorsten Eggeling committed

Wer mehr zum Thema Programmierung mit Bash erfahren möchte, dem sei das Buch „Shell-Programmierung“ empfohlen, das Sie online kostenlos unter https://openbook.rheinwerk-verlag.de/shell_programmierung/ lesen können. Die gedruckte Version des Buches ist für 44,90 Euro erhältlich (https://m6u.de/SHPROG).

Thorsten Eggeling's avatar
Thorsten Eggeling committed
## Die Scriptdateien
Thorsten Eggeling's avatar
Thorsten Eggeling committed
**backup.bash:** Einfaches Backup-Script mit rsync.

Thorsten Eggeling's avatar
Thorsten Eggeling committed
**backup_ex.bash:**  Dieses erweiterte Script ist für die Sicherung ausgewählter Ordner gedacht.
Thorsten Eggeling's avatar
Thorsten Eggeling committed

**convert_images.bash:** Mehrere Bilddateien konvertieren (Typ und Größe ändern)

**mk_slideshow.bash:** Wenn in einer Slideshow Bildübergänge sowie eine Musikuntermalung gewünscht sind und das Video auf eine übliche Größe skaliert werden soll, wird die ffmpeg-Befehlszeile umfangreich, weshalb Sie sich diese komfortabler mit dem Script „mk_slideshow.bash“ erstellen lässt (https://m6u.de/BASHS). Passen Sie im Script den Ein- und Ausgabeordner an, hinter „MP3“ gehört der Pfad zu einer Audio-Datei. Ist die Variable leer, wird keine Audiospur erzeugt.

**extr**: Das Script „extr“ gestaltet das Entpacken bequemer. Die benötigten Archivprogramme müssen auf dem Rechner installiert sein, etwa die Pakete „7zip“ und „unrar“. Sie können alternativ die Funktion „extr()“ aus dem Script in die Datei „.bashrc“ kopieren und genauso wie oben beschrieben aufrufen. 

**smart_fritz_terminal.bash:** Unser Script „smart_fritz_terminal.bash“ kann die verbundenen DECT-Schalter ermitteln und Steckdosen ein- und ausschalten. Außerdem kann es die Anrufliste herunterladen und die externe IP-Adresse anzeigen. Bevor Sie das Script nutzen, passen Sie den kommentierten Konfigurationsabschnitt an.

**demo_dialog.bash:** Das Tool Dialog ermöglicht einfache grafische Benutzeroberflächen im Terminal. Sollte es nicht bereits vorhanden sein, installieren Sie das Paket „dialog“. Das Script „demo_dialog.bash“ zeigt ein Beispiel. Es stellt eine Frage, die Sie mit „Ja“ oder „Nein“ beantworten (siehe Abbildung). Das Ergebnis wird über notify-send als Benachrichtigung ausgegeben.

## Befehlszeilen aus der LinuxWelt 2025-03
Thorsten Eggeling's avatar
Thorsten Eggeling committed

**Bash-Basics**

`#!/usr/bin/env bash`

`chmod +x [Dateiname]`

`./[Dateiname]`

`~/[Ordner]/[Dateiname]`

`bash [Dateiname]`

`source ~/.profile`

`help cd`

`VARIABLE="Wert"`

`echo $VARIABLE`

```
if [ -n "$1" ]; then
 echo $1
else
 echo "Keine Option angegeben"
fi
```
**Backups mit Rsync erstellen***

`rsync -auP /home/sepp /media/sepp/usb/backup`

```
#!/usr/bin/env bash
date=`date "+%Y-%m-%dT%H_%M_%S"`
SOURCEDIR=$HOME/Dokumente
BACKUPDIR=/media/$USER/usb/backup
rsync -avP --log-file=$HOME/rsync.log --link-dest=$BACKUPDIR/current $SOURCEDIR $BACKUPDIR/back-$date
ln -nsf back-$date $BACKUPDIR/current
```
`diff --brief --recursive $HOME/Dokumente /media/$USER/usb/backup/[Backup-Ordner]/Dokumente`

**Backup-Script mit mehr Funktionen**

`sudo ./backup_ex.bash -s "/" -t "/Backup" -n "local-data"`

```
+ /var/
+ /var/www/
- /var/*
```
**Bilder per Script konvertieren**

`sudo apt install imagemagick-6.q16`

`convert Bild.png Bild.jpg`

`convert Bild.jpg -resize 50% Bild-klein.jpg`

```
#!/usr/bin/env bash
IN=~/Bilder/Urlaub
OUT=~/Bilder/Urlaub/klein
for f in $IN/*.jpg do
echo "Verarbeite $f"
filename=$(basename -- "$f")
filename="${filename%.*}"
/usr/bin/convert -resize 50% $f $OUT/$filename.jpg
done
```

**Diashow aus Bilddateien erstellen**

`sudo apt install ffmpeg `

`ffmpeg -framerate 1/3 -i img%03d.jpg -c:v libx264 -r 25 -pix_fmt yuv420p output.mp4`

**Universeller Entpacker**

`extr Archiv.tar.bz2`

`extr Archiv.7z`

**Schalten mit der Fritzbox**

`smart_fritz_terminal.bash 1 on`

`smart_fritz_terminal.bash 1 on`