Ein ShellScript um Ordner anzulegen

Ich habe des öfteren die Situtation, das ich in einer Datei zeilenweise Ordnernamen stehen habe welche ich anlegen möchte. Da ein manuelles Anlegen sehr zeitaufwendig und unwirtschaftlich ist, habe ich mir für diesen Zweck ein kleines ShellScript, bzw. BashScript geschrieben.

#!/bin/bash
exec<$1
while read line
do
	mkdir -p $line;
done

<UPDATE>
und für alle die wissen wollen, wie man fancy source code snippets in wordpress einfügen kann, ist hier der Link zur Beschreibung: http://en.support.wordpress.com/code/posting-source-code/
</UPDATE>

Angefangen habe ich wie folgt:

die erste Zeile eines solchen Scripts gibt an, mit welcher shell das Script ausgeführt werden soll. Es muss der Pfad angegeben werden, unter dem die shell im System zu finden ist. Ich verwende auf meinem Ubuntu System die Shell bash, welche unter dem Pfad /bin/bash zu finden ist:

#!/bin/bash

Normalerweise wird das # Zeichen als Kommentarmarkierung gesehen, in der ersten Zeile ist es aber notwendig.

Die nächste Überlegung war, das mein Script eine Eingabe entgegen nehmen könnten soll und zwar den Dateinamen, in dem die Ordnernamen stehen, die angelegt werden sollen.

Mein Script wird ja wie folgt aufgerufen: create_folder.sh Eingabedatei

Die Anzahl der übergebenen Parameter ließe sich im Script mit dem Kommando $# ermitteln und wäre in diesem Fall 1. Mit $0 kann man im script auf den Scriptname selbst zugreifen. $1 bietet Zugriff auf den ersten Parameter, bei mehreren Parameter  entsprechend $2, $3, $4, … je nach Anzahl der Parameter.

Damit der Inhalt der übergebenen Datei im Script verfügbar ist, muss diese dem Script bekannt gemacht werden, was mit dem Befehl exec<$1 geschieht.

Um nun aus dem Text in jeder Zeile einen Ordner anzulegen, muss die Eingabedatei zeilenweise gelesen und verarbeitet werden. Dazu verwende ich eine while-Schleife, die solange läuft, bis keine Zeile mehr zu lesen ist.

while read line
do
	something;
done

Zu guter Letzt fehlt noch die eigentliche Aktion: den Ordner anlegen. Um einen Ordern per shell anzulegen gibt es das Kommado mkdir Ordnername. Der Parameter -p gibt an, das auch Elternordner angelegt werden sollen, wenn z.b. ein Pfad der Form Ebene1/Ebene2/Ordner an mkdir übergeben wird.

Kombiniert man nun alle Informationen zu einem Script, so erhält man folgendes:

#!/bin/bash
exec<$1
while read line
do
	mkdir -p $line;
done

und das Script ist fertig. Nun muss das Script nur noch an einem geeigneten Ort hinterlegt werden und ausführbar gemacht werden. Ich habe mir dafür einen Ordner Scripte in meinem Homefolder angelegt. In diesen habe ich das Script kopiert und mit chmod +x create_folder.sh ausführbar gemacht.

Letzter Schritt: der Ordner in dem das Script liegt muss in der $PATH Variable angegeben sein, damit die Shell weiß in welchen Ordnern sie nach Programmen suchen soll. Die Variable setzt man in der Datei .bashrc im Homefolder. Der Befehl dazu sieht wie folgt aus:

export PATH=$PATH:/path/to/scripts

Damit wird der neue Pfad an die bisherige Variable angefügt.

Und geschafft 😉

Advertisements

One thought on “Ein ShellScript um Ordner anzulegen

  1. well then, I certainly do not understand all the details you wrote about, sorry… but i like to read your blog though.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s