Inhaltsverzeichnis
Shell-Skripte
Oft ist die Rede von sogenannten Shell- oder Bash-Skripten. Doch wie geht man mit dem Code dieser Skripte um? In dieser Anleitung erfährst du, wie du Shell-Skripte speichern, ausführbar machen und schließlich verwenden kannst. Dazu gehört u.a. das Anlegen eines eigenen Skript-Ordners.
Softwarevoraussetzungen: Editor | Dateirechte | Ordner/Dateien anlegen
Schwierigkeitsgrad: Mittel
Ausgetestet mit folgenden Betriebssystemen: Ubuntu | Debian | teilweise auch andere Distributionen
Grundlegendes zur Shell
Aus Wikipedia:
Die Unix-Shell oder kurz Shell (en. Hülle, Schale) bezeichnet die traditionelle Benutzerschnittstelle unter Unix oder unixoiden Computer-Betriebssystemen. Der Benutzer kann in einer Eingabezeile Kommandos eintippen, die der Computer dann sogleich ausführt. Man spricht darum auch von einem Kommandozeileninterpreter.
In der Regel hat der Benutzer unter Unix die Wahl zwischen verschiedenen Shells. Vom Sprachumfang her sind alle üblichen Unix-Shells als vollwertige Skriptsprachen zur Programmierung und zur Automatisierung von Aufgaben verwendbar; die Abgrenzung zu reinen Skriptsprachen (z. B. Perl, awk) besteht darin, dass Shells besondere Mittel für den interaktiven Dialog mit dem Anwender bereitstellen, die vom Ausgeben eines Prompts im einfachsten Fall bis hin zur Möglichkeit des Editierens der eingegebenen Befehle oder zur Jobsteuerung reichen.
(…)
Ubuntu/Debian und die Shell
Unter Ubuntu setzt man hauptsächlich die Bash (siehe hier) beziehungsweise in bestimmten Skripten die Dash (siehe hier), wobei /bin/dash ein Softlink zu /bin/bash darstellt. Persönliche Anweisungen im Terminal werden so gut wie immer in der der Bash ausgeführt, deshalb nutzt der Standard-Ubuntuuser auch in seinen Skripten die Bash, dies wird am Anfang des Skriptes durch
#!/bin/bash
kenntlich gemacht.
Skripte nutzen
Grundsätze
Wie schon erwähnt muss am Beginn jedes Bash-Skriptes diese Zeile angehängt werden:
#!/bin/bash
Falls die Dash (/bin/sh
ist ein Symlink auf /bin/bash
) verwendet werden soll wird bash
durch sh
ersetzt:
#!/bin/sh
Anschließend folgt der Code. Einfache Skripte können zum Beispiel einfach nur Befehle ohne Variablen und co. enthalten:
#!/bin/bash cp datei /ordner # Beispiel eines Befehl
Kommentare können durch #
kenntlich gemacht werden:
#!/bin/bash # das ist ein Kommentar
Editieren und Speichern
Um ein Skript zu erstellen öffnet man einen Editor (z.B. gedit oder nano) und füllt diesen mit dem zu ausführenden Code. Die Datei speichert man als einfache Datei ohne Endung
ab.
skript # Beispiel
Alternativ kann man das Skript auch als .sh
oder .bash
abspeichern. Dann muss der Pfad zum Skript natürlich verändert werden!
Ausführbar machen
Damit man das Skript ausführen kann, muss man es noch ausführbar machen, dafür bedient man sich dem Befehl chmod
und dem Dateirecht +x
:
user@system:~$ chmod +x skript # Beispiel
Ausführen
Ausführen kann man dann das Skript einfach durch Eingabe des Namens:
user@system:~$ ./skript # Beispiel user@system:~$ ./sudo skript # falls root-Rechte benötigt werden
Viele Skripte sollte/muss man regelmäßig ausführen, dazu bedient man sich Cron
Skriptordner
Standardmäßig werden unter Linux Skripte in /bin
abgelegt beziehungsweise in /home/benutzer/bin
, dieser Ordner in /home/user
könnte man als „persönliches bin“ bezeichnen, denn hier legt der Benutzer seine Skripte an. Dieser Ordner (/home/user/bin
) muss man allerdings eigenhändig anlegen:
user@system:~$ cd ~ # wechselt in /home/user user@system:~$ mkdir bin # legt den Ordner an
natürlich benötigt dieser bestimmte Rechte:
user@system:~$ chmod 744 bin # verleiht die Rechte 774
Nun muss der Ordner noch der Bash bekannt gemacht werden. Dazu editiert man die Datei .bashrc
im Home des Benutzers:
user@system:~$ nano .bashrc # nano öffnet die .bashrc (nano muss installiert sein -> sudo apt-get install nano)
und fügt am besten unten diese Zeile ein:
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/BENUTZER/bin # "BENUTZER" durch Benutzernamen ersetzen PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/christoph/bin # Beispiel
Nun kann man Skripte wie dieses Beispiel zeigt ohne Pfad(/home/user/bin/..
) ausführen
user@system:~$ /home/ich/bin/skript # ohne .bashrc Anpassung (Standard) user@system:~$ skript # mit .bashrc Anpassung
Wichtig ist aber, dass die Skripe ausführbar gemacht worden sind (chmod +x
).
— chrisge 2018/05/26 00:53