ubuntuusers.de

start dateien?

Status: Ungelöst | Ubuntu-Version: Ubuntu 6.06 (Dapper Drake)
Antworten |

lord_fritte

Anmeldungsdatum:
2. September 2006

Beiträge: 145

Wohnort: Köln

Hallo gibt es bei Linux so eine art startdatei womit man einen befehl direkt ausführen kann, also das was bei windows die *.bat Dateien sind.

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

Hi - jupp gibt es, und das eine ganze Menge

im Prinzip ist Linux eine riesengroße Sammlung von .bat-Dateien.

Aber mal ernsthaft >> sieh Dir dieses http://www.kg-it.de/linuxseiten/index.php?index=themes_bash an, und Du verstehst was ich meine!

Gruß syscon-hh

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

syscon-hh hat geschrieben:

im Prinzip ist Linux eine riesengroße Sammlung von .bat-Dateien.

Ja genau, der Kernel ist in bash geschrieben 🙄
Nix für ungut, aber bitte _erst_ informieren und _dann_ posten...

DrScott Team-Icon

Ehemalige
Avatar von DrScott

Anmeldungsdatum:
7. Juli 2005

Beiträge: 6018

Wohnort: Nürnberg

Hello World hat geschrieben:

Ja genau, der Kernel ist in bash geschrieben 🙄
Nix für ungut, aber bitte _erst_ informieren und _dann_ posten...

Nix für ungut, aber was soll das? Du weißt doch genau, wie syscon-hh das gemeint hat. Anstatt in anzuschnauzen, hättest _Du_ ihn informieren können. Das wäre zumindest konstruktiv gewesen. Ausserdem gibt es auch andere Auffassungen als "Linux ist nur ein Kernel". Hmm, jetzt mach ich glatt mal 'ne Umfrage.

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

Hi - nichts für ungut

aber ich kenne den Unterschied von .bat bzw. bash oder auch sh und was sich sonst noch im UNIX oder LINUX so tummelt!!!!

Ansonsten hätte ich einem WINDOW-janer ja garnicht bei der Stange halten können, wenn ich ihn all zu sehr gleich mit der ganzen Wahrheit konfrontiere.

Gruß an alle syscon-hh

DrScott Team-Icon

Ehemalige
Avatar von DrScott

Anmeldungsdatum:
7. Juli 2005

Beiträge: 6018

Wohnort: Nürnberg

@syscon-hh: 'hello world' ging es um etwas anderes: Mit Linux wird streng genommen _nur_ der sogenannte Kernel bezeichnet. Und in diesem kommen nunmal überhaupt gar keine Shellscripte vor. Und das steht im Widerspruch zu deiner Aussage: "im Prinzip ist Linux eine riesengroße Sammlung von .bat-Dateien"... siehe auch hier: GNU/Linux-Namensstreit

@lord_fritte: Schau mal hier: Rc_local

lord_fritte

(Themenstarter)

Anmeldungsdatum:
2. September 2006

Beiträge: 145

Wohnort: Köln

Aber wie kann ich ein script schreiben was z.b. Terminal Befehle ausführt und das dann auch starten?

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

lord_fritte hat geschrieben:

Aber wie kann ich ein script schreiben was z.b. Terminal Befehle ausführt und das dann auch starten?

Du kannst alle Befehle die du in der Shell ausführst, einfach in einer TExtdatei schreiben.

Die Ausführbarkeit wird unter Unix/Linux über ein Dateisystem Flag geregelt. Um diese Skriptdatei also auszuführen musst du das "x" Flag setzen. Das auch für "Executable" steht. Wenn du also eine Datei Namens "foo" hast musst du "chmod u+x foo" eintippen. Damit wird für den "user" (besitzer, Owner) die Datei asuführbar gemacht.

Wenn die Datei nicht in einem verzeichnis aus PATH (echo $PATH) steht, dann wird durch einfache eingabe von "foo" das Skript nicht ausgeführt. Du musst also ein absoluten oder Relativen Pfad zum Ausführen eingeben.

Absolut: /home/user/foo"
Relativ: ./foo

Die Relative Angabe geht nur wenn du dich im aktuellen Verzeichnis befindest. Die Dateiendung ist absolut unwichtig. Es kommt nur auf das "x" Flag an. Manchmal, wird aber auch ".sh" benutzt für ein Shellskript.

Ansonsten wenn das "x" Flag nicht gesetzt ist, kannst du auch direkt angeben, welcher Interpreter diese Datei ausführen soll. Das geht dann z.B: mit "bash foo". dann führt die bash das Skript "foo" aus.

Üblicherweise setzt man noch am Anfang des Skriptes die sogenannte Shebang Zeile. Den wenn du dein Skript mit "./foo" ausführst wird die aktuelle Shell benutzt. Meistens ist das Bash, aber das muss nicht sein, es gibt noch unzählige andere Shells. Damit das System halt weiß mit welcher Shell dein Skript ausgeführt wird kannst du als erste Zeile in deinem Skript folgendes Schreiben:

#!/bin/bash

Damit wird dein Skript immer mit der bash ausgeführt, auch wenn der Benutzer csh, oder eine andere Shell benutzt.

lord_fritte

(Themenstarter)

Anmeldungsdatum:
2. September 2006

Beiträge: 145

Wohnort: Köln

Warum geht das nicht?

#!/usr/bin/perl

mkdir ivtv
mkdir ivtv/test

Das Terminal sagt:

Missing comma after first argument to mkdir function at ./IvtvInstall line 4, at EOF
Execution of ./IvtvInstall aborted due to compilation errors.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4689

Wohnort: Berlin

Das geht nicht weil es kein gültiger Perl-Quelltext ist. Da musst Du mindestens Anführungszeichen um die Pfadnamen schreiben und ein Semikolon am Ende des Befehls.

#!/usr/bin/perl

mkdir 'ivtv';
mkdir 'ivtv/test';

DrScott Team-Icon

Ehemalige
Avatar von DrScott

Anmeldungsdatum:
7. Juli 2005

Beiträge: 6018

Wohnort: Nürnberg

lord_fritte hat geschrieben:

Warum geht das nicht?

Hab ich mir gleich gedacht, dass Du an dieser Stelle aus dem Tritt kommst: Sid Burn hat für diese Art von Postings eine, naja sagen wir etwas nachteilige Signatur. Keine Ahnung warum er da so unlesbares Zeug drin stehen hat...

Also nochmal: Sids Beitrag ist schon vor dem 'perl-zeug' zuende...

lord_fritte

(Themenstarter)

Anmeldungsdatum:
2. September 2006

Beiträge: 145

Wohnort: Köln

oh man schon verwirrend das ganze

Blattlaus

Avatar von Blattlaus

Anmeldungsdatum:
29. März 2006

Beiträge: 1399

lord_fritte hat geschrieben:

Warum geht das nicht?

#!/usr/bin/perl

mkdir ivtv
mkdir ivtv/test

Weil du da oben ein "/usr/bin/perl" stehen hast.
Dieses "#!" nennt sich Shebang und wenn ein LinuxPc so eine Datei ausführen will, dann benutzt er dazu den Interpreter, der nach dem Shebang steht. Das Problem in deinem Fall ist jetzt, dass du garkein Perl verwendest, sondern normale Bash-Befehle.
Deswegen muss die Datei so aussehen:

#!/bin/bash

mkdir ivtv
mkdir ivtv/test

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Hab ich mir gleich gedacht, dass Du an dieser Stelle aus dem Tritt kommst: Sid Burn hat für diese Art von Postings eine, naja sagen wir etwas nachteilige Signatur.

Ach warum nachteilig.
Durch diesen Fehler den er gemacht hat, wird er jetzt wohl die Shebang Zeile richtig verstanden haben. 😉

lord_fritte

(Themenstarter)

Anmeldungsdatum:
2. September 2006

Beiträge: 145

Wohnort: Köln

Ja habe ich jetzt ☺

Antworten |