diff --git a/generate_md.py b/generate_md.py
new file mode 100755
index 0000000..a4b131b
--- /dev/null
+++ b/generate_md.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python3
+
+import re
+
+
+INPUT = "readme.md"
+OUTPUT = "todo_over_the_break.md"
+URL = "https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/"
+
+
+if __name__ == "__main__":
+ with open(INPUT, "r") as fp:
+ data = []
+ for line in fp.readlines():
+ stripped = line.strip()
+ stripped = stripped.replace("*", "")
+ stripped = stripped.strip()
+ if "(./" in stripped:
+ topic = stripped[stripped.find("[")+1:stripped.find("]")]
+ url = stripped.replace("(./", "({}".format(URL))
+ url = re.sub("\[.*\]", "[Link]", url)
+ url = " * {} to course documentation".format(url)
+ header = "# {}".format(topic)
+ notes = "## Student notes:"
+
+ data.append(header)
+ data.append(url)
+ data.append(notes)
+ data.append("TODO")
+
+ with open(OUTPUT, "w") as fp:
+ for line in data:
+ fp.write("{}\n\n".format(line))
diff --git a/generate_toc.py b/generate_toc.py
old mode 100644
new mode 100755
index dd5ccef..369d6b0
--- a/generate_toc.py
+++ b/generate_toc.py
@@ -1,3 +1,5 @@
+#!/usr/bin/python3
+
import subprocess
@@ -8,7 +10,8 @@ INPUT = [
"essential/introduction_to_linux.md",
"essential/introduction_to_the_commandline.md",
"essential/introduction_to_administration.md",
- "advanced/learning_bash_scripting.md"
+ "advanced/learning_bash_scripting.md",
+ "advanced/learning_shells.md",
]
CMD = "gh-md-toc"
FILTER = "(#"
@@ -17,14 +20,16 @@ TITLE = "Table of Contents"
if __name__ == "__main__":
try:
- p = subprocess.Popen([CMD], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ p = subprocess.Popen(CMD.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate()
except Exception as e:
print("please install {}".format(LINK))
exit()
CONTENT = []
for f in INPUT:
- p = subprocess.Popen([CMD, f], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ cmd = CMD.split()
+ cmd.append(f)
+ p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate()
output = output.decode().split("\n")
for line in output:
diff --git a/readme.md b/readme.md
index 3f129f5..6c576be 100644
--- a/readme.md
+++ b/readme.md
@@ -2,6 +2,7 @@
Welcome!
+
Essential: introduction to linux
=================
@@ -23,7 +24,7 @@ Essential: introduction to linux
* [Exercise](./essential/introduction_to_linux.md#exercise-1)
* [Guest additions](./essential/introduction_to_linux.md#guest-additions)
-
+Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
Essential: introduction to the commandline
@@ -59,18 +60,27 @@ Essential: introduction to the commandline
* [The hard way](./essential/introduction_to_the_commandline.md#the-hard-way)
* [Exercise](./essential/introduction_to_the_commandline.md#exercise-5)
* [Searching inside files](./essential/introduction_to_the_commandline.md#searching-inside-files)
- * [Wildcards and regular expressions](./essential/introduction_to_the_commandline.md#wildcards-and-regular-expressions)
- * [Wildcards](./essential/introduction_to_the_commandline.md#wildcards)
+ * [Wild cards and regular expressions](./essential/introduction_to_the_commandline.md#wild-cards-and-regular-expressions)
+ * [Wild cards](./essential/introduction_to_the_commandline.md#wild-cards)
* [Exercise](./essential/introduction_to_the_commandline.md#exercise-6)
* [Exercise](./essential/introduction_to_the_commandline.md#exercise-7)
* [Regular expressions](./essential/introduction_to_the_commandline.md#regular-expressions)
* [Pipes and redirects](./essential/introduction_to_the_commandline.md#pipes-and-redirects)
* [Redirecting](./essential/introduction_to_the_commandline.md#redirecting)
+ * [Input redirection](./essential/introduction_to_the_commandline.md#input-redirection)
* [Piping](./essential/introduction_to_the_commandline.md#piping)
* [Text manipulation](./essential/introduction_to_the_commandline.md#text-manipulation)
* [Ideas](./essential/introduction_to_the_commandline.md#ideas)
+* [Exercises](./essential/introduction_to_the_commandline.md#exercises)
+ * [Mini exercise 1](./essential/introduction_to_the_commandline.md#mini-exercise-1)
+ * [Mini exercise 2](./essential/introduction_to_the_commandline.md#mini-exercise-2)
+ * [Mini exercise 3](./essential/introduction_to_the_commandline.md#mini-exercise-3)
+ * [Mini exercise 4](./essential/introduction_to_the_commandline.md#mini-exercise-4)
+ * [Mini exercise 5](./essential/introduction_to_the_commandline.md#mini-exercise-5)
+ * [Mini exercise 6](./essential/introduction_to_the_commandline.md#mini-exercise-6)
+* [Ideas](./essential/introduction_to_the_commandline.md#ideas-1)
-
+Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
Essential: introduction to administration
@@ -92,7 +102,7 @@ Essential: introduction to administration
* [SSH and SFTP](./essential/introduction_to_administration.md#ssh-and-sftp)
* [Bandit](./essential/introduction_to_administration.md#bandit)
-
+Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
Advanced: learning bash scripting
@@ -105,9 +115,8 @@ Advanced: learning bash scripting
* [With read](./advanced/learning_bash_scripting.md#with-read)
* [Coding challenge - Secret input](./advanced/learning_bash_scripting.md#coding-challenge---secret-input)
* [read multiple variables](./advanced/learning_bash_scripting.md#read-multiple-variables)
+ * [Exercise - unpack values](./advanced/learning_bash_scripting.md#exercise---unpack-values)
* [With command line arguments](./advanced/learning_bash_scripting.md#with-command-line-arguments)
- * [From a file](./advanced/learning_bash_scripting.md#from-a-file)
- * [From a pipe](./advanced/learning_bash_scripting.md#from-a-pipe)
* [Coding Challenge - output the exact output below](./advanced/learning_bash_scripting.md#coding-challenge---output-the-exact-output-below)
* [More math!](./advanced/learning_bash_scripting.md#more-math)
* [The let keyword](./advanced/learning_bash_scripting.md#the-let-keyword)
@@ -116,17 +125,64 @@ Advanced: learning bash scripting
* [Variable length](./advanced/learning_bash_scripting.md#variable-length)
* [If Statements - How to make decisions within your Bash script.](./advanced/learning_bash_scripting.md#if-statements---how-to-make-decisions-within-your-bash-script)
* [How does it work behind the scenes?](./advanced/learning_bash_scripting.md#how-does-it-work-behind-the-scenes)
+ * [exit status](./advanced/learning_bash_scripting.md#exit-status)
+ * [test](./advanced/learning_bash_scripting.md#test)
* [Nested if statements](./advanced/learning_bash_scripting.md#nested-if-statements)
-* [Coding challenge - File information](./advanced/learning_bash_scripting.md#coding-challenge---file-information)
* [A modern version of test](./advanced/learning_bash_scripting.md#a-modern-version-of-test)
* [[[ ]]](./advanced/learning_bash_scripting.md#--)
* [(( ))](./advanced/learning_bash_scripting.md#---1)
* [&& and ||](./advanced/learning_bash_scripting.md#-and--)
+* [Coding challenge - File information](./advanced/learning_bash_scripting.md#coding-challenge---file-information)
+* [Coding challenge - pipe or argument?](./advanced/learning_bash_scripting.md#coding-challenge---pipe-or-argument)
* [Loops - A variety of ways to perform repetitive tasks.](./advanced/learning_bash_scripting.md#loops---a-variety-of-ways-to-perform-repetitive-tasks)
+ * [while loop](./advanced/learning_bash_scripting.md#while-loop)
+ * [Read from a file with a while loop](./advanced/learning_bash_scripting.md#read-from-a-file-with-a-while-loop)
+ * [Read from a pipe with a while loop](./advanced/learning_bash_scripting.md#read-from-a-pipe-with-a-while-loop)
+ * [for loop](./advanced/learning_bash_scripting.md#for-loop)
+ * [Counter loops with for](./advanced/learning_bash_scripting.md#counter-loops-with-for)
+ * [Finicky behaviour](./advanced/learning_bash_scripting.md#finicky-behaviour)
+ * [break and continue](./advanced/learning_bash_scripting.md#break-and-continue)
+* [Coding challenge - pipe or argument plus action!](./advanced/learning_bash_scripting.md#coding-challenge---pipe-or-argument-plus-action)
+* [Coding challenge - Rename files](./advanced/learning_bash_scripting.md#coding-challenge---rename-files)
+* [Coding challenge - Rename jpeg files](./advanced/learning_bash_scripting.md#coding-challenge---rename-jpeg-files)
+* [Coding challenge - Remove duplicate files](./advanced/learning_bash_scripting.md#coding-challenge---remove-duplicate-files)
+* [Coding challenge - File tree](./advanced/learning_bash_scripting.md#coding-challenge---file-tree)
+* [Coding challenge - Compare and move](./advanced/learning_bash_scripting.md#coding-challenge---compare-and-move)
+* [Coding challenge - Guess the number](./advanced/learning_bash_scripting.md#coding-challenge---guess-the-number)
* [Functions - Reuse code to make life easier.](./advanced/learning_bash_scripting.md#functions---reuse-code-to-make-life-easier)
+ * [defining a function](./advanced/learning_bash_scripting.md#defining-a-function)
+ * [function arguments](./advanced/learning_bash_scripting.md#function-arguments)
+ * [global vs local variable](./advanced/learning_bash_scripting.md#global-vs-local-variable)
+ * [return values](./advanced/learning_bash_scripting.md#return-values)
+ * [the command builtin](./advanced/learning_bash_scripting.md#the-command-builtin)
+* [Coding challenge - Student reports](./advanced/learning_bash_scripting.md#coding-challenge---student-reports)
* [User Interface - Make your scripts user friendly.](./advanced/learning_bash_scripting.md#user-interface---make-your-scripts-user-friendly)
+* [Coding challenge - Address book](./advanced/learning_bash_scripting.md#coding-challenge---address-book)
+* [Arrays in bash](./advanced/learning_bash_scripting.md#arrays-in-bash)
* [Python](./advanced/learning_bash_scripting.md#python)
* [Vim as an IDE](./advanced/learning_bash_scripting.md#vim-as-an-ide)
-
+Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
+
+
+Advanced: learning shells
+=================
+
+* [bash login](./advanced/learning_shells.md#bash-login)
+ * [which files are sources when](./advanced/learning_shells.md#which-files-are-sources-when)
+* [A clean slate](./advanced/learning_shells.md#a-clean-slate)
+* [Prompt customization](./advanced/learning_shells.md#prompt-customization)
+ * [Saving our changes](./advanced/learning_shells.md#saving-our-changes)
+ * [Decoding the base prompt](./advanced/learning_shells.md#decoding-the-base-prompt)
+* [Alternative shells](./advanced/learning_shells.md#alternative-shells)
+ * [zsh](./advanced/learning_shells.md#zsh)
+ * [fish](./advanced/learning_shells.md#fish)
+ * [xonsh](./advanced/learning_shells.md#xonsh)
+* [Shell completion](./advanced/learning_shells.md#shell-completion)
+* [Frameworks](./advanced/learning_shells.md#frameworks)
+ * [oh my zsh](./advanced/learning_shells.md#oh-my-zsh)
+ * [oh my bash](./advanced/learning_shells.md#oh-my-bash)
+* [xxh](./advanced/learning_shells.md#xxh)
+
+Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
diff --git a/todo_over_the_break.md b/todo_over_the_break.md
new file mode 100644
index 0000000..501658d
--- /dev/null
+++ b/todo_over_the_break.md
@@ -0,0 +1,1192 @@
+# Introduction to Linux
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#introduction-to-linux) to course documentation
+
+## Student notes:
+
+TODO
+
+# Where does Linux originate from?
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#where-does-linux-originate-from) to course documentation
+
+## Student notes:
+
+TODO
+
+# Who is behind this project?
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#who-is-behind-this-project) to course documentation
+
+## Student notes:
+
+TODO
+
+# What is the deal with 'GNU-slash-Linux'?
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#what-is-the-deal-with-gnu-slash-linux) to course documentation
+
+## Student notes:
+
+TODO
+
+# Where can you get some Linux?
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#where-can-you-get-some-linux) to course documentation
+
+## Student notes:
+
+TODO
+
+# Debian
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#debian) to course documentation
+
+## Student notes:
+
+TODO
+
+# How to create a virtual machine
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#how-to-create-a-virtual-machine) to course documentation
+
+## Student notes:
+
+TODO
+
+# Breakdown of the Debian installation
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#breakdown-of-the-debian-installation) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#exercise) to course documentation
+
+## Student notes:
+
+TODO
+
+# Quick look at an idle system
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#quick-look-at-an-idle-system) to course documentation
+
+## Student notes:
+
+TODO
+
+# Package managers
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#package-managers) to course documentation
+
+## Student notes:
+
+TODO
+
+# Graphical installation
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#graphical-installation) to course documentation
+
+## Student notes:
+
+TODO
+
+# Command line installation
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#command-line-installation) to course documentation
+
+## Student notes:
+
+TODO
+
+# Adding a secondary desktop environment
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#adding-a-secondary-desktop-environment) to course documentation
+
+## Student notes:
+
+TODO
+
+# Changing the runlevel
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#changing-the-runlevel) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#exercise-1) to course documentation
+
+## Student notes:
+
+TODO
+
+# Guest additions
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_linux.md#guest-additions) to course documentation
+
+## Student notes:
+
+TODO
+
+# Introduction to the command line
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#introduction-to-the-command-line) to course documentation
+
+## Student notes:
+
+TODO
+
+# Compiled vs interpreted
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#compiled-vs-interpreted) to course documentation
+
+## Student notes:
+
+TODO
+
+# Note on file extensions
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#note-on-file-extensions) to course documentation
+
+## Student notes:
+
+TODO
+
+# More about paths
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#more-about-paths) to course documentation
+
+## Student notes:
+
+TODO
+
+# Absolute and relative paths
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#absolute-and-relative-paths) to course documentation
+
+## Student notes:
+
+TODO
+
+# root and / and /root are not the same thing
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#root-and---and-root-are-not-the-same-thing) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercise) to course documentation
+
+## Student notes:
+
+TODO
+
+# A pit stop to review what we've learned so far
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#a-pit-stop-to-review-what-weve-learned-so-far) to course documentation
+
+## Student notes:
+
+TODO
+
+# Arguments and flags
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#arguments-and-flags) to course documentation
+
+## Student notes:
+
+TODO
+
+# Getting help
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#getting-help) to course documentation
+
+## Student notes:
+
+TODO
+
+# Options
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#options) to course documentation
+
+## Student notes:
+
+TODO
+
+# Manuals
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#manuals) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercise-1) to course documentation
+
+## Student notes:
+
+TODO
+
+# Creating, modifying and deleting
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#creating-modifying-and-deleting) to course documentation
+
+## Student notes:
+
+TODO
+
+# Directories
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#directories) to course documentation
+
+## Student notes:
+
+TODO
+
+# Files
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#files) to course documentation
+
+## Student notes:
+
+TODO
+
+# Links
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#links) to course documentation
+
+## Student notes:
+
+TODO
+
+# Editors
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#editors) to course documentation
+
+## Student notes:
+
+TODO
+
+# nano
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#nano) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercise-2) to course documentation
+
+## Student notes:
+
+TODO
+
+# vi and vim
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#vi-and-vim) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercise-3) to course documentation
+
+## Student notes:
+
+TODO
+
+# Opening or peaking into files
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#opening-or-peaking-into-files) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercise-4) to course documentation
+
+## Student notes:
+
+TODO
+
+# Finding stuff
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#finding-stuff) to course documentation
+
+## Student notes:
+
+TODO
+
+# Finding files
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#finding-files) to course documentation
+
+## Student notes:
+
+TODO
+
+# The easy way
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#the-easy-way) to course documentation
+
+## Student notes:
+
+TODO
+
+# The hard way
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#the-hard-way) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercise-5) to course documentation
+
+## Student notes:
+
+TODO
+
+# Searching inside files
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#searching-inside-files) to course documentation
+
+## Student notes:
+
+TODO
+
+# Wild cards and regular expressions
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#wild-cards-and-regular-expressions) to course documentation
+
+## Student notes:
+
+TODO
+
+# Wild cards
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#wild-cards) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercise-6) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercise-7) to course documentation
+
+## Student notes:
+
+TODO
+
+# Regular expressions
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#regular-expressions) to course documentation
+
+## Student notes:
+
+TODO
+
+# Pipes and redirects
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#pipes-and-redirects) to course documentation
+
+## Student notes:
+
+TODO
+
+# Redirecting
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#redirecting) to course documentation
+
+## Student notes:
+
+TODO
+
+# Input redirection
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#input-redirection) to course documentation
+
+## Student notes:
+
+TODO
+
+# Piping
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#piping) to course documentation
+
+## Student notes:
+
+TODO
+
+# Text manipulation
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#text-manipulation) to course documentation
+
+## Student notes:
+
+TODO
+
+# Ideas
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#ideas) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercises
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#exercises) to course documentation
+
+## Student notes:
+
+TODO
+
+# Mini exercise 1
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#mini-exercise-1) to course documentation
+
+## Student notes:
+
+TODO
+
+# Mini exercise 2
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#mini-exercise-2) to course documentation
+
+## Student notes:
+
+TODO
+
+# Mini exercise 3
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#mini-exercise-3) to course documentation
+
+## Student notes:
+
+TODO
+
+# Mini exercise 4
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#mini-exercise-4) to course documentation
+
+## Student notes:
+
+TODO
+
+# Mini exercise 5
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#mini-exercise-5) to course documentation
+
+## Student notes:
+
+TODO
+
+# Mini exercise 6
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#mini-exercise-6) to course documentation
+
+## Student notes:
+
+TODO
+
+# Ideas
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_the_commandline.md#ideas-1) to course documentation
+
+## Student notes:
+
+TODO
+
+# Users
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#users) to course documentation
+
+## Student notes:
+
+TODO
+
+# Adding and removing users
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#adding-and-removing-users) to course documentation
+
+## Student notes:
+
+TODO
+
+# GNOME
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#gnome) to course documentation
+
+## Student notes:
+
+TODO
+
+# command line
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#command-line) to course documentation
+
+## Student notes:
+
+TODO
+
+# Switching user
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#switching-user) to course documentation
+
+## Student notes:
+
+TODO
+
+# Groups
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#groups) to course documentation
+
+## Student notes:
+
+TODO
+
+# Permissions
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#permissions) to course documentation
+
+## Student notes:
+
+TODO
+
+# Octal number system
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#octal-number-system) to course documentation
+
+## Student notes:
+
+TODO
+
+# Changing ownership
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#changing-ownership) to course documentation
+
+## Student notes:
+
+TODO
+
+# umask
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#umask) to course documentation
+
+## Student notes:
+
+TODO
+
+# Essential programs
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#essential-programs) to course documentation
+
+## Student notes:
+
+TODO
+
+# Remote control of a server
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#remote-control-of-a-server) to course documentation
+
+## Student notes:
+
+TODO
+
+# History
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#history) to course documentation
+
+## Student notes:
+
+TODO
+
+# SSH and SFTP
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#ssh-and-sftp) to course documentation
+
+## Student notes:
+
+TODO
+
+# Bandit
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/essential/introduction_to_administration.md#bandit) to course documentation
+
+## Student notes:
+
+TODO
+
+# bash
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#bash) to course documentation
+
+## Student notes:
+
+TODO
+
+# Using variables to store the output of command
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#using-variables-to-store-the-output-of-command) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Output system stats
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---output-system-stats) to course documentation
+
+## Student notes:
+
+TODO
+
+# Getting input into the script
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#getting-input-into-the-script) to course documentation
+
+## Student notes:
+
+TODO
+
+# With read
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#with-read) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Secret input
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---secret-input) to course documentation
+
+## Student notes:
+
+TODO
+
+# read multiple variables
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#read-multiple-variables) to course documentation
+
+## Student notes:
+
+TODO
+
+# Exercise - unpack values
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#exercise---unpack-values) to course documentation
+
+## Student notes:
+
+TODO
+
+# With command line arguments
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#with-command-line-arguments) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding Challenge - output the exact output below
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---output-the-exact-output-below) to course documentation
+
+## Student notes:
+
+TODO
+
+# More math!
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#more-math) to course documentation
+
+## Student notes:
+
+TODO
+
+# The let keyword
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#the-let-keyword) to course documentation
+
+## Student notes:
+
+TODO
+
+# The expr keyword
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#the-expr-keyword) to course documentation
+
+## Student notes:
+
+TODO
+
+# Double parenthesis
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#double-parenthesis) to course documentation
+
+## Student notes:
+
+TODO
+
+# Variable length
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#variable-length) to course documentation
+
+## Student notes:
+
+TODO
+
+# If Statements - How to make decisions within your Bash script.
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#if-statements---how-to-make-decisions-within-your-bash-script) to course documentation
+
+## Student notes:
+
+TODO
+
+# How does it work behind the scenes?
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#how-does-it-work-behind-the-scenes) to course documentation
+
+## Student notes:
+
+TODO
+
+# exit status
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#exit-status) to course documentation
+
+## Student notes:
+
+TODO
+
+# test
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#test) to course documentation
+
+## Student notes:
+
+TODO
+
+# Nested if statements
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#nested-if-statements) to course documentation
+
+## Student notes:
+
+TODO
+
+# A modern version of test
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#a-modern-version-of-test) to course documentation
+
+## Student notes:
+
+TODO
+
+# [[
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#--) to course documentation
+
+## Student notes:
+
+TODO
+
+# (( ))
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#---1) to course documentation
+
+## Student notes:
+
+TODO
+
+# && and ||
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#-and--) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - File information
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---file-information) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - pipe or argument?
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---pipe-or-argument) to course documentation
+
+## Student notes:
+
+TODO
+
+# Loops - A variety of ways to perform repetitive tasks.
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#loops---a-variety-of-ways-to-perform-repetitive-tasks) to course documentation
+
+## Student notes:
+
+TODO
+
+# while loop
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#while-loop) to course documentation
+
+## Student notes:
+
+TODO
+
+# Read from a file with a while loop
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#read-from-a-file-with-a-while-loop) to course documentation
+
+## Student notes:
+
+TODO
+
+# Read from a pipe with a while loop
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#read-from-a-pipe-with-a-while-loop) to course documentation
+
+## Student notes:
+
+TODO
+
+# for loop
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#for-loop) to course documentation
+
+## Student notes:
+
+TODO
+
+# Counter loops with for
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#counter-loops-with-for) to course documentation
+
+## Student notes:
+
+TODO
+
+# Finicky behaviour
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#finicky-behaviour) to course documentation
+
+## Student notes:
+
+TODO
+
+# break and continue
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#break-and-continue) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - pipe or argument plus action!
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---pipe-or-argument-plus-action) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Rename files
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---rename-files) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Rename jpeg files
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---rename-jpeg-files) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Remove duplicate files
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---remove-duplicate-files) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - File tree
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---file-tree) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Compare and move
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---compare-and-move) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Guess the number
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---guess-the-number) to course documentation
+
+## Student notes:
+
+TODO
+
+# Functions - Reuse code to make life easier.
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#functions---reuse-code-to-make-life-easier) to course documentation
+
+## Student notes:
+
+TODO
+
+# defining a function
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#defining-a-function) to course documentation
+
+## Student notes:
+
+TODO
+
+# function arguments
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#function-arguments) to course documentation
+
+## Student notes:
+
+TODO
+
+# global vs local variable
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#global-vs-local-variable) to course documentation
+
+## Student notes:
+
+TODO
+
+# return values
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#return-values) to course documentation
+
+## Student notes:
+
+TODO
+
+# the command builtin
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#the-command-builtin) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Student reports
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---student-reports) to course documentation
+
+## Student notes:
+
+TODO
+
+# User Interface - Make your scripts user friendly.
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#user-interface---make-your-scripts-user-friendly) to course documentation
+
+## Student notes:
+
+TODO
+
+# Coding challenge - Address book
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#coding-challenge---address-book) to course documentation
+
+## Student notes:
+
+TODO
+
+# Arrays in bash
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#arrays-in-bash) to course documentation
+
+## Student notes:
+
+TODO
+
+# Python
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#python) to course documentation
+
+## Student notes:
+
+TODO
+
+# Vim as an IDE
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_bash_scripting.md#vim-as-an-ide) to course documentation
+
+## Student notes:
+
+TODO
+
+# bash login
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#bash-login) to course documentation
+
+## Student notes:
+
+TODO
+
+# which files are sources when
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#which-files-are-sources-when) to course documentation
+
+## Student notes:
+
+TODO
+
+# A clean slate
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#a-clean-slate) to course documentation
+
+## Student notes:
+
+TODO
+
+# Prompt customization
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#prompt-customization) to course documentation
+
+## Student notes:
+
+TODO
+
+# Saving our changes
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#saving-our-changes) to course documentation
+
+## Student notes:
+
+TODO
+
+# Decoding the base prompt
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#decoding-the-base-prompt) to course documentation
+
+## Student notes:
+
+TODO
+
+# Alternative shells
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#alternative-shells) to course documentation
+
+## Student notes:
+
+TODO
+
+# zsh
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#zsh) to course documentation
+
+## Student notes:
+
+TODO
+
+# fish
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#fish) to course documentation
+
+## Student notes:
+
+TODO
+
+# xonsh
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#xonsh) to course documentation
+
+## Student notes:
+
+TODO
+
+# Shell completion
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#shell-completion) to course documentation
+
+## Student notes:
+
+TODO
+
+# Frameworks
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#frameworks) to course documentation
+
+## Student notes:
+
+TODO
+
+# oh my zsh
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#oh-my-zsh) to course documentation
+
+## Student notes:
+
+TODO
+
+# oh my bash
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#oh-my-bash) to course documentation
+
+## Student notes:
+
+TODO
+
+# xxh
+
+ * [Link](https://gitea.86thumbs.net/waldek/linux_introduction/src/branch/master/advanced/learning_shells.md#xxh) to course documentation
+
+## Student notes:
+
+TODO
+