Dev Alert: Dies ist ein wichtiger Hinweis für Besucher.
// in progress // in 1,3 // to 2.0
// wait
nelson.lopez-be.ch nelson.lopez-be.ch

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.

    Auswahl

    Kontrollstruktur

    Ein- und zweiseitige Auswahl (if else)

    if [...]; then ... else ... fi

    Mehrfachauswahl (case)

    Case ... in ... val) …*)… esac

    For-Schleife

    For((…)) … do .. done

    For .. in … do … done

    While-Schleife

    While … do … done

    Until-Schle

    Until … do …  done

  • 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.