# Hello world Welcome! Essential: introduction to linux ================= * [Introduction to Linux](./essential/introduction_to_linux.md#introduction-to-linux) * [Where does Linux originate from?](./essential/introduction_to_linux.md#where-does-linux-originate-from) * [Who is behind this project?](./essential/introduction_to_linux.md#who-is-behind-this-project) * [What is the deal with 'GNU-slash-Linux'?](./essential/introduction_to_linux.md#what-is-the-deal-with-gnu-slash-linux) * [Where can you get some Linux?](./essential/introduction_to_linux.md#where-can-you-get-some-linux) * [Debian](./essential/introduction_to_linux.md#debian) * [How to create a virtual machine](./essential/introduction_to_linux.md#how-to-create-a-virtual-machine) * [Breakdown of the Debian installation](./essential/introduction_to_linux.md#breakdown-of-the-debian-installation) * [Exercise](./essential/introduction_to_linux.md#exercise) * [Quick look at an idle system](./essential/introduction_to_linux.md#quick-look-at-an-idle-system) * [Package managers](./essential/introduction_to_linux.md#package-managers) * [Graphical installation](./essential/introduction_to_linux.md#graphical-installation) * [Command line installation](./essential/introduction_to_linux.md#command-line-installation) * [Adding a secondary desktop environment](./essential/introduction_to_linux.md#adding-a-secondary-desktop-environment) * [Changing the runlevel](./essential/introduction_to_linux.md#changing-the-runlevel) * [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 ================= * [Introduction to the command line](./essential/introduction_to_the_commandline.md#introduction-to-the-command-line) * [Compiled vs interpreted](./essential/introduction_to_the_commandline.md#compiled-vs-interpreted) * [Note on file extensions](./essential/introduction_to_the_commandline.md#note-on-file-extensions) * [More about paths](./essential/introduction_to_the_commandline.md#more-about-paths) * [Absolute and relative paths](./essential/introduction_to_the_commandline.md#absolute-and-relative-paths) * [root and / and /root are not the same thing](./essential/introduction_to_the_commandline.md#root-and---and-root-are-not-the-same-thing) * [Exercise](./essential/introduction_to_the_commandline.md#exercise) * [A pit stop to review what we've learned so far](./essential/introduction_to_the_commandline.md#a-pit-stop-to-review-what-weve-learned-so-far) * [Arguments and flags](./essential/introduction_to_the_commandline.md#arguments-and-flags) * [Getting help](./essential/introduction_to_the_commandline.md#getting-help) * [Options](./essential/introduction_to_the_commandline.md#options) * [Manuals](./essential/introduction_to_the_commandline.md#manuals) * [Exercise](./essential/introduction_to_the_commandline.md#exercise-1) * [Creating, modifying and deleting](./essential/introduction_to_the_commandline.md#creating-modifying-and-deleting) * [Directories](./essential/introduction_to_the_commandline.md#directories) * [Files](./essential/introduction_to_the_commandline.md#files) * [Links](./essential/introduction_to_the_commandline.md#links) * [Editors](./essential/introduction_to_the_commandline.md#editors) * [nano](./essential/introduction_to_the_commandline.md#nano) * [Exercise](./essential/introduction_to_the_commandline.md#exercise-2) * [vi and vim](./essential/introduction_to_the_commandline.md#vi-and-vim) * [Exercise](./essential/introduction_to_the_commandline.md#exercise-3) * [Opening or peaking into files](./essential/introduction_to_the_commandline.md#opening-or-peaking-into-files) * [Exercise](./essential/introduction_to_the_commandline.md#exercise-4) * [Finding stuff](./essential/introduction_to_the_commandline.md#finding-stuff) * [Finding files](./essential/introduction_to_the_commandline.md#finding-files) * [The easy way](./essential/introduction_to_the_commandline.md#the-easy-way) * [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) * [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 ================= * [Users](./essential/introduction_to_administration.md#users) * [Adding and removing users](./essential/introduction_to_administration.md#adding-and-removing-users) * [GNOME](./essential/introduction_to_administration.md#gnome) * [command line](./essential/introduction_to_administration.md#command-line) * [Switching user](./essential/introduction_to_administration.md#switching-user) * [Groups](./essential/introduction_to_administration.md#groups) * [Permissions](./essential/introduction_to_administration.md#permissions) * [Octal number system](./essential/introduction_to_administration.md#octal-number-system) * [Changing ownership](./essential/introduction_to_administration.md#changing-ownership) * [umask](./essential/introduction_to_administration.md#umask) * [Essential programs](./essential/introduction_to_administration.md#essential-programs) * [Remote control of a server](./essential/introduction_to_administration.md#remote-control-of-a-server) * [History](./essential/introduction_to_administration.md#history) * [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 ================= * [bash](./advanced/learning_bash_scripting.md#bash) * [Using variables to store the output of command](./advanced/learning_bash_scripting.md#using-variables-to-store-the-output-of-command) * [Coding challenge - Output system stats](./advanced/learning_bash_scripting.md#coding-challenge---output-system-stats) * [Getting input into the script](./advanced/learning_bash_scripting.md#getting-input-into-the-script) * [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) * [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) * [The expr keyword](./advanced/learning_bash_scripting.md#the-expr-keyword) * [Double parenthesis](./advanced/learning_bash_scripting.md#double-parenthesis) * [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) * [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)