Für alle Windowsumsteiger eine kleine Hilfe:
Wer die unter Windows so beliebten Batchdateien vom Prinzip her auch gerne einmal auf seinem Mac verwenden würde und mit dem eigentlich viel genialeren Automator oder dem AppleScript nichts anfangen kann oder will – Batchskripte nennen sich auf dem Mac Shellskripte und haben als Dateiendung *.sh. Hier nun die absoluten Grundlagen.
Wie erstelle ich ein eigenes Shellskript?
Wie auch unter Windows reicht dafür natürlich ein einfacher Texteditor.
Wichtig ist nur, dass in Zeile 1 dieser Textdatei der String „#!/bin/bash“ (oder auch „#!/bin/sh“ etc…) stehen muss, da sonst die Datei nicht als Skript erkannt wird. Dann diese Datei an einem beliebigen Ort mit zum Beispiel der Dateiendung *.sh abspeichern. Anschliessend müssen noch die Execute-Rechte gesetzt werden, da sonst die Datei ja nicht ausführbar ist. Das erreicht man im Terminal mit dem folgenden Befehl:
chmod u+x meinSkript.sh
Hier nun eine Beispieldatei, die das aktuelle Datum und den aktuellen Verzeichnisinhalt auflistet.
#!/bin/bash
date
ls
Wie kann ich dieses Shellskript ausführen?
Variante 1: Im Terminal einfach die Datei über Ihren Pfad und Namen gefolgt von der Entertaste aufrufen. Unter Windows geht das mit Batchdateien ja genauso.
Variante 2: Per Doppelklick öffnen (was unter Windows mit Batchdateien geht) geht auch, aber: Per default wird die Datei mit dem Texteditor geöffnet. Also die Datei im Finder kurz markieren, Apfel+I drücken und unter ÖFFNEN MIT: als Programm „Terminal“ auswählen.
Wo finde ich Hilfe zu den Unix-Befehlen?
Einfach im Terminal den Befehl „man“ (wie Manual) eingeben oder auch direkt den Befehl den man beschrieben haben möchte z.B. „man ls“ oder „man rsync“ etc. Ansonsten hilft ja noch Dr. Google…
Wie kann ich Skripte erstellen und testen?
Durch Verwendung des Befehls „sh -vx meinSkript.sh“ wird ein Skript zeilenweise ausgeführt und ist somit besser nachvollziehbar.
funktioniert bei mir leider nicht. Bei mir kommt immer „no such file or directory“
was mache ich falsch?
Was genau funktioniert nicht? Ich vermute, du tippst den Namen deines Scripts in die Kommandozeile ein und drückst die ENTER-Taste? Unter Linux und MacOS geht das aber nur, wenn das aktuelle Verzeichnis in der PATH-Variablen eingetragen ist. Beim home-Verzeichnis ist das üblicherweise nicht der Fall.
Deshalb musst du der Shell sagen, dass sie dein Script aus dem aktuellen Verzeichnis starten soll, also tippe
statt
meinSript.sh
./meinScript.sh
Es muss also ein Punkt und ein Slash (Schrägstrich) vorangesetzt werden (ohne Leerzeichen!)
Beim Erstellen von .sh-Files unter Windows-Systemen kann es vorkommen, dass DOS-Zeilenumbrüche gesetzt werden. Auch dann bekommt man den Fehler „no such file or directory“ – Der Pfad zeigt dann oft „\r“ am Ende.
Hat mich einiges an Zeit gekostet – dementsprechend hier als kleine Stütze für alle .sh-Anfänger 😉