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.