Shell-Workshop (9)

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
In diesem Workshop geht es um Shell-Skripte.

Die Shell kann nicht nur interaktiv mit Kommandos oder Tools gefüttert werden. Da man die Tastatur-Eingabe ja auch auf eine Datei umlenken kann (redirigieren), ist es also auch kein besonderes Problem, vorgefertigte Shell-Anweisungen quasi als Batch aus einer Datei heraus zu lesen und zu verarbeiten. Die Dateien, in denen 'konservierte' Shell-Anweisungen stehen, nennt man Shell-Skripte.

Um mit solche Skript-Dateien einigermaßen gut umgehen zu können, braucht man einen Editor, welcher Linux-Zeilenenden beherrscht, weil andere Zeilenenden ein Problem für die Shell darstellen. Als Editor kann man den 'vi' verwenden, aber auch andere Editoren sind denkbar. Zum 'vi' gibt im Wiki eine Einführung, deswegen wird hier weder über den 'vi' noch einen anderen Editor weiter etwas ausgeführt. In den folgenden Beispielen werden die Skript-Dateien einfach per 'cat' angelegt; das ist ein Behelf - so etwas würde man normalerweise eher nicht machen.

Rich (BBCode):
Syno> cat >skript1
echo 'Hallo'
<Strg-D>
Syno> sh <skript1
Hallo

Man kann der Shell die Skript-Datei 'skript1' auch als Aufruf-Parameter mitgeben. Eine Kurzschreibweise ist der '.' - allerdings muss man dann einen Pfad zum Skript angeben:

Rich (BBCode):
Syno> sh skript1
Hallo
Syno> . ./skript1
Hallo

Da Shell-Skripte oft wie 'normale' Kommandos oder Tools zum Einsatz kommen sollen, gibt es auch die Möglichkeit, ein Shell-Skript direkt aufzurufen. Allerdings ist hierfür eine einmalige Vorbereitung notwendig, nämlich der Skript-Datei die Ausführungs-Erlaubnis (execution permission) zu erteilen. Dies geht mit dem 'chmod +x'-Kommando:

Rich (BBCode):
Syno> chmod +x skript1
Syno> ./skript1
Hallo

Wenn man jetzt den aktuellen Pfad noch in die PATH-Variable aufnimmt, dann ist das Starten eine Shell-Skriptes kaum mehr von einem normalen Kommando zu unterscheiden:

Rich (BBCode):
Syno> PATH=.:$PATH
Syno> skript1
Hallo

Weil es oft mehrere Shells auf einem Linux-System gibt, die sich alle ein wenig in der Leistungsfähigkeit unterscheiden, hat es sich eingebürgert, zusätzlich in die Shell-Skripte eine Kommentarzeile als erste Zeile einzubauen, in der der Pfad zu der konkret zu verwendenden Shell bzw. Kommandointerpreter steht. Diese Eintragung nennt man 'Shebang':

Rich (BBCode):
Syno> cat >skript1
#!/bin/sh
echo 'Hallo'
<Strg-D>
Syno> sh <skript1
Hallo

Wie bei den Shell-Funktionen kann man auch Aufrufargumente bei Shell-Skripten verwenden:

Rich (BBCode):
Syno> cat >skript2
#!/bin/sh
echo $1
Syno> chmod +x skript2
Syno> skript2

Syno> skript2 abc
abc
Syno> skript2 abc 123
abc

Fast alle interaktiven Shells können beim Aufruf durch ein sogenanntes Start-Skripte vorkonfiguriert werden. Damit dies sowohl für jeden User als auch individuell pro User möglich ist, gibt es hierfür mindestens 2 Skript-Dateien, die natürlich auch fehlen dürfen, aber eigentlich immer vorhanden sind: /etc/profile (für alle User) und $HOME/.profile (für den individuellen User), wobei immer erst die /etc/profile gestartet wird, bevor die $HOME/.profile heran kommt. Nun sind noch nicht alle Details bereits angesprochen worden, aber ein Blick lohnt sich alle Male. Ich werde die Dateien jetzt hier nicht komplett hineinstellen, sondern nur die ersten 3 Zeilen:

Rich (BBCode):
Syno> cat /etc/profile
#/etc/profile: system-wide .profile file for ash.
PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin"
umask 022
..........
Syno> cat $HOME/.profile
#/etc/profile: system-wide .profile file for ash.
PATH="$PATH:/opt/bin:/opt/sbin"
umask 022
..........

Da steh schon mal Manches doppelt drin und auch andere Ungereimtheiten ... that's life. Wenn man also etwas für seine Shell fest einrichten mag, dann wäre die $HOME/.profile für den Anfang genau die richtige Skript-Datei (z. B. alias-Einträge).

=======

Viel Spaß beim Shell-Skripten.

Itari


=========================================
Sinnvollerweise sind die Shell-Workshops aufeinander aufgebaut.

Shell-Workshop (8)
Shell-Workshop (10)
 
Zuletzt bearbeitet:

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
0
How Häuptling!

Was hälst du davon, alle paar Lektionen, sowas wie eine kleine Übung / Aufgabe zu stellen? Ich kann nur für mich reden, aber bei mir bleibt alles, was gezielt, mit einem Hintergrund, einer Herausforderung, gemacht wird deutlich besser kleben. << ich hoff das kommt jetzt nicht zu fordernd ;-)

Cheers
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Was hälst du davon, alle paar Lektionen, sowas wie eine kleine Übung / Aufgabe zu stellen? Ich kann nur für mich reden, aber bei mir bleibt alles, was gezielt, mit einem Hintergrund, einer Herausforderung, gemacht wird deutlich besser kleben. << ich hoff das kommt jetzt nicht zu fordernd ;-)

Kein Problem. Ich hatte mir auch schon etwas in dieser Art vorgenommen, wobei ich natürlich auch offen für Fragestellungen und Ideen bin.

Methodisch sind wir zur Zeit an einer Stelle, den Platz, das Netz und den Schläger zu erkunden, um die Sprache des Tennis zu verwenden. In diesem Workshop no. 9 hier besteht die Gelegenheit, sich mal anzuschauen, wie andere so spielen (/etc/profile, ~/.profile) und dazu darf/kann man auch gezielte Fragen stellen. Und das mit dem Anschauen wird jetzt immer häufiger ... ich denke, dass man mit so einem konkreten praktischen Bezug (den im Systeme verwendeten Shell-Skripten) wesentlich aufmerksamer mitmacht, als wenn es Übungen wären, deren Sinnhaftigkeit nicht wirklich gegeben ist. Ich schätze, dass wir noch ein paar Lektionen brauchen (5-8), um dann auch das Rüstzeugs zu haben, die Skripte im /usr/syno/etc/rc.d-Verzeichnis anzuschauen und dann wird es ernst mit Übungen.

Randbemerkung: ich schreibe hier diese Geschichten nirgendwo ab, sondern lass meine Gedanken einfach frei laufen ... deswegen weiß ich auch noch nicht, was in 3 oder 4 Lektionen weiter drinne ist ... mir macht das Spaß einfach spontan etwas auszudenken und ich glaube, dass das dann auch dazu führt, dass es nicht allzu langweilig wird.

Itari
 

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
0
Supi!

Noch was zu vi, als Quereinsteiger in Sachen Linux bevorzuge ich klar nano und bin immer wieder erstaunt/verwundert, warum explizit vi empfohlen wird.

Btw ich find du machst die Sache echt klasse und bin dir dafür sowas von dankbar!
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.016
Punkte für Reaktionen
271
Punkte
393
Hallo,
bin immer wieder erstaunt/verwundert, warum explizit vi empfohlen wird.
ohne ipkg gibt es eben nur den vi und nicht alle brauchen wirklich ipkg. Auch wenn ipkg mal nicht geht, sollte man die Grundfunktionen von vi beherrschen.

Gruß Götz
 

Super-Grobi

Benutzer
Mitglied seit
28. Sep 2010
Beiträge
1.913
Punkte für Reaktionen
0
Punkte
62
Moinsen

schließe mich Binomico da voll an, auch von mir ein großes Danke für Deine Arbeit das hier so zu präsentieren.
(Wobei Du mich hier grade komplett abgehängt hast, mit den Folgen 4-9, stuffoverflow :) )

Aufgaben / Rätsel fände ich toll.

Wobei ich es auch gut fände, wenn das nicht nur von binomico und mir ein Wunsch ist.
Laut Hit-Counter gibt es ja zumindest etwa 40 weitere Mitleser/Lerner die vielleicht auch den Mut
aufbringen sich hier als Linux noobs zu outen und zu äußern :D

Denn so eine Aufgabensammlung mit drum und dran kann ja ne Menge "Arbeit" nach sich ziehen....
Und dann nur für 2 Leutchen...... wär 'n bisschen viel verlangt. Die VHS macht solche Kurse dicht ;-)


Grüße
Grobi
 

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
0
Servus goetz,

mhh okay das Argument zieht ;-) ... trotzdem mag ich nano mehr :D

Grüßle
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
und bin immer wieder erstaunt/verwundert, warum explizit vi empfohlen wird.

Meine Bemerkung im Text kann nun nicht wirklich als Empfehlung gelten: "Als Editor kann man den 'vi' verwenden, aber auch andere Editoren sind denkbar." Auf der anderen Seite spricht aber auch nichts gegen den 'vi', weil er recht logisch aufgebaut ist. Da ich wahrscheinlich mehr als 100 Editoren in meinem Leben kennengelernt habe, kann ich nur sagen: kennst den 'vi', kennst sie alle. Wobei ich mir schon unter Profis den Spaß erlaube, nachzufragen, ob jemand über 100 Tastenkombinationen/Funktionen kennt bzw. zusammen bekommt (ich glaube, irgendwer hat über 350 herausgefunden); auf jeden Fall ist das eine gute Gedächtnis-Übung für alle Pokerfreunde :D

Itari
 
Zuletzt bearbeitet:

Binomico

Benutzer
Mitglied seit
01. Jun 2010
Beiträge
573
Punkte für Reaktionen
0
Punkte
0
War nicht auf dich, respektive dein Post hier bezogen, ich les im Forum, verwundert, meist die Empfehlung vi, aber jetzt wo goetz eine einleuchtende Erklärung abgeliefert hat, ists schon nachvollziehbarer.

> 100 Shortcuts sind zugegeben wirklich hardcore! Aber das ist wie bei allem ne Sache der Nutzung; hab mir in jüngeren Jahren, inspiriert durch irgendwelche übertriebenen Hacker in Filmen *grins*, zum Ziel gesetzt so viel möglich mit der Tastatur zu arbeiten ... war nicht verkehrt.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat