24.03.2014 Aufrufe

Linux-Magazin 20 Jahre Linux (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Programmieren<br />

www.linux-magazin.de Perl-Snapshot 09/<strong>20</strong>11<br />

104<br />

Perl-Skripte reproduzierbar umziehen<br />

Schicker Umzug<br />

Wer viel in der Shell arbeitet und navigiert, nach Textstücken sucht oder CPAN-Module installiert, wird die hier<br />

vorgestellten Helferskripte bestimmt schnell schätzen lernen. Michael Schilli<br />

in einem Git-Repository liegt, sollte klar<br />

sein. Es nutzt das Modul Sysadm::Install<br />

vom CPAN – einzig wegen dessen Funktion<br />

»mkd()«, die neue Verzeichnisse<br />

ohne Murren anlegt und mit Log4perl-<br />

Ausgaben zum Ablauf Auskunft gibt.<br />

© zettberlin, photocase.com<br />

Neulich zog ich auf einen neuen Entwicklungs-Desktop<br />

um und packte die<br />

Gelegenheit beim Schopf, mein überquellendes<br />

Homeverzeichnis nicht nur aufzuräumen,<br />

sondern neu aufzubauen. Dort<br />

hatten sich über die <strong>Jahre</strong> Hunderte von<br />

teilweise schon wieder obsoleten Helferskripten<br />

angesammelt. Um Ordnung<br />

in das Chaos zu bringen, beschloss ich,<br />

wirklich bei null anzufangen und die erst<br />

bei der täglichen Tipparbeit tatsächlich<br />

vermissten Skripte nachzuinstallieren –<br />

in reproduzierbarer Art und Weise, versteht<br />

sich, auf dass der nächste Umzug<br />

wie von allein vonstattengehe.<br />

Versioniert mit Link<br />

Alle Skripte sollen danach in Unterverzeichnissen<br />

verschiedener Git-Repositories<br />

liegen. Damit der Benutzer die Helferlein<br />

ohne Pfadangabe aufrufen kann,<br />

zeigen Symlinks vom »bin«-Pfad des<br />

Homeverzeichnisses zu den eigentlichen<br />

Skripten. Ein weiteres Skript, »binlinks«,<br />

ordnet in seinem »DATA«-Bereich den<br />

ins Git-Repository eingecheckten Skripten<br />

Links im lokalen »bin«-Verzeichnis<br />

des Users zu. So verbleibt zum Beispiel<br />

das Skript »logtemp« zum Auslesen des<br />

in [2] vorgestellten Temperaturfühlers<br />

im Git-Repository »articles«, während<br />

das handgeschriebene Konvertierwerkzeug<br />

»cvs2git« im Schilli-Labs-Repository<br />

»sandbox« aufgehoben ist.<br />

Kommt ein neues Skript in den »bin«-<br />

Bereich hinzu, trägt der Entwickler es ans<br />

Ende des »DATA«-Bereichs<br />

von »binlinks«<br />

ein und ruft Letzteres<br />

auf (Listing 1). Es<br />

klappert dann alle Einträge<br />

ab, verifiziert, ob<br />

der gewünschte Link<br />

in »~/bin« schon existiert,<br />

und legt ihn nötigenfalls<br />

an. Dass »binlinks«<br />

selbst wiederum<br />

Folge dem Link<br />

So handelt es sich bei einem aufgerufenen<br />

Skript häufig um einen Symlink.<br />

Wenn ein Symlink zu einer Datei in einem<br />

anderen Verzeichnis zeigt, möchten<br />

Entwickler gerne mit »cd« dorthin<br />

wechseln. Dies erledigt das Kommando<br />

»lcd« mit dem Link als Parameter (Abbildung<br />

1).<br />

Alte Unix-Hasen wissen natürlich, dass<br />

ein Skript nicht das aktuelle Verzeichnis<br />

des Aufrufers wechseln kann. Skripte<br />

laufen in einer Subshell ab, und bei deren<br />

Beendigung sind für den Aufrufer<br />

keine nachhaltigen Nebenwirkungen bemerkbar.<br />

Aus diesem Grund ist »lcd« im<br />

Startskript ».bashrc« der Shell als Bash-<br />

Funktion definiert:<br />

function lcd () { cd `symlinkdir $1`; \<br />

pwd; ls; }<br />

Ruft der Anwender nun »lcd bin/cvs2git«<br />

auf, dann übergibt die Bash-Funktion das<br />

Argument »bin/cvs2git« an das Skript<br />

»symlinkdir« und ruft das Shellkom-<br />

Abbildung 1: Die hier genutzte Funktion »lcd« wechselt in das Verzeichnis<br />

mit dem Skript, auf das ein Symlink zeigt.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!