Batch-Datei für Linux?

7 Antworten

Hallo

wollte fragen, ob man, ähnlich wie in Windows eine Batch-Datei, für Linux schreiben kann.

  • Das englische Wort batch bedeutet übersetzt soviel wie Stapel, es erklärt also bereits in der Bezeichnung das die darin verwendeten Kommandos nacheinander abgearbeitet werden (Einen Stapel Akten arbeitet man ja auch von oben nach unten ab)
  • Für unixoide Systeme, wie auch GNU/Linux eines ist, gibt es selbstverständlich auch so genannte Script-Sprachen in denen Kommandos von oben nach unten abgearbeitet werden.
  • Als fest eingebaute ist da als erstes die Shell zu nennen, von der es aber wiederum unterschiedliche Ausführungen und Versionsnummern gibt (sh, bash, ksh, zsh usw.)
  • Die wohl am weitesten verbreitete ist die bash (Bourn again Shell)
  • Zum Zwecke der einfacheren Zuordnung für den Benutzer {denn GNU/Linux braucht keine Dateinamenerweiterung (Extension)} wird für Shell-Scripte meist die Endung *.sh vergeben.
  • Einige (viele) dieser Scripte liegen bereits auf jeder installierten Linux-Distribution. Du kannst den Pfad in dem diese liegen und den Namen so herausfinden:
find / -iname '*.sh' 2>/dev/null

Diese kannst Du Dir dann mal in einem Editor (nano ist sehr beliebt) ansehen:

nano $(find ./Scripts/ -iname '*.sh' 2>/dev/null|head -n1)

Hier wird nano, mit der ersten gefundenen Datei die mit *.sh endet, gestartet.

Weitere Script-Sprachen in denen man Stapelweise Verarbeitung machen kann sind python, perl, awk und viele mehr. Und jetzt das Beste:

Man kann diese meist sogar miteinander kombinieren!

Linuxhase

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102

Die Dateiendung würde mir schon helfen,

Gibt keine.

Wenn man Bock hat, kann man z.B. .sh nehmen - ist aber irrelevant.

Was dann machen?

#!/bin/bash

Erste Zeile deiner Datei das da oben reinschreiben. Nennt sich Shebang und sagt deinem System: Führe diese Datei mit /bin/bash aus.

Bash ist hierbei das, was häufig genutzt wird. Gibt aber noch viel mehr - wie ksh, sh und so weiter.

Dannach noch im Terminal die Datei ausführbar machen:

chmod +x DATEI

=> Und hast ausführbares Skript.

Mehr dazu hier:

https://wiki.ubuntuusers.de/Shell/

Gruß

Tuxgamer


Linuxhase  24.06.2017, 13:26

@Tuxgamer2

Nennt sich Shebang und sagt deinem System: Führe diese Datei mit /bin/bash aus.

Genauer gesagt wird mit dem Shebang die Anwendung angegeben welche den folgenden Inhalt interpretieren soll, dieses Programm nennt man dann auch sinnigerweise einen Interpreter.

Schließlich kann ich auch mit Python eine Shell Datei starten, was halt wegen falscher Interpretation zu Fehlermeldungen führen würde ;-)

Dannach noch im Terminal die Datei ausführbar machen:

Man braucht auch nicht zwingend einen Shebang und schon gar nicht muss man die Datei mit dem ausführbar-Flag versehen, weil man den Interpreter auch direkt angeben kann:

bash tollesScript.sh

Selbstverständlich kann man dem verwendeten Interpreter auch noch Parameter mitgeben, sowohl im Shebang selbst als auch beim direkten Aufruf:

#/bin/bash -x

oder eben

bash -x tollesScript.sh

Was die Interpretation nochmals verändert.

Linuxhase

0
Tuxgamer2  24.06.2017, 13:35
@Linuxhase

@Linuxhase

Man braucht auch nicht zwingend einen Shebang und schon gar nicht muss man die Datei mit dem ausführbar-Flag versehen, weil man den Interpreter auch direkt angeben kann:

Es wurde klar nach einer Dateiendung gefragt. Und da ist das Äquivalent in der Linux-Welt klar der Shebang.

0
guenterhalt  24.06.2017, 18:34
@Tuxgamer2

korrekt ist das auch nicht.
Shebang sieht man nur, wenn man in die Datei hinein sieht und allein  nutzt auch diese Kopfzeile nicht, wenn nicht das execute-Flag gesetzt ist.
Andererseits braucht man weder das eine ( #!/bin<shell> ) noch das andere ( x-Flag ) wenn man den Dateinamen als Parameter im Aufruf einer  Shell mit gibt.

@Linuxhase hat das ja auch so beschrieben.

0
Tuxgamer2  24.06.2017, 19:19
@guenterhalt

Hast du noch nicht gemerkt, dass Linux kein Windows ist? Natürlich gibt es da Unterschiede.

Und wo du Windows die Dateiendung nutzt, um zu bestimmen, was mit dieser Datei zu machen ist, nimmst du bei Linux-Skripten den Shebang.

Wo ist bitte schön das Problem an dieser Aussage?????

0
Linuxhase  25.06.2017, 11:50
@Tuxgamer2

@tuxgamer2

Und wo du Windows die Dateiendung nutzt, um zu bestimmen, was mit dieser Datei zu machen ist, nimmst du bei Linux-Skripten den Shebang.

  • man kann aber nicht Äpfel mit Birnen vergleichen.
  • Eine Batch-Datei braucht (wie alle ausführbaren Dateien unter Windows & DOS) kein Flag um gestartet zu werden.

Ach egal, den Fragesteller ist in diesem Thread schon viel mitgeteilt worden und richtig falsch ist keine der Aussagen weil es eben Äpfel & Birnen sind.

Meine Hinweise waren ja auch nicht als Verbesserung Deines Beitrages gedacht, sondern lediglich als weitere Information und andere Möglichkeit.

Linuxhase

0
Tuxgamer2  25.06.2017, 12:02
@Linuxhase

man kann aber nicht Äpfel mit Birnen vergleichen.

Dies ist auch so eine klassische falsche Annahme, die mittlerweile jedoch widerlegt wurde:

http://www.der-postillon.com/2017/05/aepfel-birnen.html

Meine Hinweise waren ja auch nicht als Verbesserung Deines Beitrages gedacht, sondern lediglich als weitere Information und andere Möglichkeit.

Hast doch auch eine eigene Antwort geschrieben, die diese Informationen beinhaltet.

0

Hallo.

Nennt sich Shell script.

Viel Erfolg.