Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
25.07.2021, 15:38:18

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25780
  • Letzte: ElSol
Statistiken
  • Beiträge insgesamt: 746784
  • Themen insgesamt: 60061
  • Heute online: 385
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  Wie starte ich einen Shellscript?  (Gelesen 24504 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Wie starte ich einen Shellscript?
« am: 13.10.2013, 16:10:36 »
Die kurze Erklärung:
1) Script in Editor kopieren und ggf. anpassen
2) in ~/bin/SCRIPTNAME speichern
3) Ausführrecht setzen
4) im Terminal durch eintippen von SCRIPTNAME starten
fertig, furios feuriges freuen.



Die alternative Erklärung:
1) Script in Editor kopieren und ggf. anpassen
2) in ~/SCRIPTNAME.sh speichern
3) Ausführrecht setzen
4) im Terminal durch eintippen von ~/SCRIPTNAME.sh starten
fertig, furios feuriges freuen,
bis man sich sein Home mit dem Zeug zugemüllt hat, dann bitterliches bereuen.



Die lange Erklärung:
1) Script in Editor kopieren und ggf. anpassen
Mit "kopieren" ist das altbekannte Copy&Paste gemeint.
Ein "Editor" ist ein Werkzeug zum Erstellen von einfachen Texten. Ein Paar zarte: kwrite, kate, gedit, nano, joe, ... Ein Paar harte: vi, vim, emacs, ...


2) in ~/bin/SCRIPTNAME speichern
Die Tilde "~" ist ein praktisches Kürzel für den eigenen Homeordner und wird automatisch ersetzt.
Der Ordner "bin" muss ggf. zuerst angelegt werden. Er muss "bin" heißen und sich direkt auf dem Homeordner befinden.
Erst danach ein Terminal starten (oder neustarten), um dem System die Möglichkeit zu geben, den Ordner richtig einzubinden.
Ob das geklappt hat, kann man im Terminal so kontrollieren:
echo $PATHDa soll dann unter Anderem zu sehen sein: "/home/MEINNAME/bin". MEINNAME ist dein Username.
Ist es nicht zu sehen, lädt man die Datei ~/bashrc in den Editor und kopiert folgendes als letzte Zeile ein:
PATH="${HOME}/bin:$PATH"SCRIPTNAME sollte ein sinniger Name sein. Wer Ärger mag, benutzt Leerzeichen, Tabs, Newlines, hebräische Hieroglyphen und sonstiges UTF-8-Zeug. Das funktioniert zwar, aber man wird es noch bereuen.
Die Sache mit dem Ordner "bin" und PATH muss man nur ein einziges mal machen.
Ab dem nächsten Terminalstart ist die Sache bis zum Systemtod erledigt.


3) Ausführrecht setzen
Im Dateimanager/anzeiger mit der rechten Maustaste auf dem Script rumklicken, bis man so etwas wie "Eigenschaften" findet.
Darin so etwas wie "Berechtigungen" suchen und dort so etwas wie "Ausführbar" anhaken/wählen.
Oder man macht kurzen Prozess im Terminal:
chmod u=rwx ~/bin/SCRIPTNAME

4) im Terminal durch eintippen von SCRIPTNAME starten
Man kann diese Scripte nun von überall aus starten wie einen normalen Befehl.

fertig, furios feuriges freuen.



Wichtige Anmerkung: Ein Script sollte nicht ins Terminal kopiert werden. Das kann funktionieren, muss aber nicht.
Außerdem können wichtige Env-Variablen verstellt worden sein, was kuriose bis fiese Auswirkungen haben kann.
Tut es nicht!


Ein Tipp: Unter Linux gilt: Name ist Name. Wenn man einen Script beispielsweise "Meinscript.sh" benennt, muss man ihn auch genau so aufrufen, also mitsamt der Suffix ".sh" und auch dem Großbuchstaben "M".
« Letzte Änderung: 15.10.2013, 11:28:41 von Nessie »

Re: Wie starte ich einen Shellscript?
« Antwort #1 am: 13.10.2013, 17:27:55 »
4) im Terminal durch eintippen von SCRIPTNAME starten
fertig, furios feuriges freuen.
sie her nachbar, da fehlt was. so wird das script nicht ausgeführt
ohne das gehts nicht:./
also muß es so sein:
<pfadZumScript>./<scriptname>

Re: Wie starte ich einen Shellscript?
« Antwort #2 am: 13.10.2013, 17:34:18 »
... so wird das script nicht ausgeführt
Quark, es geht:
~> echo 'echo test' >test.sh
~> chmod u=rwx test.sh
~> ~/test.sh
test
~>


Erklärung: ./ ist ein relativer Pfad, ~/ ein absoluter.
« Letzte Änderung: 13.10.2013, 17:40:19 von Nessie »

Seestern

  • Gast
Re: Wie starte ich einen Shellscript?
« Antwort #3 am: 13.10.2013, 18:14:55 »
Ich finde das gut das jemand der Ahnung hat das mal ausführlich erklärt. Somit hat auch so ein Taugenichts (wie ich z.B.) die Chance etwas zu lernen.
Danke Nessie und bitte weiter so!

Re: Wie starte ich einen Shellscript?
« Antwort #4 am: 13.10.2013, 18:27:34 »
Danke für die Blumen.  :)

Wer mich kennt, weiss, dass ich mich ein wenig mit der Bash auskenne und auch Tipps übrig habe.

Re: Wie starte ich einen Shellscript?
« Antwort #5 am: 13.10.2013, 18:27:58 »
sie her nachbar, da fehlt was. so wird das script nicht ausgeführt
ohne das gehts nicht:./
Wieso nicht? Das Script wurde in ~/bin gespeichert und der Pfad mit ~/bin erweitert. Dann kann man sich das . sparen.

Kleiner Kommentar:chmod u=rwx test.shIch mache das immer so:chmod +x test.shKann ich mir einfach besser merken. +x heisst 'füge zu (+) das eXecute Bit
« Letzte Änderung: 13.10.2013, 19:38:14 von framp »

lupu

  • Gast
Re: Wie starte ich einen Shellscript?
« Antwort #6 am: 14.10.2013, 23:23:26 »
...chmod u=rwx test.shIch mache das immer so:chmod +x test.shKann ich mir einfach besser merken. +x heisst 'füge zu (+) das eXecute Bit
Bewirkt aber mMn nicht ganz dasselbe, denn dadurch erhalten auch die Gruppenmitglieder und andere das Ausführrecht.
also zB statt : rwxr--r-- ist es dann : rwxr-xr-x , anders ausgedrückt darf dann jeder test.sh ausführen,
nicht nur der Besitzer(u) wie im ersten Befehl.
Wenn das so gewollt ist, geht es mit +x allerdings einfacher.
« Letzte Änderung: 14.10.2013, 23:26:38 von lupu »

Re: Wie starte ich einen Shellscript?
« Antwort #7 am: 19.10.2013, 15:46:11 »
Hier mal ein Script, mit dem man bequem Scripte in seinem ~/bin/ editieren kann:
#!/bin/bash
### - 16.10.1999 -
Hilfe(){
  echo "Sed ist mein Skript-Editor"
  echo "Syntax: $( basename "$1" ) SKRIPT"
  exit
}
test "$1" = "-h" -o "$1" = "-help" -o "$1" = "--help" && Hilfe

test $# = 0 && { echo "Fehler: kein SKRIPT angegeben !"; Hilfe; }


# Benutzervariablen
StdVerz=~/bin/
Skript="$StdVerz$( basename "$1" )"
HilfeMak="${StdVerz}Hilfe.mak"
Editor=kwrite



# Ist der Skript schon vorhanden ?
if test -f $Skript ; then
    # Ja: Editor
    $Editor $Skript >/dev/null 2>/dev/null &
else
    # Nein: Kopf erzeugen, Editor
    echo "#!/bin/bash" >$Skript
    echo "# - $(date +"%d.%m.%Y") -" >>"$Skript"
    cat "$HilfeMak" >>"$Skript"
    chmod u=rwx "${Skript}"
    $Editor "$Skript" >/dev/null 2>/dev/null &
fi
Bei mir heißt er "Sed" (man beachte das große S) und liegt selbstverständlich im Ordner "~/bin/".

Dazu gehört das Makro "~/bin/Hilfe.mak":
Hilfe(){
  echo "${0##*/} ist "
  echo "Syntax: ${0##*/}"
  exit
}
test "${1}" = "-h" -o "${1}" = "-help" -o "${1}" = "--help" && Hilfe

Will man einen neuen Script erzeugen, ruft man auf:
Sed NEUERSCRIPTAutomatisch wird jetzt der Shebang (#!/bin/bash) gesetzt, das aktuelle Datum als Kommentar darunter, eine Funktion namens "Hilfe" angefügt (liefert einen Hilfetext), das Ausführrecht gesetzt und das Ganze dann in den Lieblingseditor (Benutzervariablen) geladen. Selbstverständlich landet der Script im Ordner "~/bin/".

Will man einen existierenden Script editieren, wird aufgerufen:
Sed SCRIPTMan kann den existierenden Script mit oder ohne Pfad aufrufen, er wird auf jeden Fall im Ordner "~/bin/" erwartet (so kann man die automatische Dateinamenvervollständigung der Bash nutzen).


Die Formulierung ist schon ein Wenig älter, aber es läuft immer noch (deshalb liebe ich die Bash).

Re: Wie starte ich einen Shellscript?
« Antwort #8 am: 30.10.2013, 21:45:53 »
Ich suche derzeit vergeblich die Stelle wo PATH definiert wird um die Variable zu erweitern.

Hintergrund:
Meine eigenen Scripte habe ich in der Cloud um sie von mehreren Rechnern zu verwenden.

Wäre schön wenn ich es hier finde.

DeVIL-I386

  • Administrator
  • *****
Re: Wie starte ich einen Shellscript?
« Antwort #9 am: 30.10.2013, 21:57:35 »

Re: Wie starte ich einen Shellscript?
« Antwort #10 am: 30.10.2013, 22:25:00 »
Danke, den halben Tag gesucht und nicht gefunden

Re: Wie starte ich einen Shellscript?
« Antwort #11 am: 08.12.2013, 03:19:36 »
@Nessie

Dein Script geht bei mir nicht es kommen fehler !

Sed test
/bin/Sed: Zeile 27: /home/ubuntu/bin/test: Datei oder Verzeichnis nicht gefunden
/bin/Sed: Zeile 28: /home/ubuntu/bin/test: Datei oder Verzeichnis nicht gefunden
/bin/Sed: Zeile 29: /home/ubuntu/bin/test: Datei oder Verzeichnis nicht gefunden
chmod: Zugriff auf »/home/ubuntu/bin/test“ nicht möglich: Datei oder Verzeichnis nicht gefunden
ubuntu@ubuntu ~ $

Script 1:

Sed Gespeichert in ~/bin

Script 2 ;

Hilfe.mak Gespeichert in ~/bin

Script 1 Änderung kwrite = pluma

#!/bin/bash
### - 16.10.1999 -
Hilfe(){
  echo "Sed ist mein Skript-Editor"
  echo "Syntax: $( basename "$1" ) SKRIPT"
  exit
}
test "$1" = "-h" -o "$1" = "-help" -o "$1" = "--help" && Hilfe

test $# = 0 && { echo "Fehler: kein SKRIPT angegeben !"; Hilfe; }


# Benutzervariablen
StdVerz=~/bin/
Skript="$StdVerz$( basename "$1" )"
HilfeMak="${StdVerz}Hilfe.mak"
# kwrite = pluma
Editor=pluma



# Ist der Skript schon vorhanden ?
if test -f $Skript ; then
    # Ja: Editor
    $Editor $Skript >/dev/null 2>/dev/null &
else
    # Nein: Kopf erzeugen, Editor
    echo "#!/bin/bash" >$Skript
    echo "# - $(date +"%d.%m.%Y") -" >>"$Skript"
    cat "$HilfeMak" >>"$Skript"
    chmod u=rwx "${Skript}"
    $Editor "$Skript" >/dev/null 2>/dev/null &
fi
« Letzte Änderung: 08.12.2013, 03:26:25 von C64 »

Re: Wie starte ich einen Shellscript?
« Antwort #12 am: 08.12.2013, 15:39:14 »
Hättest Du den Thread mal besser gelesen...

Du hast den Script in /bin gespeichert - oder stehe ich im Wald?

ls ~/binergibt was?

Re: Wie starte ich einen Shellscript?
« Antwort #13 am: 08.12.2013, 16:08:08 »
ls ~/bin
ls: Zugriff auf /home/ubuntu/bin nicht möglich: Datei oder Verzeichnis nicht gefunden

Zitat
Bei mir heißt er "Sed" (man beachte das große S) und liegt selbstverständlich im Ordner "~/bin/".


beide scripte habe ich in ~/bin



Re: Wie starte ich einen Shellscript?
« Antwort #14 am: 08.12.2013, 16:13:35 »
Zitat
beide scripte habe ich in ~/bin
Ganz sicher nicht, denn den Ordner gibt es in /home/Benutzer nicht.
In keinem meiner Systeme.