Automatisierung
Übersicht über das Konsolen-Tutorial
Beispiel einer Infrastruktur[Bearbeiten]
Ein Arbeiten mit der Konsole wird dann extrem effizient, wenn man sich die passende Infrastruktur schafft und konsequent die Möglichkeiten der Shell auch nutzt.
Daher habe ich mir folgende Struktur zugelegt:
- /home/bin/std Hier sind die allgemeinen Scripte und das Profile local.profile
- /home/bin/ant Hier liegen die Scripte des Rechners mit dem Namen 'ant', darin das Profile local.profile
Gründe:
- Wenn jemand auf mehreren Systemen arbeitet, ist eine Trennung von rechnerspezifischen und allgemeinen Aufgaben sinnvoll. Daher die zwei Verzeichnisse
- Für die Kurzdefinitionen wie Alias-, Funktions- oder Variablendefinitionen ist eine Scriptdatei notwendig. Dafür dient jeweils die local.profile.
Erstellen der Infrastruktur[Bearbeiten]
mkdir -p /home/bin/std /home/bin/$(hostname)
cat <<'EOS' >/home/bin/std/local.profile
#! /bin/bash
if [ "$TERM" = "xterm" -o "$TERM" = "linux" ] ; then
echo loading /home/bin/std/local.profile
fi
HOST=$(hostname)
echo $PATH | grep "/home/bin/lnk" >/dev/null && export PATH=/home/bin/std:/home/bin/$HOST:$PATH
alias lT="ls -ldtr"
alias e_ps="$EDITOR /home/bin/std/local.profile"
alias e_pl="$EDITOR /home/bin/$HOST/local.profile"
alias g_bins="cd /home/bin/std"
alias g_binl="cd /home/bin/$HOST"
source /home/bin/$HOST/local.profile
EOS
- Die Ausgabe "loading..." erfolgt nur, wenn eine interaktive Konsole das Script aufruft. Bei Aufrufen mittels ssh verhindern nämlich Ausgaben das Ausführen der restlichen Kommandos.
- Der Rechnername wird in die Variable HOST gespeichert.
- Wenn die neuen Pfade /home/bin/std und /home/bin/$HOST noch nicht im Suchpfad stehen, werden sie eingebunden.
- Das Alias lT ist ein Beispiel für allgemeine Aliasdefinitionen, die Optionen von Kommandos "voreinstellen". lT gibt die Dateien sortiert nach Datum aus, das jüngste zuletzt.
- Mit e_ps wird das allgemeine Profile ediert, mit e_pl das rechnerspezifische.
- In das allgemeine Scriptverzeichnis gelangen wir mit g_bins, in das rechnerspezifische mit g_binl.
- Am Ende wird das rechnerspezische Profil eingebunden.
cat <<'EOS' >/home/bin/std/local.profile
#! /bin/bash
if [ "$TERM" = "xterm" -o "$TERM" = "linux" ] ; then
echo "loading /home/bin/$HOST/local.profile..."
fi
alias g_inst="cd /home/siduction/sidu-installer"
EOS
- Die Ausgabe "loading..." wird wie oben nur ausgegeben, wenn eine interaktive Konsole das Script startet.
- g_inst ist ein Beispiel für ein rechnerspezifisches Makro, das Einstellen eines häufig benutzten Pfades.
Schnelle Einbindung der Profiledateien[Bearbeiten]
Wenn Änderungen einer der Profile-Dateien erfolgt sind, sollen diese auch schnell aktiv werden. Dazu wird ein Link angelegt:
ln -s /home/bin/std/local.profile /p
Wird eine Änderung einer der zwei Profildateien vorgenommen, so aktiviert der Befehl
. /p
die neuen Definitionen.
Hinweis: . ist eine Abkürzung für den Befehl source.
Sollen die Definitionen in der Bash automatisch eingelesen werden, hilft ein:
echo "source /home/bin/std/local.profile" >>~/.bashrc
Automatisierung praktiziert[Bearbeiten]
Situation: Ein neues Projekt soll bearbeitet werden, das Basisverzeichnis sei ~/projekte/2011/bilder. Um schnell zu diesem Verzeichnis zu gelangen, definieren wir ein neues Alias im rechnerspezifischen Profile:
e_pl
Es wird der Editor mit dem Profile geöffnet, wir tragen den neuen Alias ein:
alias g_b="cd ~/projekte/2011/bilder"
Nach Beenden des Editors:
. /p
Jetzt ist die Definition aktiviert. Um zum neuen Projekt zu gelangen, genügt ein:
g_b