122 Abläufe mit Skript Sprachen
- 15 Nov. 2017
-
11:05
Einführung in Python 3.5 Regex
Der Begriff "Regulärer Ausdruck" kommt aus der Automatentheorie und der Therie der formalen Sprachen, zwei Gebiete der theoretischen Informatik. Als Erfinder der regulären Sprachen gilt der amerikanische Mathematiker Stephen Cole Kleene, der in den 1950er Jahren reguläre Mengen einführte. In der theoretischen Informatik dienen reguläre Ausdrücke zur formalen Definition einer Sprachfamilie mit bestimmten Eigenschaften, die sogenannten regulären Sprachen. Zu jedem regulären Ausdruck existiert ein endlicher Automat (Implementierung eines endlichen Automaten in Python), der die von dem Ausdruck spezifizierte Sprache akzeptiert. In Programmiersprachen werden reguläre Ausdrücke meist zur Filterung von Texten oder Textstrings genutzt, d.h. sie erlauben einem zu prüfen, ob ein Text oder ein String zu einem RA "matched", d.h. zutrifft, übereinstimmt oder passt. RA finden auch Verwendung, um Textersetzungen, die recht komplex sein können, durchzuführen. Einen äußerst interessanten Aspekt von regulären Ausdrücken möchten wir nicht unerwähnt lassen: Die Syntax der regulären Ausdrücke ist in allen Programmiersprachen und Skriptsprachen gleich, also z.B. in Python, Perl, Java, SED, AWK oder auch in C#. außerdem werden sie von vielen Texteditoren, wie zum Beispiel dem vi benutzt. Zweck von Regular Expressions: (REGEX, deutsch: regulärer Ausdruck) Mittels eines REGEX kann ein Muster vorgegeben werden, welches gegen einen Text abgeglichen wird. Ein REGEX hat eine vorbestimmte Syntax und bedient sich unterschiedlicher Platzhalter. Die komplette Referenz der REGEX Syntax ist dem Dokument „regEx Stylesheet.pdf“ zu entnehmen, welches auf dem Webserver abgelegt ist. Wir verwenden die Sektionen „Anchors“, „Character Classes“, „Quantifiers“, „Escape Character“, „Metacharacters“, „Special Characters“, „Groups and Ranges“, hier ein Ausschnitt davon:REGEX
Beschreibung
Beispiel
Gi..
Wort beginnt mit „Gi“ und hat 2 weitere beliebige Zeichen
Gibb, Gift, Giga, Gi--, Gi23, Gi $
(2)*(3)+(4){2}
Die 2 kommt 0 oder mehrfach vor, die 3 kommt einmal oder mehrfach vor, die 4 kommt genau 2 mal vor.
344 33344 223344 2222222344
^E[a-z]{4}\s(.)*
Der Text beginnt mit „E“, das erste Wort hat nebst dem „E“ 4 weitere Kleinbuchstaben, der Rest kann beliebig sein.
Einer geht immer. Emmas Haus ist rot.
\d{4}\n\w{4,}
Eine vierstellige Zahl, dann ein <Enter> und dann 4 oder mehr Buchstaben
8877 Gibbix
Element
Beschreibung
Element
Beschreibung
^
Start des Strings
*
0 oder mehr
$
Ende des Strings
+
1 oder mehr
\s
Leerschlag
?
0 oder 1
\S
Kein Leerschlag
{4}
Genau 4
\d
Ziffer
{4,}
4 oder mehr
\w
Buchstabe (oder eine Ziffer!)
{4,8}
4,5,6,7 oder 8
\n
Zeilensprung
[^a]
Nicht a
\t
T abulator
.
Beliebiges Zeichen (ausser Zeilensprung)
(a|b)
a oder b
(abc)
Gruppierung
[a-g]
Zeichen von a bis g
[0-9]
Ziffer von 0 bis 9 (analog \d)
- 15 Nov. 2017
-
11:05
Einführung in Python 3.5 Grundwissen
Wie auch bei Bash handelt es sich bei Python im um eine Skript Sprache ach diese verfügt über Kontrollstrukturen und Schlüssel Wörter. - 15 Nov. 2017
-
11:05
Einführung in Bash Rückgabewert mit echo und einer Kommando-Substitution
Sicherlich wird sich der ein oder andere hier fragen, wie man denn nun tatsächlich »echte« Werte wie Ergebnisse mathematischer Berechnungen oder Zeichenketten aus einer Funktion zurückgeben kann. Hierfür kommt nur die bereits bekannte Kommando-Substitution in Frage. Das Prinzip ist einfach: Sie geben das Ergebnis in der Funktion mittels echo auf die Standardausgabe aus und im Hauptprogramm leiten Sie diese Daten mit einer Kommando-Substitution in eine Variable um. variable=`functions_name arg1 arg2 ... arg_n` Hierzu ein Beispiel:# Demonstriert die Verwendung von Parametern # Name: afunc10 # Funktion verdoppeln verdoppeln() { val=`expr $1 \* 2` echo $val } #Funktion halbieren halbieren() { val=`expr $1 / 2` echo $val } # Alle Kleinbuchstaben zu Grossbuchstaben upper() { echo $string | tr 'a-z' 'A-Z' } # Alle Grossbuchstaben zu Kleinbuchstaben lower() { echo $string | tr 'A-Z' 'a-z' } # Hauptprogramm val=`verdoppeln 25` echo "verdoppeln 25 = $val" # So geht es auch ... echo "halbieren 20 = `halbieren 20`" string="Hallo Welt" ustring=`upper $string` echo "upper $string = $ustring" string="Hallo Welt" echo "lower $string = `lower $string`" Das Script bei der Ausführung: you@host > ./afunc10 verdoppeln 25 = 50 halbieren 20 = 10 upper Hallo Welt = HALLO WELT lower Hallo Welt = hallo welt
- 15 Nov. 2017
-
11:05
Einführung in Bash CUT
Der Befehl cut extrahiert spaltenweise Ausschnitte aus Textzeilen. So können bspw. aus einer Logdatei irrelevante Informationen entfernt oder CSV-Dateien bearbeitet werden.Option
Beschreibung
-b oder --bytes
Angabe der Bytepositionen
-c oder --characters
Angabe der Zeichenpositionen (entspricht derzeit -b)
-d oder --delimiter
Angabe des Trennzeichens (Delimiter) anstelle des Tabulators (Standard)
-f oder --fields
Angabe der zu extrahierenden Felder
-s oder --only-delimited
Keine Ausgabe von Zeilen ohne Trennzeichen (Delimiter)
- 15 Nov. 2017
-
10:05
Einführung in Bash GREP
Mit grep lassen sich Dateien nach bestimmten Textstücken durchsuchen. Die Suchmuster werden "regular expressions" (auf Deutsch: regulärer Ausdruck) genannt. Sie sind vielfältig einsetzbar, und werden nicht nur von grep verwendet.Regex Liste
Bedeutung
[:alnum:]
alle Ziffern und Buchstaben
[:alpha:]
alle Buchstaben
[:cntrl:]
alle Kontrollzeichen
[:digit:]
alle Ziffern
[:lower:]
alle Kleinbuchstaben
[:punct:]
alle Satzzeichen
[:blank:]
Leerzeichen
[:space:]
Zeichen die Leerraum erzeugen (Leerzeichen, Zeilenvorschub, ...)
[:lower:]
alle Kleinbuchstaben
[:lower:]
alle Kleinbuchstaben
[:upper:]
alle Großbuchstaben
- 14 Nov. 2017
-
12:05
Einführung in Bash Kontrollstruktur
Ein BASH-Skript besteht aus einer Textdatei, in der Kommandos aufgeführt sind. Ruft man nun die Textdatei als Programm auf, werden die Kommandos darin nacheinander abgearbeitet. Alles was wir in der Shell ausführen, kann in ein Skript geschrieben werden und umgekehrt kann auch das Skript in die Shell kopiert und so ausgeführt werden. Auf diese Weise können wir in der Übung ausprobieren, ob der geschriebene Code auch funktioniert. - 25 Aug. 2017
-
12:05
Einführung in Bash Erste Programme
Um die Daten mittels Bash Befehl ausführbar zu machen werden die Scrips mit chmod 700 auf die nötige Berechtigung gebracht zum Beispiel: chmod 700 myFirst.sh.
myFirst.sh
Als erstes mussten wir ein Skript umsetzten das dich begrüsst hier lernten wir die Bash-variablen kennen.#!/bin/bash # Skript: M122_Scripts/myName.sh echo "Wie ist dein Name?" # Die Read-name variable enthät dnach den String der eingegeben wurde read name # Über $name kann nun auf den Varbiabeln wert zugegrieffen werden echo "Hallo $name,Mein name ist 547578 oder in deiner Sprache Tux!"
myNameParameter.sh
Dann erhielten wir erste Input um eine Verzweigung als ein IF-statement zu integrieren.#!/bin/bash # Skript: M122_Scripts/myNameParameter Name=$1 # Wenn name-variabel gleich ist Tux dann wird an der Konsol Hallo Pinguin ausgegeben if [ "$Name" = "Tux" ]; then echo "Hallo Pinguin" # Sonst ist name-variabel gleich ist 547578 dann wird an der Konsol Hallo Tux ausgegeben elif [ "$Name" = "547578" ]; then echo "Hallo Tux" # Sonst ist der name-variabel ungleich ist, dann wird an der Konsol Hallo varibalen-wert(der name der eingegeben wurde) ausgegeben else echo "Hallo $Name" fi exit 0
Kommandozeile: man, find, cat , <,<<,>>,>
Mit dem Befehl man kann die Hilfe zu einem Befehl angezeigt werden.
Beispiel:vmadmin@bmLP1:~$ man man oder vmadmin@bmLP1:~$ man cat Mit cat können Sie eine Datei oder auch zwei Dateien nacheinander anzeigen. vmadmin@bmLP1:~/M122_Scripts$ cat myName.sh vmadmin@bmLP1:~/M122_Scripts$ cat myName.sh myNameParamter.sh
Mit den Befehlen <<,< ,>, >> lassen sich Inhalte umleiten. In einfacher <,> Schreibweise wird das Ziel überschrieben, mit doppelter Ausführung <<,>> einem Dateiinhalt angehängt.
Beispiel:In die filelist pipen! vmadmin@bmLP1:~/M122_Scripts$ ls –all > filelist vmadmin@bmLP1:~/M122_Scripts$ mcedit filelist vmadmin@bmLP1:~/M122_Scripts$ ls >> filelist vmadmin@bmLP1:~/M122_Scripts$ mcedit filelist In cat filelist pipen! vmadmin@bmLP1:~/M122_Scripts$ cat > fileli
Das Kommandozeilenprogramm find dient der Dateisuche in ganzen Verzeichniszweigen ab definierten Startpunkten. Dabei kann es die Suche auf vielfältige Weise filtern, z.B. nach Dateiname, -alter, -größe und die Suchergebnisse weiterverarbeiten und/oder formatiert ausgeben.
# Sucht ab dem aktuellen Verzeichnis all Dateien mit der ".sh" Endung. In einfacher <,> Schreibweise wird ShellScriptList überschrieben. vmadmin@bmLP1:~/M122_Scripts$ sudo find –name "*.sh" > ShellScriptList # Sucht ab dem Root Verzeichnis all Dateien mit der .sh Endung. Mit doppelter Ausführung <<,>> wird ShellScriptList Text angehängt. vmadmin@bmLP1:~/M122_Scripts$ sudo find / –name "*.sh" >> ShellScriptList
addPerson.sh
Ein Skript das immer wider nach namen Fragt um eine Liste aus Name zu erzeugen.
#!/bin/bash # Skript: M122_Script/addperson echo 'Gib ein namen ein'; read name; while true; do if [ "$name" = "quit" ];then echo "Exit add person!"; break; else echo $name >> Phonelist; echo 'Gib ein namen ein'; read name; fi done
Erwartet ausgabe
vmadmin@bmLP1:~/Dokumente/modul122/AB122- 02_LSkripts$ ./addPerson.sh Geben Sie ihren Namen ein (mit quit beenden): Ralph Maurer usw....... Geben Sie ihren Namen ein: quit Exit add person! vmadmin@bmLP1:~/Dokumente/modul122/AB122- 02_LSkripts$ done
Mitels sort kann die Ausgabe sortiert werden
vmadmin@bmLP1:~/Dokumente/modul122/AB122- 02_LSkripts$ sort Phonelist Alf Saurer Galf Bauer Malf Hauer Ralph Maurer Talf Gaurer Ueli Gaugler
- 14 Nov. 2017
-
12:10
Einführung in Bash Bash Operatoren
Bash-Skripte sind geeignet um Programme, gemäß der eigenen Bedürfnisse, miteinander zu kombinieren und sie spielen eine zentrale Rolle im Alltag der Systemadministration. Hier im Wiki findet man bereits einige Beispiele, welche die breite Anwendbarkeit von Bashskripten ein wenig illustrieren.Shell-Variable
Bedeutung
$BASH_VERSION
Version des Bash Shell
$HOME
Heimverzeichnis
$HOSTNAME
Computername
$OLDPWD
Letztes Arbeitsverzeichnis
$PS1
Aussehen des Shell- Prompts
$PWD
Aktuelles Arbeitsverzeichnis
$#
Anzahl Parameter
$*
Alle Parameter als Einheit
$0
Name dieses Skript
$1,$2 usw.
1. Parameter,2. Parameter usw.
Operator
IT English
Bedeutung
Vergleich von Zeichenketten (strings)
=
Equal
Gleich
!=
Not equal
Ungleich
-z
Zero
Leere Zeichenkette
-n
Non-zero
Nicht leere zeichenkette
Vergleich von numerischen Werten
-eq
Equal
Gleich
-ne
Not equal
Ungleich
-lt
Less than
Kleiner als
-le
Less or equal
Kleiner oder gleich
-gt
Greater than
Grösser als
-ge
Greater or equal
Grösser oder gleich
Abfrage von Dateiattributen
-e
Exist
Existiert die Datei
-r
Read
Leserecht gesetzt
-w
Write
Schreibrecht gesetzt
-x
Execute
Ausführungsrecht gesetzt
-f
File
Normale Datei
-d
Directory
Verzeichnis
!
Not
Nicht
Rechte
Dieser Artikel beschreibt die Zugriffsrechte auf Dateien von Linux - und somit auch Ubuntu. Die Zugriffsrechte regeln zum Beispiel, welcher Benutzer und welche Gruppe den Inhalt eines Verzeichnisses (ein Verzeichnis ist auch nur eine Datei) lesen darf. Neben dem Leserecht gibt es noch weitere Rechte, mit denen der Zugriff gesteuert werden kann.