From eaff59442d13294b744fba632b9b039cd6f55b10 Mon Sep 17 00:00:00 2001 From: Daniel Schubert Date: Wed, 2 Jan 2019 15:04:16 +0100 Subject: [PATCH] 4 --- 4.html | 302 ++++++++++++++++++--- 5.html | 117 ++++++++ beispiele/create_files_with_space.sh | 5 + beispiele/files/create_files_with_space.sh | 5 + beispiele/finduser.sh | 3 + beispiele/mysystem.sh | 10 +- beispiele/remove-spaces.sh | 16 ++ beispiele/usb-meldungen.log | 10 - index.html | 2 + 9 files changed, 426 insertions(+), 44 deletions(-) create mode 100644 5.html create mode 100644 beispiele/create_files_with_space.sh create mode 100644 beispiele/files/create_files_with_space.sh create mode 100644 beispiele/finduser.sh create mode 100644 beispiele/remove-spaces.sh delete mode 100644 beispiele/usb-meldungen.log diff --git a/4.html b/4.html index f523418..60d9188 100644 --- a/4.html +++ b/4.html @@ -45,44 +45,284 @@ Deutsche Angestellten Akademie

+ + +
+

Bash Scripting

+

Einführung und Übung

+
- -
-

vim und emacs

-

Die mächtigen Unix Editoren

-
-
-

vim

- - +

Bash Scripting - Warum sollte ich das tun??

+ +
+
+

Grundlegende Mechanismen

+
+
+

Begriffe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Wurzelverzeichnis / (engl. root) + Höchstes Verzeichnis im Verzeichnisbaum +
Aktuelles Arbeitsverzeichnis + Das Verzeichnis, in dem Sie sich im Augenblick befinden +
Vollständige Pfadangabe + Ein Pfadname beginnend mit / (Wurzel); alle anderen Verzeichnisse werden ebenfalls mit einem / getrennt. +
Relative Pfadangabe + Der Pfad ist relativ zum aktuellen Arbeitsverzeichnis; hierbei wird kein voranstehendes / verwendet. +
Vollständiger Dateiname + Pfadangabe inklusive Angabe zur entsprechenden Datei (bspw. /home/you/Dokumente/brief.txt) +
Vollständiger Pfadname + Pfadangabe zu einem Verzeichnis, in dem sich die entsprechende Datei befindet (bspw. /home/you/Dokumente) +
.. (zwei Punkte) + Verweisen auf ein Inhaltsverzeichnis, das sich eine Ebene höher befindet +
. (ein Punkt) + Verweist auf das aktuelle Inhaltsverzeichnis +
+ +

+ +
+

Benennung von scripten + +

+

+ +

+
+ +

Sonderzeichen in der Shell +
;                       Befehls-Trennzeichen
+&                       Hintergrund-Verarbeitung
+( )                     Befehls-Gruppierung
+|                       Pipe
+< > &                   Umlenkungssymbole
+* ? [ ] ~ + - @ !       Meta-Zeichen für Dateinamen
+` ` (Backticks)         Befehls-Substitution 
+$                       Variablen-Substitution
+[newline] [space] [tab] Wort-Trennzeichen
+ +

+ + +
+

Variablen

+
 a=hello     # einer Variablen "a" den Wert "hello" zuweisen
+ echo $a     # die Variable "a" stdout ausgeben
+ a=7         # der Variablen "a" einen neuen Wert zuweisen 
+ b=8         # einer Variablen "b" den Wert "8" zuweisen
+ c=$[a+b]    # einer Variablen "c" die Summe von a+b zuweisen 
+ echo $c     # die Variable "c" an stdout ausgeben
+
+ +
+

vordefinierte Variablen ( Auszug ;-) )

+
*     Alle Aufrufparameter als ein String ("$*" == "$1 $2 $3 ...")
+@     Alle Aufrufparameter als einzelne Strings ("$@" == "$1" "$2" "$3" ...)
+#     Anzahl der Aufrufparameter	
+?     Rückgabewert des letzten Kommandos	
+$     Prozessnummer der aktiven Shell	
+0     Name des aktuellen script
+ERRNO    Fehlernummer des letzten fehlgeschlagenen Systemaufrufs	
+PWD      Aktuelles Verzeichnis (wird durch cd gesetzt) 	
+PATH     Suchpfade
+USER     Benutzername
+ +

Beispiele +

echo $PATH
+
echo $$
+ + +

Mehr: http://wiki.bash-hackers.org/syntax/shellvars

+
+ +
+

Var. Zuweisung:

a=10
+

Var. Abruf:

echo $a
+
+ +
+

Programmstart +

+
+ + +
+
#!/bin/bash
+clear
+echo "Diese Infos werden von mysystem.sh bereitgestellt."
+echo "Hallo, $USER"
+
+echo "Heute ist der `date \"+%d.%m.%Y - %H:%M:%S\"`, dies ist Woche Nr. `date +"%V"`."
+echo
+
+echo "Diese Benutzer sind im Moment verbunden:"
+w | cut -d " " -f 1 - | grep -v USER | sort -u
+echo
+
+echo "Dies ist `uname -s` und wir laufen auf einem $(uname -m) Prozessor."
+echo
+
+echo "Die uptime ist:"
+uptime
+
+MSG="\nDas ist alles! Bye, $USER! \n\n"
+printf "${MSG}"
+ + https://git.scytec.de/danthefan/linuxkurs/raw/master/beispiele/mysystem.sh +
+ +
+
echo "Hallo, $USER"
+
echo "Heute ist der `date \"+%d.%m.%Y - %H:%M:%S\"` "
+
w | cut -d " " -f 1 - | grep -v USER | sort -u
+
`uname -s`  vs  $(uname -s) 
+
MSG="\nDas ist alles! Bye, $USER! \n\n"
+printf "${MSG}"
+
+ +
+

Ausführende Shell festlegen ( sog. She-Bang )

+
#!/bin/bash
+
#!/usr/bin/env ruby
+
#!/usr/bin/env python3
+
#!/usr/bin/php
+ + Nötig, damit die shell weiss, wie das script interpretiert werden soll.
-
-

Die 5 Level eines Vim Magiers

- -

https://danielmiessler.com/study/vim/ -

- +
+ Script ohne she-bang: +
bash mysql-backpup.sh
+
. mysql-backpup.sh
+ oder +
php mysql-backpup.php
+ oder +
ruby mysql-backpup.rb
+
+
+

Prozess in der bash - Erklärung:

+
+

neue Datei anlegen : finduser

+
#!/bin/bash
+find / -user dany -print 2>/dev/null
+
+
+ Dann im Terminal ausführen +
dany@laptop:~/bin$ chmod u+x finduser
+dany@laptop:~/bin$ ./finduser 1>/dev/null &
+ +
dany@laptop:~/bin$ ps -f
+
+ +
+ +
+
UID        PID  PPID  C STIME TTY          TIME CMD
+dany      4987 23893  0 12:50 pts/4    00:00:00 /bin/bash ./finduser
+dany      4988  4987 68 12:50 pts/4    00:00:01 find / -user dany -print
+dany      5011 23893  0 12:50 pts/4    00:00:00 ps -f
+dany     23893  4143  0 12:33 pts/4    00:00:00 bash
+					
+

Die bash startet eine sub-shell, in der das Kommando ausgeführt wird +

Der Kontext aller Script Variablen ist der der sub-shell +

+ +
+ Damit Script wie Programm startet: + + + +
+ +
+ Ein weiteres Beispiel: +
#!/bin/bash
+suf=$1
+if [ $# -gt 0 ]
+  then
+    for file in *.$suf; do
+      bn=`basename "$file" .$suf | tr [:blank:]  _`
+      new=$bn.$suf
+      echo "neuer Dateiname:"
+      echo $new
+      mv "$file" $new
+    done
+  else
+    echo "Verwendung: strip-space.sh SUFFIX"
+    echo "Beende ...."
+fi
+
+
+ +
+

Kommando Verkettung

+ + +
+ + diff --git a/5.html b/5.html new file mode 100644 index 0000000..f523418 --- /dev/null +++ b/5.html @@ -0,0 +1,117 @@ + + + + + Einführung in Linux + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+

LINUX

+

Das universelle Betriebssystem

+

Eine Einführung - Teil 4 +

+ Deutsche Angestellten Akademie +

+ + +
+ +
+

vim und emacs

+

Die mächtigen Unix Editoren

+
+ +
+

vim

+
    +
  • ein Editor für die shell
  • +
  • immer da, oft in der alten Variante „vi“
  • +
  • Vi IMproved
  • +
  • komplett per Kürzel steuerbar
  • +
  • umfassend anpassbar
  • +
  • erweiterbar
  • +
  • syntax highlighting
  • +
  • vim ist einfach cool ;-)
  • +
+ +
+ +
+

Die 5 Level eines Vim Magiers

+
    +
  • Level 0: nichts über vim wissen +
  • Level 1: vim basics kennen +
  • Level 2: den visual mode kennen +
  • Level 3: diverse „motions“ kennen +
  • Level 4: den visual mode nicht brauchen +
+

https://danielmiessler.com/study/vim/ +

+
+ +
+ + + + + + + + diff --git a/beispiele/create_files_with_space.sh b/beispiele/create_files_with_space.sh new file mode 100644 index 0000000..ecb0140 --- /dev/null +++ b/beispiele/create_files_with_space.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +for f in {1..9}; do + touch "$f xx.txt" +done \ No newline at end of file diff --git a/beispiele/files/create_files_with_space.sh b/beispiele/files/create_files_with_space.sh new file mode 100644 index 0000000..ecb0140 --- /dev/null +++ b/beispiele/files/create_files_with_space.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +for f in {1..9}; do + touch "$f xx.txt" +done \ No newline at end of file diff --git a/beispiele/finduser.sh b/beispiele/finduser.sh new file mode 100644 index 0000000..6cef51c --- /dev/null +++ b/beispiele/finduser.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +find / -user dany -print 2>/dev/null diff --git a/beispiele/mysystem.sh b/beispiele/mysystem.sh index 9cd5faf..5d3d201 100644 --- a/beispiele/mysystem.sh +++ b/beispiele/mysystem.sh @@ -1,20 +1,24 @@ #!/bin/bash clear + echo "Diese Infos werden von mysystem.sh bereitgestellt." +echo echo "Hallo, $USER" echo echo "Heute ist der `date \"+%d.%m.%Y - %H:%M:%S\"`, dies ist Woche Nr. `date +"%V"`." echo + echo "Diese Benutzer sind im Moment verbunden:" w | cut -d " " -f 1 - | grep -v USER | sort -u echo -echo "Dies ist `uname -s` und wir laufen auf einem `uname -m` Prozessor." + +echo "Dies ist `uname -s` und wir laufen auf einem $(uname -m) Prozessor." echo echo "Die uptime ist:" uptime -echo -echo "Das ist alles!" +MSG="\nDas ist alles! Bye, $USER! \n\n" +printf "${MSG}" diff --git a/beispiele/remove-spaces.sh b/beispiele/remove-spaces.sh new file mode 100644 index 0000000..1af354c --- /dev/null +++ b/beispiele/remove-spaces.sh @@ -0,0 +1,16 @@ +#!/bin/bash +suf=$1 +if [ $# -gt 0 ] + then + for f in *.$suf; do + bn=`basename "$f" .$suf | tr [:blank:] _` + new=$bn.$suf + echo "neuer Dateiname:" + echo $new + mv "$f" $new + done + else + echo "Kein Suffix gegeben!!" + echo "Verwendung: strip-space.sh SUFFIX" + echo "Beende ...." +fi diff --git a/beispiele/usb-meldungen.log b/beispiele/usb-meldungen.log deleted file mode 100644 index dcc2b0c..0000000 --- a/beispiele/usb-meldungen.log +++ /dev/null @@ -1,10 +0,0 @@ -[ 5.328340] usbcore: registered new interface driver snd-usb-audio -[ 5.424330] input: Logitech MX Ergo as /devices/pci0000:00/0000:00:02.0/usb2/2-10/2-10:1.2/0003:046D:C52B.0006/0003:046D:406F.0007/input/input13 -[ 5.425022] logitech-hidpp-device 0003:046D:406F.0007: input,hidraw4: USB HID v1.11 Keyboard [Logitech MX Ergo] on usb-0000:00:02.0-10:1 -[11730.912969] usb usb2: root hub lost power or was reset -[11730.913009] usb usb1: root hub lost power or was reset -[11731.374991] usb 1-3: reset high-speed USB device number 4 using ehci-pci -[11731.434994] usb 2-10: reset full-speed USB device number 5 using ohci-pci -[11731.823005] usb 2-9: reset full-speed USB device number 4 using ohci-pci -[11732.375288] usb 2-2: reset low-speed USB device number 3 using ohci-pci -[11733.063086] usb 2-1: reset low-speed USB device number 2 using ohci-pci diff --git a/index.html b/index.html index b058b06..d1e731c 100644 --- a/index.html +++ b/index.html @@ -20,6 +20,8 @@
  • 3. Abend
  • 4. Abend
  • + +

    Quellen hier: GitLab

    PDF