diff --git a/essential/readme.md b/essential/readme.md
index 903970c..1f85e10 100644
--- a/essential/readme.md
+++ b/essential/readme.md
@@ -605,6 +605,13 @@ When you think about it it does make sense because at the end of the day the com
So when you execute a script each line of code is converted to machine instructions on the spot.
This makes scripts easier to write but slower at execution.
+## Note on file extensions
+
+Linux does not rely as much on file extensions as windows does.
+We could even say it often does not care about them.
+Due to the decentralized nature of Linux development, some programs *do* care about them while others don't.
+It's a bit of hit and miss but I advise you to read [this](https://askubuntu.com/questions/803434/do-file-extensions-have-any-purpose-in-linux) post on AskUbuntu for a more detailed explanation.
+
# More about paths
The prompt in our terminal tells us who we are, on which machine, and **where** we are located.
@@ -1196,12 +1203,236 @@ waldek@hellodebian:~$
**Read** some manual pages on the commands we've seen until now.
**Apply** some options you read about in the manual to experiment with said programs.
-# Creating and modifying
+# Creating, modifying and deleting
+
+We've seen how to navigate our filesystem and how to list files and directories at certain locations.
+Now let's learn how to add, modify and remove files and directories.
## Directories
+The main tool to create directories is `mkdir`.
+It's usage is pretty simple, it will create a directory at the location you specify as argument.
+This location can be absolute or relative.
+By default it will **not** create parent directories if needed but we can force it to do so with the `-p` flag.
+
+```
+waldek@hellodebian:~$ ls
+Desktop Documents Downloads Music Pictures Public Templates Videos
+waldek@hellodebian:~$ mkdir website
+waldek@hellodebian:~$ ls
+Desktop Documents Downloads Music Pictures Public Templates Videos website
+waldek@hellodebian:~$ ls website/
+waldek@hellodebian:~$ mkdir website/page_one/assets
+mkdir: cannot create directory ‘website/page_one/assets’: No such file or directory
+waldek@hellodebian:~$ mkdir -p website/page_one/assets
+waldek@hellodebian:~$ ls -R website/
+website/:
+page_one
+
+website/page_one:
+assets
+
+website/page_one/assets:
+waldek@hellodebian:~$
+```
+
+The counterpart to `mkdir` is `rmdir` which can be used to remove **empty** directories.
+As it can only remove empty directories it's not used that much but it's worth knowing it exists.
+
+```
+waldek@hellodebian:~$ rmdir website/
+rmdir: failed to remove 'website/': Directory not empty
+waldek@hellodebian:~$ rmdir website/page_one/
+rmdir: failed to remove 'website/page_one/': Directory not empty
+waldek@hellodebian:~$ rmdir website/page_one/assets/
+waldek@hellodebian:~$ rmdir website/page_one/
+waldek@hellodebian:~$ rmdir website/
+waldek@hellodebian:~$ ls
+Desktop Documents Downloads Music Pictures Public Templates Videos
+waldek@hellodebian:~$
+```
+
+To remove directories that have subdirectories or files in them we need to use an other program, `rm` but with a specific flag `-r`.
+It works as such.
+
+```
+waldek@hellodebian:~$ mkdir -p website/page_one/assets
+waldek@hellodebian:~$ rm website/
+rm: cannot remove 'website/': Is a directory
+waldek@hellodebian:~$ rm -r website/
+waldek@hellodebian:~$ ls
+Desktop Documents Downloads Music Pictures Public Templates Videos
+waldek@hellodebian:~$
+```
+
+**There is no trash or recycle bin on the command line! Removed is removed so think before you hit enter.**
+
## Files
+We can create empty files with the `touch` command.
+It's worth pointing out that using `touch` to create files is not it's main purpose.
+Reading the manual the fact that it creates files is kind of an extra feature.
+Non the less, it's widely used to create files.
+
+
+```
+TOUCH(1) User Commands TOUCH(1)
+
+NAME
+ touch - change file timestamps
+
+SYNOPSIS
+ touch [OPTION]... FILE...
+
+DESCRIPTION
+ Update the access and modification times of each FILE to the current time.
+
+ A FILE argument that does not exist is created empty, unless -c or -h is supplied.
+
+ A FILE argument string of - is handled specially and causes touch to change the times of the file associated with standard output.
+
+ Mandatory arguments to long options are mandatory for short options too.
+
+```
+
+In practice it works as follows.
+We can create files with `touch` and delete them with `rm`.
+For deleting files we don't need any extra flags as opposed to directories.
+
+```
+waldek@hellodebian:~$ mkdir -p website/page_one/assets
+waldek@hellodebian:~$ ls website/
+page_one
+waldek@hellodebian:~$ touch website/index.html
+waldek@hellodebian:~$ ls website/
+index.html page_one
+waldek@hellodebian:~$ file website/index.html
+website/index.html: empty
+waldek@hellodebian:~$ rm website/index.html
+waldek@hellodebian:~$ ls website/
+page_one
+waldek@hellodebian:~$ file website/index.html
+website/index.html: cannot open `website/index.html' (No such file or directory)
+waldek@hellodebian:~$
+```
+
+What if you created the file in the wrong place?
+With `mv` we can move files from one location to an other.
+When you think about it, renaming is actually the *same* as moving so there is no specific program to rename files or folders.
+
+```
+waldek@hellodebian:~$ touch index.html
+waldek@hellodebian:~$ ls
+Desktop Documents Downloads index.html Music Pictures Public Templates Videos website
+waldek@hellodebian:~$ mv index.html website/indexxxx.html
+waldek@hellodebian:~$ ls
+Desktop Documents Downloads Music Pictures Public Templates Videos website
+waldek@hellodebian:~$ ls website/
+indexxxx.html page_one
+waldek@hellodebian:~$ mv website/indexxxx.html website/index.html
+waldek@hellodebian:~$ ls website/
+index.html page_one
+waldek@hellodebian:~$
+```
+
+We can also move entire directories from one location to another.
+
+```
+waldek@hellodebian:~$ ls
+Desktop Documents Downloads Music Pictures Public Templates Videos website
+waldek@hellodebian:~$ mv website/ Documents/
+waldek@hellodebian:~$ ls
+Desktop Documents Downloads Music Pictures Public Templates Videos
+waldek@hellodebian:~$ ls -R Documents/
+Documents/:
+website
+
+Documents/website:
+index.html page_one
+
+Documents/website/page_one:
+assets
+
+Documents/website/page_one/assets:
+waldek@hellodebian:~$
+```
+
+Copying is done with `cp` and behaves very similar to `mv`.
+For example.
+
+```
+waldek@hellodebian:~/Documents$ ls
+website
+waldek@hellodebian:~/Documents$ mv website/ website_1
+waldek@hellodebian:~/Documents$ ls
+website_1
+waldek@hellodebian:~/Documents$ cp website_1/ website_2
+cp: -r not specified; omitting directory 'website_1/'
+waldek@hellodebian:~/Documents$ cp -r website_1/ website_2
+waldek@hellodebian:~/Documents$ ls
+website_1 website_2
+waldek@hellodebian:~/Documents$ ls -R
+.:
+website_1 website_2
+
+./website_1:
+index.html page_one
+
+./website_1/page_one:
+assets
+
+./website_1/page_one/assets:
+
+./website_2:
+index.html page_one
+
+./website_2/page_one:
+assets
+
+./website_2/page_one/assets:
+waldek@hellodebian:~/Documents$
+```
+
### `nano`
### `vi` and `vim`
+
+# Exercise
+
+The only way to learn `vim` is to *use* it.
+Luckily `vim-nox` comes with a dedicated *program* to learn it called `vimtutor`.
+It's actually a text file that you open up in `vim` where you just need to **read** and **execute** what you've read.
+Enjoy!
+
+# Finding stuff
+
+## Finding files
+
+## Searching inside files
+
+## Wildcards and regular expressions
+
+# Pipes and redirects
+
+# Users
+
+## Adding and removing users
+
+## Switching user
+
+# Permissions
+
+## Octal number system
+
+## Changing permissions
+
+## Changing ownership
+
+# Remote control of a server
+
+## History
+
+## SSH and SFTP
+
+# Bandit
+
diff --git a/readme.md b/readme.md
index 63a5b70..ed6c3e9 100644
--- a/readme.md
+++ b/readme.md
@@ -1,37 +1,133 @@
+# About
+
+Table of Contents
+=================
+
+* [Introduction to Linux](./essential/readme.md#introduction-to-linux)
+ * [Where does Linux originate from?](./essential/readme.md#where-does-linux-originate-from)
+ * [Who is behind this project?](./essential/readme.md#who-is-behind-this-project)
+ * [What is the deal with 'GNU-slash-Linux'?](./essential/readme.md#what-is-the-deal-with-gnu-slash-linux)
+ * [Where can you get some Linux?](./essential/readme.md#where-can-you-get-some-linux)
+ * [Debian](./essential/readme.md#debian)
+* [How to create a virtual machine](./essential/readme.md#how-to-create-a-virtual-machine)
+* [Breakdown of the Debian installation](./essential/readme.md#breakdown-of-the-debian-installation)
+* [Exercise](./essential/readme.md#exercise)
+* [Quick look at an idle system](./essential/readme.md#quick-look-at-an-idle-system)
+* [Package managers](./essential/readme.md#package-managers)
+ * [Graphical installation](./essential/readme.md#graphical-installation)
+ * [Command line installation](./essential/readme.md#command-line-installation)
+ * [Adding a secondary desktop environment](./essential/readme.md#adding-a-secondary-desktop-environment)
+* [Changing the runlevel](./essential/readme.md#changing-the-runlevel)
+* [Exercise](./essential/readme.md#exercise-1)
+* [Guest additions](./essential/readme.md#guest-additions)
+* [Introduction to the command line](./essential/readme.md#introduction-to-the-command-line)
+ * [Compiled vs interpreted](./essential/readme.md#compiled-vs-interpreted)
+ * [Note on file extensions](./essential/readme.md#note-on-file-extensions)
+* [More about paths](./essential/readme.md#more-about-paths)
+ * [Absolute and relative paths](./essential/readme.md#absolute-and-relative-paths)
+ * [root and / and /root are not the same thing](./essential/readme.md#root-and---and-root-are-not-the-same-thing)
+* [Exercise](./essential/readme.md#exercise-2)
+* [A pit stop to review what we've learned so far](./essential/readme.md#a-pit-stop-to-review-what-weve-learned-so-far)
+* [Arguments and flags](./essential/readme.md#arguments-and-flags)
+* [Getting help](./essential/readme.md#getting-help)
+ * [Options](./essential/readme.md#options)
+ * [Manuals](./essential/readme.md#manuals)
+* [Exercise](./essential/readme.md#exercise-3)
+* [Creating, modifying and deleting](./essential/readme.md#creating-modifying-and-deleting)
+ * [Directories](./essential/readme.md#directories)
+ * [Files](./essential/readme.md#files)
+ * [nano](./essential/readme.md#nano)
+ * [vi and vim](./essential/readme.md#vi-and-vim)
+* [Exercise](./essential/readme.md#exercise-4)
+* [Finding stuff](./essential/readme.md#finding-stuff)
+ * [Finding files](./essential/readme.md#finding-files)
+ * [Searching inside files](./essential/readme.md#searching-inside-files)
+ * [Wildcards and regular expressions](./essential/readme.md#wildcards-and-regular-expressions)
+* [Pipes and redirects](./essential/readme.md#pipes-and-redirects)
+* [Users](./essential/readme.md#users)
+ * [Adding and removing users](./essential/readme.md#adding-and-removing-users)
+ * [Switching user](./essential/readme.md#switching-user)
+* [Permissions](./essential/readme.md#permissions)
+ * [Octal number system](./essential/readme.md#octal-number-system)
+ * [Changing permissions](./essential/readme.md#changing-permissions)
+ * [Changing ownership](./essential/readme.md#changing-ownership)
+* [Remote control of a server](./essential/readme.md#remote-control-of-a-server)
+ * [History](./essential/readme.md#history)
+ * [SSH and SFTP](./essential/readme.md#ssh-and-sftp)
+* [Bandit](./essential/readme.md#bandit)
+
# Planning
## Essential
### Day 1
-* Introduction to Linux and it's history
-* How to create a virtual machine
-* Breakdown of the Debian installation
-* Install your own graphical Debian installation with gnome as graphical interface
-* Explain the concept of a package manager
-* Install VLC via the graphical software tool
-* Introduction to the command line
-* Install `htop` via `apt`
-* Add a secondary desktop environment (XFCE or LXDE) via `tasksel` and explore it's footprint
-* Disable the window manager via `systemctl`
-* Install a minimal Debian machine and add some software to it (htop, bmon, ...) as an exercise
+* [Introduction to Linux](./essential/readme.md#introduction-to-linux)
+ * [Where does Linux originate from?](./essential/readme.md#where-does-linux-originate-from)
+ * [Who is behind this project?](./essential/readme.md#who-is-behind-this-project)
+ * [What is the deal with 'GNU-slash-Linux'?](./essential/readme.md#what-is-the-deal-with-gnu-slash-linux)
+ * [Where can you get some Linux?](./essential/readme.md#where-can-you-get-some-linux)
+ * [Debian](./essential/readme.md#debian)
+* [How to create a virtual machine](./essential/readme.md#how-to-create-a-virtual-machine)
+* [Breakdown of the Debian installation](./essential/readme.md#breakdown-of-the-debian-installation)
+* [Exercise](./essential/readme.md#exercise)
+* [Quick look at an idle system](./essential/readme.md#quick-look-at-an-idle-system)
+* [Package managers](./essential/readme.md#package-managers)
+ * [Graphical installation](./essential/readme.md#graphical-installation)
+ * [Command line installation](./essential/readme.md#command-line-installation)
+ * [Adding a secondary desktop environment](./essential/readme.md#adding-a-secondary-desktop-environment)
+* [Changing the runlevel](./essential/readme.md#changing-the-runlevel)
+* [Exercise](./essential/readme.md#exercise-1)
### Day 2
-* Install the guest additions to the main Debian machine
+* [Guest additions](./essential/readme.md#guest-additions)
+* [Introduction to the command line](./essential/readme.md#introduction-to-the-command-line)
+ * [Compiled vs interpreted](./essential/readme.md#compiled-vs-interpreted)
+ * [Note on file extensions](./essential/readme.md#note-on-file-extensions)
+* [More about paths](./essential/readme.md#more-about-paths)
+ * [Absolute and relative paths](./essential/readme.md#absolute-and-relative-paths)
+ * [root and / and /root are not the same thing](./essential/readme.md#root-and---and-root-are-not-the-same-thing)
+* [Exercise](./essential/readme.md#exercise-2)
+* [A pit stop to review what we've learned so far](./essential/readme.md#a-pit-stop-to-review-what-weve-learned-so-far)
+* [Arguments and flags](./essential/readme.md#arguments-and-flags)
+* [Getting help](./essential/readme.md#getting-help)
+ * [Options](./essential/readme.md#options)
+ * [Manuals](./essential/readme.md#manuals)
+* [Exercise](./essential/readme.md#exercise-3)
+* [Creating, modifying and deleting](./essential/readme.md#creating-modifying-and-deleting)
+ * [Directories](./essential/readme.md#directories)
+ * [Files](./essential/readme.md#files)
+ * [nano](./essential/readme.md#nano)
+ * [vi and vim](./essential/readme.md#vi-and-vim)
+* [Exercise](./essential/readme.md#exercise-4)
### Day 3
-* Install `openssh-server`
+* [Finding stuff](./essential/readme.md#finding-stuff)
+ * [Finding files](./essential/readme.md#finding-files)
+ * [Searching inside files](./essential/readme.md#searching-inside-files)
+ * [Wildcards and regular expressions](./essential/readme.md#wildcards-and-regular-expressions)
+* [Pipes and redirects](./essential/readme.md#pipes-and-redirects)
+* [Users](./essential/readme.md#users)
+ * [Adding and removing users](./essential/readme.md#adding-and-removing-users)
+ * [Switching user](./essential/readme.md#switching-user)
+* [Permissions](./essential/readme.md#permissions)
+ * [Octal number system](./essential/readme.md#octal-number-system)
+ * [Changing permissions](./essential/readme.md#changing-permissions)
+ * [Changing ownership](./essential/readme.md#changing-ownership)
+* [Remote control of a server](./essential/readme.md#remote-control-of-a-server)
+ * [History](./essential/readme.md#history)
+ * [SSH and SFTP](./essential/readme.md#ssh-and-sftp)
### Day 4
-* over the wire bandit game
+* [Bandit](./essential/readme.md#bandit)
### Day 5
-* over the wire bandit game
-* time for Q and A
+* [Bandit](./essential/readme.md#bandit)
+* [Moving forward](./essential/readme.md#moving-forward)
## CCNA