diff --git a/5.html b/5.html
index c1cf992..7dee458 100644
--- a/5.html
+++ b/5.html
@@ -47,15 +47,8 @@
Frage: Fragen zur letzten Stunde?
-
-
-
-
- Bash scripting - Fortsetzung
-
-
- LINKS
+ LINKS
http://tldp.org/LDP/abs/html/complexfunct.html
@@ -71,8 +64,13 @@
- kontrollstrukturen
-
+
+
+
+
+ Bash scripting - Fortsetzung
+ Wiederholung
-
Variablen
@@ -133,8 +131,9 @@ message="hallo Welt"
message=hello\ Welt
- echo 'So sprach'"'"'s und ging ohne einen Backslash (\) weiter.'
- └────┬────┘└┬┘└─────────────────────┬─────────────────────┘
+
+echo 'So sprach'"'"'s und ging ohne einen Backslash (\) weiter.'
+ └───┬───┘└┬┘└──────────────────┬─────────────────────┘
│ │ │
│ │ └ Dritter Bereich: Wieder
│ │ von ' umschlossen, der
@@ -213,9 +212,11 @@ tar cf archiv.tar && rm *.doc || echo "fehler"
#!/bin/bash
OUTFILE="liste.txt"
-liste=`ls | tee $OUTFILE `
+liste=`ls`
+echo $liste > $OUTFILE
-echo $liste
+#mit tee in einer Zeile
+liste=`ls | tee $OUTFILE`
cat $OUTFILE
@@ -244,12 +245,29 @@ count () {
# ls: Liste aller Objekte im Verzeichnis
# wc: Word-Count; mit Attribut -l werden Zeilen gezählt
- # in Verbindung mit ls werden also die (nicht versteckten) Objekte gezählt
+ # in Verbindung mit ls werden also die
+ # (nicht versteckten) Objekte gezählt
}
count # Aufruf der Funktion
+
+ #!/bin/sh
+
+fatal() {
+ msg=$1
+ echo "Fatal: $msg"
+ exit 1
+}
+
+[ -d /tmp ] || fatal "Verzeichnis /tmp existiert nicht"
+[ -w /tmp ] || fatal "Verzeichnis /tmp nicht schreibbar"
+
+TMP=/tmp/mydir
+[ -d $TMP ] || mkdir $TMP # tmp-Verz. erzeugen, wenn noch nicht vorhanden
+
+
#!/bin/bash
count2 () {
@@ -268,36 +286,51 @@ echo "Status: $?"
count2 "/etc"
echo "Status: $?"
-
- #!/bin/bash
-tar -czf myhome_directory.tar.gz /home/$USER
-mkdir archiv
-mv myhome_directory.tar.gz archiv/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Aufgabe: Erstellt script mit mind einer Funktion das:
+
+ ein Backup eines Verzeichnisses erstellt
+ per Parameter den namen des Quell-Verzeichnis erhält
+ per Parameter den Namen der Zieldatei erhält
+ einen nützlichen exit code setzt
+ vielleicht nützliche Meldungen ausgibt
+
+ Tipps:
+
+ Parameter Übergabe: kommando param1 param2
+ Parameter Übernahme: param1 = $1 , param2 = $2 etc
+
+
+
+
+ #!/bin/bash
+function file_backup {
+ echo 'Backup --- building tar File...'
+ tar -czf $2 $1 || fail "Fehler beim Archiv erstellen"
+ echo '+DONE'
+ exit 0
+}
+fail () {
+ echo "Fehler! + $1"
+ exit 1
+}
+#function call
+# file_backup 'backup-quelle' 'backup-ziel.tar.gz'
+file_backup $1 $2
+
+
+ hinzufügen überprüfung ob quelle verz.
+ überprüfung ob ziel existiert
+ überpr. ob ziel angelegt
+ überprüf ob param vorhanden
+ backup verz anlegen
+
+
@@ -313,11 +346,10 @@ let "m++"
let "m--"
-let "k = (m < 9) ? 0 : 1"
-condition ? value-if-true : value-if-false
+
-Floating Poin:
+Floating Point:
echo "32.0 + 1.4" | bc
echo `expr $m + 18`
@@ -326,8 +358,13 @@ m=`expr $m + 18`
(( m *= 4 ))
+ ternary operator
+ let "k = (m < 9) ? 0 : 1"
+condition ? value-if-true : value-if-false
diff --git a/beispiele/4/mysystem.sh b/beispiele/4/mysystem.sh
old mode 100644
new mode 100755
diff --git a/beispiele/5/02-comments.sh b/beispiele/5/02-comments.sh
index 545a056..b0e9def 100755
Binary files a/beispiele/5/02-comments.sh and b/beispiele/5/02-comments.sh differ
diff --git a/beispiele/5/04-function-exitcode.sh b/beispiele/5/04-function-exitcode.sh
old mode 100644
new mode 100755
diff --git a/beispiele/5/07-select-menu.sh b/beispiele/5/07-select-menu.sh
old mode 100644
new mode 100755
diff --git a/beispiele/5/09-backup.sh b/beispiele/5/09-backup.sh
old mode 100644
new mode 100755
diff --git a/beispiele/5/aufgabe2.sh b/beispiele/5/aufgabe2.sh
new file mode 100755
index 0000000..a5ce90d
--- /dev/null
+++ b/beispiele/5/aufgabe2.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+function file_backup {
+ echo 'Backup --- building tar File...'
+ tar -czf $2 $1 || fail "Fehler beim Archiv erstellen"
+ echo '+DONE'
+
+ exit 0
+}
+
+fail () {
+ echo "Fehler! + $1"
+ exit 1
+}
+
+#function call
+file_backup $1 $2
\ No newline at end of file
diff --git a/linux-kurs.sublime-project b/linux-kurs.sublime-project
new file mode 100644
index 0000000..2c63c08
--- /dev/null
+++ b/linux-kurs.sublime-project
@@ -0,0 +1,2 @@
+{
+}
diff --git a/linux-kurs.sublime-workspace b/linux-kurs.sublime-workspace
new file mode 100644
index 0000000..24ea9e9
--- /dev/null
+++ b/linux-kurs.sublime-workspace
@@ -0,0 +1,448 @@
+{
+ "auto_complete":
+ {
+ "selected_items":
+ [
+ [
+ "cod",
+ "code"
+ ],
+ [
+ "data",
+ "database"
+ ],
+ [
+ "file",
+ "filesize"
+ ],
+ [
+ "json",
+ "json_encode"
+ ],
+ [
+ "wp",
+ "wp_die"
+ ],
+ [
+ "fu",
+ "function"
+ ],
+ [
+ "deep",
+ "deep_copy_sheet"
+ ],
+ [
+ "c",
+ "compact"
+ ],
+ [
+ "R",
+ "RuleSet"
+ ],
+ [
+ "clean",
+ "clean_sheet"
+ ],
+ [
+ "s",
+ "save_clean_css"
+ ],
+ [
+ "st",
+ "stylesheet_url"
+ ],
+ [
+ "cle",
+ "clean_sheet"
+ ],
+ [
+ "rule",
+ "rule_to_remove"
+ ],
+ [
+ "sty",
+ "stylesheet"
+ ],
+ [
+ "selector",
+ "selectors"
+ ],
+ [
+ "sel",
+ "selectors"
+ ],
+ [
+ "each",
+ "each_selector"
+ ],
+ [
+ "col",
+ "collect_styled_tags"
+ ],
+ [
+ "ava",
+ "available_elemnts"
+ ],
+ [
+ "im",
+ "image"
+ ],
+ [
+ "in",
+ "input"
+ ],
+ [
+ "i",
+ "items"
+ ],
+ [
+ "font",
+ "font-family\tproperty"
+ ],
+ [
+ "con",
+ "console\tvar"
+ ],
+ [
+ "set",
+ "setTimeout\tfunction"
+ ],
+ [
+ "lo",
+ "log"
+ ],
+ [
+ "new",
+ "newsletter\tparameter"
+ ],
+ [
+ "nw",
+ "Newsletter\talias"
+ ],
+ [
+ "nu",
+ "number\tkeyword"
+ ]
+ ]
+ },
+ "buffers":
+ [
+ {
+ "file": "5.html",
+ "settings":
+ {
+ "buffer_size": 10102,
+ "encoding": "UTF-8",
+ "line_ending": "Unix"
+ }
+ }
+ ],
+ "build_system": "",
+ "build_system_choices":
+ [
+ ],
+ "build_varint": "",
+ "command_palette":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 0.0
+ },
+ "console":
+ {
+ "height": 158.0,
+ "history":
+ [
+ "ls"
+ ]
+ },
+ "distraction_free":
+ {
+ "menu_visible": true,
+ "show_minimap": false,
+ "show_open_files": false,
+ "show_tabs": false,
+ "side_bar_visible": false,
+ "status_bar_visible": false
+ },
+ "file_history":
+ [
+ "/home/dany/projekte/linuxkurs/beispiele/jpg/rename-jpg.sh",
+ "/home/dany/ownCloud/skripte/pwgen.sh",
+ "/home/dany/ownCloud/skripte/txt/recursive-grep-in-file.sh",
+ "/home/dany/ownCloud/skripte/txt/rec-cp.sh",
+ "/home/dany/bin/i3-mulit-mon.py",
+ "/home/dany/projekte/linuxkurs/2.html",
+ "/home/dany/projekte/linux-kurs/slide/Gruntfile.js",
+ "/home/dany/projekte/rvv/wordpress/rvv-dkr/wp-content/plugins/vinyl-download/vinyl-downloader.php",
+ "/home/dany/projekte/rvv/wordpress/rvv-dkr/wp-content/themes/rvv-gitlab/sass/rvv.sass",
+ "/home/dany/projekte/rvv/wordpress/rvv-dkr/wp-content/themes/rvv-gitlab/template-digital-download.php",
+ "/home/dany/projekte/rvv/wordpress/rvv-dkr/wp-content/plugins/vinyl-download/includes/js/ajax.js",
+ "/home/dany/projekte/rvv/wordpress/rvv-dkr/Gruntfile.js",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/assets/semantic-ui/semantic.css",
+ "/home/dany/projekte/linux-kurs/slide/index.html",
+ "/home/dany/projekte/ruby-uncss/c.css",
+ "/home/dany/projekte/ruby-uncss/clean1.css",
+ "/home/dany/projekte/ruby-uncss/sel.txt",
+ "/home/dany/projekte/linux-kurs/ideen.txt",
+ "/home/dany/projekte/linux-kurs/reveal.js-master/css/reveal.scss",
+ "/home/dany/projekte/linux-kurs/reveal.js-master/aaa.html",
+ "/home/dany/projekte/ruby-uncss/test.html",
+ "/home/dany/projekte/ruby-uncss/test.rb",
+ "/home/dany/projekte/ruby-uncss/spectre-test.css",
+ "/home/dany/projekte/ruby-uncss/a.css",
+ "/home/dany/projekte/ruby-uncss/ruby-uncss-sass.rb",
+ "/home/dany/projekte/ruby-uncss/clean2.css",
+ "/home/dany/projekte/ruby-uncss/spectre.css",
+ "/home/dany/projekte/ruby-uncss/aa.txt",
+ "/home/dany/projekte/ruby-uncss/rulesets.css",
+ "/home/dany/projekte/ruby-uncss/skipped-styles.css",
+ "/home/dany/projekte/ruby-uncss/Gemfile",
+ "/home/dany/projekte/ruby-uncss/tags.txt",
+ "/home/dany/projekte/ruby-uncss/tags.rb",
+ "/home/dany/projekte/ruby-uncss/vendor/bundle/ruby/2.3.0/gems/css_parser-1.6.0/lib/css_parser/rule_set.rb",
+ "/home/dany/projekte/ruby-uncss/test.css",
+ "/home/dany/projekte/ruby-uncss/clean.css",
+ "/home/dany/projekte/ruby-uncss/html-parser.rb",
+ "/home/dany/.bash_aliases",
+ "/home/dany/.config/i3/config",
+ "/home/dany/tmp/html-parser.rb",
+ "/home/dany/projekte/acs/grav/user/pages/01.kunden/porsche/sitzung-mai-2018/single-project.de.md",
+ "/home/dany/projekte/acs/grav/user/themes/acs/templates/customer.html.twig",
+ "/home/dany/projekte/acs/grav/system/blueprints/config/site.yaml",
+ "/home/dany/projekte/acs/grav/user/pages/01.kunden/porsche/projekt-1/single-project.de.md",
+ "/home/dany/projekte/acs/grav/user/pages/01.kunden/porsche/projekt-2/single-project.de.md",
+ "/home/dany/.config/polybar/config",
+ "/home/dany/projekte/acs/grav/user/config/system.yaml",
+ "/home/dany/projekte/acs/grav/user/pages/01.kunden/porsche/customer.de.md",
+ "/home/dany/projekte/acs/grav/user/pages/01.kunden/mazda/customer.de.md",
+ "/home/dany/projekte/acs/grav/user/pages/01.kunden/audi/customer.de.md",
+ "/home/dany/projekte/acs/grav/bs-config.js",
+ "/home/dany/projekte/acs/grav/user/pages/01.kunden/audi/q1/default.md",
+ "/home/dany/projekte/acs/grav/user/pages/01.kunden/audi/p1/default.md",
+ "/home/dany/projekte/acs/grav/user/themes/acs/blueprints/item.yaml",
+ "/home/dany/projekte/acs/grav/user/themes/acs/blueprints/customer.yaml",
+ "/home/dany/projekte/acs/grav/user/themes/acs/blueprints/blog.yaml",
+ "/home/dany/projekte/acs/grav/start.sh",
+ "/home/dany/local-dev/grav/user/pages/01.kunden/porsche/customer.de.md",
+ "/home/dany/local-dev/grav/user/pages/01.kunden/customers.de.md",
+ "/home/dany/local-dev/grav/user/themes/acs/templates/blog.html.twig",
+ "/home/dany/local-dev/grav/user/pages/01.kunden/audi/customer.de.md",
+ "/home/dany/local-dev/grav/user/themes/acs/templates/modular/video.html.twig",
+ "/home/dany/local-dev/grav/user/pages/01.kunden/_video/video.md",
+ "/home/dany/local-dev/grav/user/pages/01.kunden/Audi/modular.de.md",
+ "/home/dany/local-dev/grav/user/themes/acs/templates/partials/base.html.twig",
+ "/home/dany/local-dev/grav/user/pages/01.kunden/modular.de.md",
+ "/home/dany/local-dev/grav/user/pages/01.kunden/_customer/customer.md",
+ "/home/dany/local-dev/grav/user/themes/quark/templates/partials/base.html.twig",
+ "/home/dany/local-dev/grav/user/pages/01.kunden/modular.html.twig",
+ "/home/dany/local-dev/grav/user/themes/acs/blueprints.yaml",
+ "/home/dany/local-dev/grav/user/themes/acs/acs.php",
+ "/home/dany/local-dev/grav/user/config/system.yaml",
+ "/home/dany/local-dev/grav/user/config/site.yaml",
+ "/home/dany/local-dev/grav/user/pages/03.test/default.md",
+ "/home/dany/local-dev/grav/user/pages/04.kunden/_customer/_customer-list.twig",
+ "/home/dany/local-dev/pixelcoud/cimme/CIMme/src/cimme-app.html",
+ "/home/dany/local-dev/pixelcoud/cimme/CIMme/bower.json",
+ "/home/dany/local-dev/pixelcoud/cimme/CIMme/package.json",
+ "/home/dany/Downloads/rvv-font-test.html",
+ "/home/dany/local-dev/pixelcoud/cimme/CIMme/polymer.json",
+ "/home/dany/local-dev/pixelcoud/cimme/CIMme/index.html",
+ "/home/dany/local-dev/pixelcoud/cimme/CIMme/build/default/index.html",
+ "/home/dany/local-dev/pixelcoud/cimme/CIMme/build/es6-bundled/index.html",
+ "/home/dany/local-dev/pixelcoud/cimme/CIMme/src/cimme-header.html",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/app.module.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/edit/edit.component.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/edit/subject/subject.component.ts",
+ "/home/dany/tmp/kaiser-waibel_wp_db-14092018_0934.sql",
+ "/home/dany/projekte/lideal/kaiser wibel/backup.zip",
+ "/home/dany/.cache/.fr-ZyfoWo/db119732_1.dump",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/in-memory-data.service.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/app-routing.module.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/app.component.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/nav/nav.component.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/nav/nav.component.html",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/angular.json",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/styles.css",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/delete/delete.component.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/messages/messages.component.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/load/load.component.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/edit/edit.component.html",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/app.component.css",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/app.component.html",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/load/load.component.html",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/load/load.component.css",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/edit/subject/subject.component.html",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/edit/inline-edit/inline-edit.component.css",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/edit/newsletter.service.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/messages/messages.component.html",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/message.service.ts",
+ "/home/dany/projekte/ng-nl-tool/nl-tool/src/app/nav/nav.component.spec.ts",
+ "/home/dany/.config/sublime-text-3/Packages/User/TypeScript.sublime-settings"
+ ],
+ "find":
+ {
+ "height": 39.0
+ },
+ "find_in_files":
+ {
+ "height": 430.0,
+ "where_history":
+ [
+ ]
+ },
+ "find_state":
+ {
+ "case_sensitive": false,
+ "find_history":
+ [
+ ],
+ "highlight": true,
+ "in_selection": false,
+ "preserve_case": false,
+ "regex": false,
+ "replace_history":
+ [
+ ],
+ "reverse": false,
+ "show_context": true,
+ "use_buffer2": true,
+ "whole_word": false,
+ "wrap": true
+ },
+ "groups":
+ [
+ {
+ "selected": 0,
+ "sheets":
+ [
+ {
+ "buffer": 0,
+ "file": "5.html",
+ "semi_transient": false,
+ "settings":
+ {
+ "buffer_size": 10102,
+ "regions":
+ {
+ },
+ "selection":
+ [
+ [
+ 7834,
+ 7834
+ ]
+ ],
+ "settings":
+ {
+ "syntax": "Packages/HTML/HTML.sublime-syntax",
+ "translate_tabs_to_spaces": false
+ },
+ "translation.x": 0.0,
+ "translation.y": 4907.0,
+ "zoom_level": 1.0
+ },
+ "stack_index": 0,
+ "type": "text"
+ }
+ ]
+ }
+ ],
+ "incremental_find":
+ {
+ "height": 39.0
+ },
+ "input":
+ {
+ "height": 146.0
+ },
+ "layout":
+ {
+ "cells":
+ [
+ [
+ 0,
+ 0,
+ 1,
+ 1
+ ]
+ ],
+ "cols":
+ [
+ 0.0,
+ 1.0
+ ],
+ "rows":
+ [
+ 0.0,
+ 1.0
+ ]
+ },
+ "menu_visible": true,
+ "output.doc":
+ {
+ "height": 0.0
+ },
+ "output.find_results":
+ {
+ "height": 0.0
+ },
+ "pinned_build_system": "",
+ "project": "linux-kurs.sublime-project",
+ "replace":
+ {
+ "height": 74.0
+ },
+ "save_all_on_build": true,
+ "select_file":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ [
+ "",
+ "app/app.component.ts"
+ ],
+ [
+ "serv",
+ "app/edit/newsletter.service.ts"
+ ]
+ ],
+ "width": 0.0
+ },
+ "select_project":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 0.0
+ },
+ "select_symbol":
+ {
+ "height": 392.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 833.0
+ },
+ "selected_group": 0,
+ "settings":
+ {
+ },
+ "show_minimap": false,
+ "show_open_files": true,
+ "show_tabs": true,
+ "side_bar_visible": false,
+ "side_bar_width": 259.0,
+ "status_bar_visible": true,
+ "template_settings":
+ {
+ }
+}