Batch-Datei für Linux?
Hey, ich bin relativ neu in Linux und wollte fragen, ob man, ähnlich wie in Windows eine Batch-Datei, für Linux schreiben kann. Die Dateiendung würde mir schon helfen, dann könnte ich den Syntax ja auch googlen.
Danke im voraus!
7 Antworten
Suche nach
O'Reilly "Unix Power Tools"
vllt auch als PDF, aber als Buch ist besser, dort findest du ALLES!!!
Dort gibt es sehr gute Verzeichnis - orientiert nach Aufgaben - Probleme und dazu CD mit Skripts.
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
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
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.
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.
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?????
@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
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.
.sh Shell
Hallo.
Nennt sich Shell script.
Viel Erfolg.
@Tuxgamer2
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 ;-)
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:
Selbstverständlich kann man dem verwendeten Interpreter auch noch Parameter mitgeben, sowohl im Shebang selbst als auch beim direkten Aufruf:
oder eben
Was die Interpretation nochmals verändert.
Linuxhase