From fc8a4a8b5f802ca566400f5f7219d060c08b9dbb Mon Sep 17 00:00:00 2001
From: Jakob Moser <moser@cl.uni-heidelberg.de>
Date: Sat, 6 Apr 2024 15:34:33 +0200
Subject: [PATCH] =?UTF-8?q?Linux-Intro=20hinzuf=C3=BCgen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 slides/english/03_Linux-Intro.tex | 403 +++++++++++++++++++++++++++++
 slides/german/03_Linux-Intro.tex  | 404 ++++++++++++++++++++++++++++++
 2 files changed, 807 insertions(+)
 create mode 100644 slides/english/03_Linux-Intro.tex
 create mode 100644 slides/german/03_Linux-Intro.tex

diff --git a/slides/english/03_Linux-Intro.tex b/slides/english/03_Linux-Intro.tex
new file mode 100644
index 0000000..85f37f2
--- /dev/null
+++ b/slides/english/03_Linux-Intro.tex
@@ -0,0 +1,403 @@
+\setbeamercolor{progress bar}{bg=color3!50!black!30,fg=color3}
+\setbeamercolor{alerted text}{fg=color3}
+\label{sec:Linux}
+\section{\texorpdfstring{\faIcon{terminal} Linux Introduction}{Linux Introduction}}
+
+\begin{frame}
+    \begin{center}
+        \Huge\faIcon{linux} \\
+        \vspace{4mm}
+        \normalsize Who has had anything to do with Linux before?
+    \end{center}
+\end{frame}
+
+\subsection{Overview}
+
+\begin{frame}{What's that?}
+    \begin{itemize}
+        \item Open operating system, an alternative to Windows and macOS
+        \item Many different distributions
+        \item Popular as a server operating system, use for personal computers is less common
+        \begin{itemize}
+            \item Fancied among colis
+        \end{itemize}
+        \item Most computers at the institute run linux
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{How do you operate it?}
+    \begin{itemize}
+        \item There are graphical user interfaces (as for Windows and macOS)\dots
+        \item \dots but you can also use merely text-based interfaces
+        \item The latter is of high importance for remote operation of servers
+    \end{itemize}
+\end{frame}    
+
+\begin{frame}{The terminal}
+    \begin{itemize}
+        \item Takes getting used to, but is very powerful
+        \item At the pool: \keys{Alt + F2}, then ``\textit{konsole}" to open it
+        \item Connecting to the pool from your own device using a ``SSH client"
+        \item The search engine of your choice will provide you with the most helpful tips
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Using the pool without being at the pool: SSH}
+	\textbf{Connecting to linux computers - \structure{ssh} (\structure{s}ecure \structure{sh}ell)}
+
+	\begin{itemize}
+	\item Remote access to a linux terminal from home
+	\item Optionally with a graphical user interface (not very performant)
+	\item Using Linux/Mac/Windows 10 at home? Perfect!
+	\begin{itemize}
+		\item \texttt{ssh \textless login\textgreater @last.cl.uni-heidelberg.de}
+		\item \texttt{ssh \textless login\textgreater @ella.cl.uni-heidelberg.de}
+		\item \texttt{ssh \textless login\textgreater @pool.cl.uni-heidelberg.de -p 2222} (exception!)
+		\item ...
+	\end{itemize}
+	\item For older versions of Windows: \href{https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html}{PuTTY}
+	\item Recommendation: Try it out, contact us when you have problems
+	\end{itemize}
+\end{frame}
+
+\begin{frame}{Using the pool computers}
+    \begin{itemize}
+        \item Set computers to \textbf{standby} (= sleep) if you don't need them
+        \item Away for a short time: Standby (automatically locks session)
+        \item Done: Log out, \textbf{then click ``sleep''}
+        \item Monitor off? Press any key
+        \item Computer off? Please ignore it (we take care of it)
+        \item In the deep hours of the night, all PCs will be rebooted
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Computers, users and data}
+    \begin{itemize}
+        \item Many users can use one computer
+        \item Personal data (home directory) is available at every computer
+        \item The disk space for your home directory is limited!\\ Get the current status: \alert{quota -s}
+            \begin{itemize}
+                \item Space: Soft \textbf{37 GB}, Hard \textbf{42 GB}
+                \item Amount of files: Soft \textbf{200.000}, Hard \textbf{250.000}
+            \end{itemize}
+        \item \textcolor{cwarning}{Suspension}: When violating the quota for too long, your account will be suspended.
+        \item No problem: just clean up your home directory (don't just move the items to the trash)
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Claustrophobia: project directories}
+    \begin{itemize}
+        \item If you need more disk space when working on a larger software project, don't hesistate to contact us for a project directory
+        \item Available on every machine (like the home directories)
+    \end{itemize}
+\end{frame}
+
+\subsection{Essentials and Basic Commands}
+
+\begin{frame}[fragile]{The prompt}
+    \begin{semiverbatim}
+        moser@pool10:~\$
+        moser@pool03:~/Desktop\$
+        moser@ella:/home/students/\$
+    \end{semiverbatim}
+    \begin{tabular}{ l l }
+        \texttt{moser} & Username \\ 
+        \texttt{@} & \textit{Separator}\\
+        \texttt{pool10} & Hostname (e.g. \texttt{pool15} or \texttt{ella})\\
+        \texttt{:} & \textit{Separator}\\
+        \texttt{\textasciitilde} & Current working directory\\
+        \texttt{\$} & \textit{Separator}
+    \end{tabular}
+\end{frame}
+
+\begin{frame}{Linux Path Structure}
+    \begin{itemize}
+        \item Within a directory, there can be files and more directories
+        \item This structure resembles the structure of branches of a tree
+        \item Each node within this tree can be identified by its \textbf{path}
+        \item By the way: Linux doesn't care about file extensions. \texttt{diary.txt} could be a \texttt{gif} file too
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Linux Path Structure}
+    \includegraphics[width=\textwidth]{../img/baumstruktur.png}
+    % https://publicdomainvectors.org/en/free-clipart/Barren-tree/49392.html
+\end{frame}
+
+
+\begin{frame}{Paths}
+    \textbf{Absolute paths}
+    \begin{itemize}
+        \item describe the location of a file / directory relative to the root directory \alert{/}
+        \item are distinct within the system
+        \item e.g. \alert{/home/students/hfischer/folien/einfuehrung.pdf}
+    \end{itemize}
+    \textbf{Relative paths}
+    \begin{itemize}
+        \item describe the location of a file / directory relative to the current working location
+        \item start with a relative anchor (\alert{\textasciitilde} or \alert{.} or \alert{..})
+        \item \alert{\textasciitilde/folien/einfuehrung.pdf}\\
+         \alert{./folien/einfuehrung.pdf} (= \alert{folien/einfuehrung.pdf}) \\
+         \alert{../hfischer/folien/einfuehrung.pdf}\\
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Paths: Anchors}
+    All paths start with an anchor:
+    \begin{tabular}{ l l }
+        \alert{/} & The root directory \\
+        \alert{\textasciitilde} & The home directory \\
+        & (usually \alert{/home/students/\textit{username}}) \\
+        \alert{.} & The current working directory \\
+        & (This anchor can be left out most of the time) \\
+        \alert{..} & The next higher / superior directory
+    \end{tabular}
+
+    \smallskip % Die Leerzeile darüber muss bleiben!
+    Also important: you have to watch out for case sensitivity!
+\end{frame}
+
+\begin{frame}{Commands}
+    \begin{itemize}
+        \item You can or must usually place parameters after commands.
+        \item Example: \texttt{ls -a /home/students/piersig}
+        \item Note that the command name and any parameters are separated by a space.
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Navigation}
+    \textbf{Changing the working directory - \structure{cd} (\structure{c}hange \structure{d}irectory)}\\
+    \begin{description}[\alert{cd \textless absolute path\textgreater}]
+        \item[\alert{cd \textless absolute path\textgreater}]  changes into the specific absolute path
+        \item[\alert{cd \textless relative path\textgreater}]  changes into the specific relative path
+        \item[\alert{cd \textasciitilde}] changes into your home directory (abbreviation: \alert{cd})
+        \item[\alert{cd ..}] changes into the next higher / superior directory
+        \item[...]
+    \end{description}
+    \smaller
+    \textbf{Examples:}\\
+    \alert{cd /home/students/moser/} changes into the home directory of the user \textit{moser}\\
+    \alert{cd Desktop} changes into the subdirectory \textit{Desktop} within the current directory\\
+     \alert{cd} changes into the home directory of the current user\\
+\end{frame}
+
+\begin{frame}{Directory Management}
+    \textbf{Showing the path of the current working directory - \structure{pwd} (\structure{p}rint \structure{w}orking \structure{d}irectory) }\\[0.5cm]
+    
+    \textbf{Showing folder content - \structure{ls} (\structure{l}i\structure{s}t directory contents)}
+    \begin{description}
+        \item[\alert{ls \textless path\textgreater}] shows the content of a relative/absolute path
+        \item[\alert{ls}] shows the content of the current directory
+        \item[\alert{ls -l}] shows the content + other useful information
+        \item[\alert{ls -la}] shows the content + useful information + hidden files
+    \end{description}
+
+    \textbf{Creating folders - \structure{mkdir} (\structure{m}a\structure{k}e \structure{dir}ectory) }
+    \begin{description}
+        \item[\alert{mkdir aFolder}] creates the folder \texttt{aFolder} in the current directory
+        \item[\alert{mkdir \textasciitilde/aFolder}] creates the folder \texttt{aFolder} in your home directory
+    \end{description}
+\end{frame}
+
+\begin{frame}{File Management I}
+
+    \textbf{Copying files - \structure{cp} (\structure{c}o\structure{p}y files and directories)}
+    \begin{description}
+        \item[\alert{cp aFile ../aFile}] copies \texttt{aFile} into the superior directory
+        \item[\alert{cp -r aFolder aFolder2}] copies \texttt{aFolder} (into the same directory)\\[0.5cm]
+    \end{description}
+
+    \textbf{Renaming/Moving files - \structure{mv} (\structure{m}o\structure{v}e/rename files)}:
+    \begin{description}
+        \item[\alert{mv -i file1 file2}] renames \texttt{file1} to \texttt{file2} (confirm with \keys{Y})
+        \item[\alert{mv -i pfad1/file pfad2/file}] moves the file
+    \end{description}
+    If you leave out \alert{-i}, files will be overwritten without further question.
+    Overwritten files are \textbf{\textcolor{cwarning}{gone}}!\\[0.5cm]
+\end{frame}
+
+\begin{frame}{File Management II}
+    \textbf{Deleting files - rm (\structure{r}e\structure{m}ove files or directories)}
+    \begin{description}
+        \item[\alert{rm -i \textless file\textgreater}] deletes a file
+        \item[\alert{rm -i -r \textless directory\textgreater}] deletes a folder with files and subdirectories
+    \end{description}
+    Files deleted using \alert{rm} are \textbf{\textcolor{cwarning}{gone}} as well! (not in the trash folder)
+    And if you leave out \alert{-i}, you won't even be asked if you really want to delete...
+\end{frame}
+
+\begin{frame}{Opening and Creating Text Files}
+    \textbf{Reading text files - \structure{cat}}
+    \begin{description}
+        \item[\alert{cat \textless file\textgreater}] prints the content of the file
+        % \item[\alert{/}] searches for a string $\rightarrow$ \structure{n} shows the next match
+        % \item[\alert{q}] closes reading view\\[0.5cm]
+    \end{description}
+    \textbf{Creating empty files - \structure{touch}}
+    \begin{description}
+        \item[\alert{touch \textless file\textgreater}] creates an empty file with the respective name
+    \end{description}
+\end{frame}
+
+\begin{frame}{Editing Text Files}
+    \textbf{Text editors}
+    \begin{itemize}
+        \item There is a variety of text editors available
+        \item Not every editor is installed on every system by default
+        \item Common editors: \texttt{nano}, \texttt{vi}, \texttt{vim}, \texttt{emacs}
+        \item Create a new or edit an existing text file i.e. by using \\
+                \textbf{\alert{vim \textless file\textgreater}}
+    \end{itemize}
+    \textbf{Lifehack: Ouput forwarding using \texttt{\textgreater, \textgreater\textgreater}}
+    \begin{description}
+        \item[\alert{echo "Hello" \texttt{ \textgreater\textgreater} hello.txt}] appends ``Hello'' to the contents of \texttt{hello.txt}
+    \end{description}
+\end{frame}
+
+\begin{frame}{In the Footsteps of Gutenberg}
+    \textbf{Printing files - \structure{lp} (\structure{l}ine \structure{p}rinter devices)}
+    \begin{description}
+        \item[\alert{lp -h miller \textless path\textgreater}] sends the file to the pool printer
+        \item ideally a \texttt{.txt} or \texttt{.pdf} file\\[0.5cm]
+    \end{description}
+    \textbf{Checking the print status}
+    \begin{itemize}
+        \item Web interface: \structure{\url{http://miller:631/jobs}}
+        \item Favorable price tag per page: only 0 Euro
+        \item Quota: 30 pages every week per user
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Let's just take the file and move it to last}
+    \textbf{Moving files via the network to other computers - rsync}
+    \begin{description}
+        \item[\alert{rsync \textless source\textgreater \hspace{1pt}\textless target\textgreater}] copies the file from the source to the target
+        \item[\alert{rsync hi.txt hfischer@last.cl.uni-heidelberg.de:\textasciitilde /briefe/}] copies \texttt{hi.txt} from the local working directory to the folder \texttt{briefe} in the home directory of the user \texttt{hfischer} on last
+    \end{description}
+\end{frame}
+
+\begin{frame}{Linux Manual Pages}
+    \textbf{Help for commands - \structure{man} (\structure{man}ual pager utils)}
+    \begin{description}
+        \item[\alert{man \textless command\textgreater}] shows manual page for the specified command
+    \end{description}
+    \smaller
+    \textbf{Examples:}\\
+    \alert{man man} How, why and whatfore do you use \texttt{man}?
+
+    \medskip
+    \normalsize
+    If you are still kind of scared by the terminal, have a look at \url{https://linux.die.net/man/} or use a search engine of your choice.
+\end{frame}
+
+\begin{frame}{Wildcards}
+    \textbf{The Asterisk}
+    \begin{itemize}
+        \item matches multiple files
+        \item replaces multiple characters (zero aswell)\\[0.5cm]
+    \end{itemize}
+    \textbf{Example: \structure{rm *.txt}}\\
+    \begin{itemize}
+        \item \texttt{lel.txt} - deleted
+        \item \texttt{lel.pdf} - not deleted
+        \item \texttt{asd.txt} - deleted
+        \item \texttt{lel.pdf.txt} - deleted
+    \end{itemize}
+    Reminder: file extensions are irrelevant to the system
+\end{frame}
+
+\begin{frame}{More useful commands}
+    \begin{description}
+        \item[\alert{grep}] Searching the content of files
+        \item[\alert{find}] Searching files (i.e. by name)
+        \item[\alert{less}] View text file in pager, incl. search functionality 
+        \item[\alert{head}] Printing the first few lines of a file
+        \item[\alert{tail}] Printing the last few lines of a file
+    \end{description}
+    Great sources for more information on a command are (besides \alert{man})
+    webpages like \href{https://wiki.ubuntuusers.de}{\texttt{wiki.ubuntuusers.de}} or \href{https://www.cyberciti.biz/faq}{\texttt{www.cyberciti.biz/faq}}.
+\end{frame}
+
+\subsection{Working with others and over the network}
+
+\begin{frame}{Networks and their users}
+    \textbf{Computers in the network}
+    \begin{itemize}
+        \item{every computer is in the network}
+        \item{every user can log on to every computer}
+        \item{every user gets to use the same data}
+        \item{every user gets to use the same resources}
+    \end{itemize}
+    
+    \textbf{Users and groups}
+    \begin{itemize}
+        \item each user has its own username and is at least in one group (students/mitarb)
+        \item e.g.: \alert{schubert} in \alert{students}
+        \item you can list all groups of a user with the \alert{groups} command
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Access Rights I}
+    The UNIX abbreviation for the three access rights:
+    \begin{description}[r]
+        \item[\alert{r}]read permission. The permission to read the file’s/folder’s content
+        \item[\alert{w}]write permission: The permission to change/delete the file/folder
+        \item[\alert{x}]execution permission (eXecute): The permission to execute the file as a program
+    \end{description}
+    \vspace{1.5em}
+    And for the classes of user and group management:
+    \begin{description}[r]
+        \item[\alert{u}] The user who owns the file
+        \item[\alert{g}] The users who are in the group which owns the file
+        \item[\alert{o}] Every other user
+    \end{description}
+\end{frame}
+
+\begin{frame}{Access Rights II}
+    How the access rights for a specific file or folder are set can be checked with \alert{ls -l \textless path\textgreater}.
+    \\[.5cm]
+    Two typical entries could look like this:\\
+    {\color{red}\texttt{ uuugggooo\\}}
+    \texttt{drwxrwxrwx 160 moser  students   5440 Oct 21 21:25 topics\\
+    -rw-r-----   145 moser  students   2670 Mar 18 13:12 cheat}
+    \\[.5cm]
+    The first entry is a directory which the user, group und others are able to read, write and execute.
+    The second entry is not a directory, but a file. The user is allowed to read and write the files, the group may only read the file. Others are not allowed to do anything.
+\end{frame}
+
+\begin{frame}{Access Rights III}
+    \textbf{Changing access rights - \structure{chmod} (\structure{ch}ange \structure{mod}e)}
+    \begin{description}[Hi] % Das Hi definiert nur, dass die Einrückung zwei Zeichen weit sein soll
+    \item[\alert{chmod \textless class(es)\textgreater\textbf{+}\textless permissions\textgreater \hspace{1pt} \textless file\textgreater}]\hspace{10cm} Allocates the given rights to the given class
+    \item[\alert{chmod \textless class(es)\textgreater \textbf{-}\textless permissions\textgreater \hspace{1pt} \textless file\textgreater}]\hspace{10cm} Withdraws the given rights from the given classes 
+    \end{description}
+        
+    \smaller
+    \textbf{Examples:}\\
+    \alert{chmod go-rwx \textless file\textgreater} withdraws the rights to read, write and execute from the users in the group and all others. \\
+    \alert{chmod u+w \textless file\textgreater} allocates write access to the user\\
+    \alert{chmod a-w \textless file\textgreater} withdraws the write access from everyone (= \alert{chmod ugo-w})
+
+    \normalsize
+    \textit{file} can always also be a \textit{directory}
+\end{frame}
+
+\begin{frame}{Experimenting with Linux and solving the pool test}
+    \begin{center}
+        \includegraphics[width=0.8\textwidth]{../img/yalikejazz.png}
+        \\
+        \url{https://yalikejazz.cl.uni-heidelberg.de/}
+    \end{center}
+\end{frame}
+
+\begin{frame}{Experimenting with Linux and solving the pool test}
+    \begin{itemize}
+        \item Allows you to safely play around with a Linux terminal and practice commands.
+        \item There are some practice tasks in the style of the tasks that are asked in the pool test.
+        \item Because the Linux environment is simulated only in the browser not all programs are available. In particular, there is no \texttt{nano}, \texttt{vim} or \texttt{emacs}.
+        \begin{itemize}
+            \item If a text editor is necessary, one can use \texttt{vi}. The same keyboard shortcuts apply here as with \texttt{vim}, so especially the complicated methodology for closing the editor: \keys{ESC} + \texttt{:wq} to save and \keys{ESC} + \texttt{:q!} to discard the changes.
+            \item You do not always need an editor to fill a text file.
+        \end{itemize}
+    \end{itemize}
+\end{frame}
diff --git a/slides/german/03_Linux-Intro.tex b/slides/german/03_Linux-Intro.tex
new file mode 100644
index 0000000..72689cb
--- /dev/null
+++ b/slides/german/03_Linux-Intro.tex
@@ -0,0 +1,404 @@
+\setbeamercolor{progress bar}{bg=color3!50!black!30,fg=color3}
+\setbeamercolor{alerted text}{fg=color3}
+\label{sec:Linux}
+\section{\texorpdfstring{\faIcon{terminal} Linux-Einführung}{Linux-Einführung}}
+
+\begin{frame}
+    \begin{center}
+        \Huge\faIcon{linux} \\
+        \vspace{4mm}
+        \normalsize Wer hat schon mal etwas mit Linux zu tun gehabt?
+    \end{center}
+\end{frame}
+
+\subsection{Ãœberblick}
+
+\begin{frame}{Was ist das?}
+    \begin{itemize}
+        \item Freies Betriebssystem, Alternative zu z.B. Windows und macOS
+        \item Gibt es in vielen Varianten
+        \item Beliebt als Server-Betriebssystem, auf Privatcomputern seltener
+        \begin{itemize}
+            \item Unter Colis aber beliebt
+        \end{itemize}
+        \item Am Institut laufen fast alle Computer mit Linux
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Wie bedient man das?}
+    \begin{itemize}
+        \item Es gibt grafische Oberflächen (wie bei Windows und macOS)...
+        \item ... aber auch rein textbasierte Oberflächen
+        \item Letztere nutzt man sehr häufig auf Servern
+    \end{itemize}
+\end{frame}    
+
+\begin{frame}{Die Konsole}
+    \begin{itemize}
+        \item Gewöhnungsbedürftig, kann aber sehr viel
+        \item Am Institut: \keys{Alt + F2}, dann "`\textit{konsole}"' eingeben, um Konsole zu öffnen (oder im Startmenü suchen)
+        \item Am eigenen Computer: Verbindung zum Pool aufbauen über einen "`SSH-Client"'
+        \item Suchmaschine hat auf (fast) alles eine Antwort
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{In den Pool gehen, ohne in den Pool zu gehen: SSH}
+	\textbf{Mit Linuxrechnern verbinden - \structure{ssh} (\structure{s}ecure \structure{sh}ell)}
+
+	\begin{itemize}
+	\item Remote-Zugriff auf ein Linux-Terminal von zu Hause aus
+	\item Optional auch mit grafischer Oberfläche (läuft nicht immer flüssig)
+	\item Linux/Mac/Windows 10 zu Hause? Prima!
+	\begin{itemize}
+		\item \texttt{ssh \textless login\textgreater @last.cl.uni-heidelberg.de}
+		\item \texttt{ssh \textless login\textgreater @ella.cl.uni-heidelberg.de}
+		\item \texttt{ssh \textless login\textgreater @pool.cl.uni-heidelberg.de -p 2222} (Ausnahme!)
+		\item ...
+	\end{itemize}
+	\item Ansonsten gibt's für Windows z.B. \href{https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html}{PuTTY}
+	\item Empfehlung: Mal ausprobieren, bei Problemen melden
+	\end{itemize}
+\end{frame}
+
+\begin{frame}{Benutzung der Pool-Rechner}
+    \begin{itemize}
+        \item Rechner, wenn ihr sie nicht braucht, auf \textbf{Standby} (= Sleep) schalten
+        \item Wenn ihr nur kurz weg seid: Standby-Modus (sperrt auch automatisch die Sitzung)
+        \item Bei Verlassen des Rechners: Abmelden, \textbf{danach "`Sleep"' anklicken}
+        \item Bildschirm aus? \textbf{Taste drücken}
+        \item Rechner aus? Ignorieren (wir kümmern uns drum)
+        \item In den tiefen Stunden der Nacht werden alle Rechner einmal neu gestartet
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Computer, User und Dateien}
+    \begin{itemize}
+        \item Computer, User und Daten sind nicht aneinander gebunden
+        \item viele User an einem Computer
+        \item pers\"onliche Daten an allen Computern (Home-Verzeichnisse)
+        \item Euer Speicherplatz im home-Verzeichnis ist begrenzt!\\ Derzeitigen Stand
+                abfragen: \alert{quota -s}
+            \begin{itemize}
+                \item Speicherplatz: Soft \textbf{37 GB}, Hard \textbf{42 GB}
+                \item {\lq}Dateien{\rq}: Soft \textbf{200.000}, Hard \textbf{250.000}
+            \end{itemize}
+        \item \textcolor{cwarning}{Zugriffssperre}: Wer zu lange über der quota ist, wird gesperrt.
+        \item Kein Problem: muss man nur aufr\"aumen (nur Papierkorb reicht nicht)
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Platzangst: Projektverzeichnisse}
+    \begin{itemize}
+        \item Für größere Softwareprojekte könnt ihr bei uns um ein Projektverzeichnis bitten
+        \item Genauso wie die Home-Verzeichnisse auf allen Computern verfügbar
+    \end{itemize}
+\end{frame}
+
+\subsection{Grundlagen und einfache Befehle}
+
+\begin{frame}[fragile]{Der Prompt}
+    \begin{semiverbatim}
+        moser@pool10:~\$
+        moser@pool03:~/Desktop\$
+        moser@ella:/home/students/\$
+    \end{semiverbatim}
+    \begin{tabular}{ l l }
+        \texttt{moser} & Username \\ 
+        \texttt{@} & \textit{Trennsymbol}\\
+        \texttt{pool10} & Hostname (z.B. \texttt{pool15} oder \texttt{ella})\\
+        \texttt{:} & \textit{Trennsymbol}\\
+        \texttt{\textasciitilde} & Aktuelles Verzeichnis\\
+        \texttt{\$} & \textit{Trennsymbol}
+    \end{tabular}
+\end{frame}
+
+\begin{frame}{Linux Baumstruktur}
+    \begin{itemize}
+        \item Innerhalb von Verzeichnissen können neben Dateien weitere Verzeichnisse liegen
+        \item Ähnelt der Struktur eines Baumes mit vielen Verzweigungen
+        \item Wo eine Datei liegt, wird anhand ihres \textbf{Pfades} beschrieben
+        \item Ãœbrigens: Die Endungen von Dateien sind Linux egal. \texttt{tagebuch.txt} kann auch ein \texttt{gif} sein.
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Linux Baumstruktur}
+    \includegraphics[width=\textwidth]{../img/baumstruktur.png}
+    % https://publicdomainvectors.org/en/free-clipart/Barren-tree/49392.html
+\end{frame}
+
+
+\begin{frame}{Pfade}
+    \textbf{Absolute Pfade}
+    \begin{itemize}
+        \item beschreiben den Ort einer Datei vom Wurzelverzeichnis aus \alert{/}
+        \item sind im System eindeutig
+        \item z.B. \alert{/home/students/hfischer/folien/einfuehrung.pdf}
+    \end{itemize}
+    \textbf{Relative Pfade}
+    \begin{itemize}
+        \item beschreiben den Ort abhängig vom aktuellen ``Aufenthaltsort'' oder dem Benutzer
+        \item beginnen mit einem relativen Anker (\alert{\textasciitilde} oder \alert{.} oder \alert{..})
+        \item \alert{\textasciitilde/folien/einfuehrung.pdf}\\
+         \alert{./folien/einfuehrung.pdf} (= \alert{folien/einfuehrung.pdf}) \\
+         \alert{../hfischer/folien/einfuehrung.pdf}\\
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Pfade: Anker}
+    Alle Dateipfade beginnen also mit einem Anker:
+    \begin{tabular}{ l l }
+        \alert{/} & Das Wurzelverzeichnis (root-Verzeichnis) \\
+        \alert{\textasciitilde} & Das eigene Homeverzeichnis. \\
+        & (normalerweise unter \alert{/home/students/\textit{username}}) \\
+        \alert{.} & Das aktuelle Verzeichnis. \\
+        & (Diesen Anker kann man oft weglassen) \\
+        \alert{..} & Das überliegende Verzeichnis
+    \end{tabular}
+
+    \smallskip % Die Leerzeile darüber muss bleiben!
+    Wichtig außerdem: Gro{\ss}- und Kleinschreibung macht einen Unterschied!
+\end{frame}
+
+\begin{frame}{Befehle}
+    \begin{itemize}
+        \item Hinter Befehle kann oder muss man üblicherweise Parameter schreiben.
+        \item Beispiel: \texttt{ls -a /home/students/piersig}
+        \item Man beachte, dass Befehlsname und etwaige Parameter jeweils mit einem Leerzeichen voneinander getrennt werden.
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Navigation im Baum}
+    \textbf{Verzeichnis wechseln - \structure{cd} (\structure{c}hange \structure{d}irectory)}\\
+    \begin{description}[\alert{cd \textless absoluter Pfad\textgreater}]
+        \item[\alert{cd \textless absoluter Pfad\textgreater}]  wechselt in den angegebenen absoluten Pfad
+        \item[\alert{cd \textless relativer Pfad\textgreater}]  wechselt in den angegebenen relativen Pfad
+        \item[\alert{cd \textasciitilde}]wechselt in das eigene Homeverzeichnis (noch kürzer: nur \alert{cd})
+        \item[\alert{cd ..}]wechselt in das höher gelegene Verzeichnis
+        \item[...]
+    \end{description}
+    \smaller
+    \textbf{Beispiele:}\\
+    \alert{cd /home/students/moser/} wechselt ins Home des Users \textit{moser}\\
+    \alert{cd Desktop} wechselt in das Verzeichnis \textit{Desktop} im aktuellen Verzeichnis\\
+     \alert{cd} wechselt ins Home-Verzeichnis des eingeloggten users\\
+\end{frame}
+
+\begin{frame}{Ordnerverwaltung}
+    \textbf{aktuellen Pfad anzeigen - \structure{pwd} (\structure{p}rint \structure{w}orking \structure{d}irectory) }\\[0.5cm]
+    
+    \textbf{Ordnerinhalte anzeigen - \structure{ls} (\structure{l}i\structure{s}t directory contents)}
+    \begin{description}
+        \item[\alert{ls \textless Pfad\textgreater}]zeigt Inhalt des entsprechenden Verzeichnisses
+        \item[\alert{ls}]zeigt Inhalt des aktuellen Verzeichnisses
+        \item[\alert{ls -l}] zeigt den Inhalt + allerlei n\"utzliche Informationen
+        \item[\alert{ls -la}] zeigt den Inhalt + Informationen + versteckte Dateien an\\[0.5cm]
+    \end{description}
+
+    \textbf{Ordner erstellen - \structure{mkdir} (\structure{m}a\structure{k}e \structure{dir}ectory) }
+    \begin{description}
+        \item[\alert{mkdir einOrdner}]erstellt Ordner \texttt{einOrdner} in aktuellem Verzeichnis
+        \item[\alert{mkdir \textasciitilde/einOrdner}] erstellt Ordner \texttt{einOrdner} im home Verzeichnis
+    \end{description}
+\end{frame}
+
+\begin{frame}{Dateiverwaltung I}
+
+    \textbf{Dateien kopieren - \structure{cp} (\structure{c}o\structure{p}y files and directories)}
+    \begin{description}
+        \item[\alert{cp eineDatei ../eineDatei}]kopiert \texttt{eineDatei} in das übergelegene Verzeichnis
+        \item[\alert{cp -r einOrdner einOrdner2}]kopiert \texttt{einOrdner} (ins selbe Verzeichnis)\\[0.5cm]
+    \end{description}
+
+    \textbf{Dateien verschieben/umbenennen - \structure{mv} (\structure{m}o\structure{v}e/rename files)}:
+    \begin{description}
+        \item[\alert{mv -i file1 file2}] benennt die Datei \texttt{file1} in \texttt{file2} um (bestätigen mit \keys{Y})
+        \item[\alert{mv -i pfad1/file pfad2/file}] verschiebt die Datei
+    \end{description}
+    Wenn ihr \alert{-i} weglasst, werden Dateien ggfs. ohne Rückfrage überschrieben. Überschriebene Dateien sind \textbf{\textcolor{cwarning}{weg}}!\\[0.5cm]
+\end{frame}
+
+\begin{frame}{Dateiverwaltung II}
+    \textbf{Dateien löschen - rm (\structure{r}e\structure{m}ove files or directories)}
+    \begin{description}
+        \item[\alert{rm -i \textless Datei\textgreater}] löscht eine Datei
+        \item[\alert{rm -i -r \textless Verzeichnis\textgreater}] löscht ein ganzes Verzeichnis mit Inhalt und Unterordnern
+    \end{description}
+    Mit \alert{rm} entfernte Dateien sind auch \textbf{\textcolor{cwarning}{weg}}! (nicht im Papierkorb)
+    Und wenn ihr \alert{-i} weglasst, gibt es noch nicht mal eine Rückfrage...
+\end{frame}
+
+\begin{frame}{Textdateien anschauen und anlegen}
+    \textbf{Textdateien betrachten - \structure{cat}}
+    \begin{description}
+        \item[\alert{cat \textless Dateiname\textgreater}] schreibt den Inhalt einer Textdatei ins Terminal
+        % \item[\alert{/}] sucht einen Begriff $\rightarrow$ \structure{n} zeigt nächstes Suchergebnis
+        % \item[\alert{q}] beendet die Leseansicht\\[0.5cm]
+    \end{description}
+    \textbf{Leere Dateien anlegen - \structure{touch}}
+    \begin{description}
+        \item[\alert{touch \textless Dateiname\textgreater}] legt eine leere Datei mit dem entsprechenden Namen an
+    \end{description}
+\end{frame}
+
+\begin{frame}{Textdateien editieren}
+    \textbf{Texteditoren}
+    \begin{itemize}
+        \item Es gibt eine breite Auswahl an Editoren für das Terminal
+        \item Natürlich sind nicht unbedingt alle auf jedem System standardmäßig installiert
+        \item Beliebte Editoren: \texttt{nano}, \texttt{vi}, \texttt{vim}, \texttt{emacs}
+        \item Neue Datei anlegen oder existierende bearbeiten z.B. mit \\
+                \textbf{\alert{vim \textless Dateiname\textgreater}}
+    \end{itemize}
+    \textbf{Trick 17: Ausgabeweiterleitung mit \texttt{\textgreater, \textgreater\textgreater}}
+    \begin{description}
+        \item[\alert{echo "Hallo" \texttt{ \textgreater\textgreater} hallo.txt}] hängt ``Hallo'' an den Inhalt der Datei \texttt{hallo.txt} an
+    \end{description}
+\end{frame}
+
+\begin{frame}{Auf den Spuren Gutenbergs}
+    \textbf{Dateien drucken - \structure{lp} (\structure{l}ine \structure{p}rinter devices)}
+    \begin{description}
+        \item[\alert{lp -h miller \textless Pfad\textgreater}]sendet die Datei zum Standard-Drucker
+        \item idealerweise \texttt{.txt} oder \texttt{.pdf} Dateien\\[0.5cm]
+    \end{description}
+    \textbf{Druck-Status \"uberpr\"ufen}
+    \begin{itemize}
+        \item Web-Interface unter \structure{\url{http://miller:631/jobs}}
+        \item g\"unstiger Seitenpreis von kostenlos Euro
+        \item Quota: pro User 30 Seiten pro 7 Tage
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Wir nehmen einfach die Datei und schieben sie auf last}
+    \textbf{Dateien übers Netzwerk verschieben - rsync}
+    \begin{description}
+        \item[\alert{rsync \textless Quelle\textgreater\ \textless Ziel\textgreater}] kopiert die Datei von der Quelle ans Ziel 
+        \item[\alert{rsync hi.txt hfischer@last.cl.uni-heidelberg.de:\textasciitilde /briefe/}] kopiert die Datei \texttt{hi.txt} aus dem lokalen Working Directory auf den Server last in das Home-Verzeichnis des Nutzers in den Unterordner \texttt{briefe} 
+    \end{description}
+\end{frame}
+
+\begin{frame}{Linux Manual Pages}
+    \textbf{Hilfe zu Befehlen - \structure{man} (\structure{man}ual pager utils)}
+    \begin{description}
+        \item[\alert{man \textless Befehl\textgreater}]zeigt die Man-Page zum angegebenen Befehl
+    \end{description}
+    \smaller
+    \textbf{Beispiel:}\\
+    \alert{man man} Wie, wozu und weshalb nutze ich eigentlich \texttt{man}?
+
+    \medskip
+    \normalsize
+    Wem die Konsole noch zu unheimlich ist, dem sei \url{https://linux.die.net/man/} ans Herz gelegt, oder ihr benutzt eine Suchmaschine.
+\end{frame}
+
+\begin{frame}{Wildcards}
+    \textbf{Der Asterisk}
+    \begin{itemize}
+        \item erfasst mehrere Dateien gleichzeitig
+        \item ersetzt beliebig viele Zeichen (auch null)\\[0.5cm]
+    \end{itemize}
+    \textbf{Beispiel: \structure{rm *.txt}}\\
+    \begin{itemize}
+        \item \texttt{lel.txt} - wird gelöscht 
+        \item \texttt{lel.pdf} - wird nicht gelöscht
+        \item \texttt{asd.txt} - wird gelöscht
+        \item \texttt{lel.pdf.txt} - wird gelöscht
+    \end{itemize}
+    Erinnerung: Dateiendungen sind für den User, nicht für das System!
+\end{frame}
+
+\begin{frame}{Weitere nützliche Befehle}
+    \begin{description}
+        \item[\alert{grep}] Im Inhalt von Dateien suchen
+        \item[\alert{find}] Dateien suchen (z.B. nach Namen)
+        \item[\alert{less}] Textdatei in einem Pager ansehen, inklusive Suchfunktion 
+        \item[\alert{head}] Die ersten paar Zeilen einer Datei ausgeben
+        \item[\alert{tail}] Die letzten paar Zeilen einer Datei ausgeben    
+    \end{description}
+    Gute Quellen für mehr Informationen zu einem Befehl sind neben \alert{man}
+    Websites wie \href{https://wiki.ubuntuusers.de}{\texttt{wiki.ubuntuusers.de}} oder \href{https://www.cyberciti.biz/faq}{\texttt{www.cyberciti.biz/faq}}.
+\end{frame}
+
+\subsection{Arbeiten im Netzwerk und mit Anderen}
+
+\begin{frame}{Netzwerke und ihre Benutzer}
+    \textbf{Rechner im Netzwerk}
+    \begin{itemize}
+        \item{alle Rechner sind im Netz}
+        \item{alle User können auf viele Rechner}
+        \item{allen Usern stehen dieselben Daten zur Verfügung}
+        \item{allen Usern stehen dieselben Resourcen zur Verfügung}
+    \end{itemize}
+    
+    \textbf{User und Gruppen}
+    \begin{itemize}
+        \item jeder User hat einen Usernamen und mind. eine Gruppe (students/mitarb)
+        \item z.B.: \alert{schubert} in \alert{students}
+        \item alle Gruppen kann man mit dem \alert{groups} Befehl auflisten
+    \end{itemize}
+\end{frame}
+
+\begin{frame}{Zugriffsrechte I}
+    Die UNIX-Kürzel für drei Zugriffstypen:
+    \begin{description}[r]
+        \item[\alert{r}]Leserechte. Erlaubnis, die Datei zu lesen bzw. den Verzeichnisinhalt einzusehen
+        \item[\alert{w}]Schreibrechte: Erlaubnis, die Datei zu verändern oder gar zu löschen
+        \item[\alert{x}]Ausführrechte (eXecute): Erlaubnis, die Datei als Programm auszuführen
+    \end{description}
+    \vspace{1.5em}
+    Und für die Klassen der User- und Gruppenverwaltung:
+    \begin{description}[r]
+        \item[\alert{u}]Der User, dem die Datei gehört
+        \item[\alert{g}]Die User, die in der Gruppe sind, der die Datei gehört
+        \item[\alert{o}]Alle anderen User des Systems
+    \end{description}
+\end{frame}
+
+\begin{frame}{Zugriffsrechte II}
+    Welche Zugriffsrechte nun für eine Datei oder ein Verzeichnis gesetzt sind, sieht man mit \alert{ls -l \textless Pfad\textgreater}.
+    \\[.5cm]
+    Zwei typische Einträge könnten so aussehen:\\
+    {\color{cwarning}\texttt{ uuugggooo\\}}
+    \texttt{drwxrwxrwx 160 moser  students   5440 Oct 21 21:25 topics\\
+    -rw-r-----   145 moser  students   2670 Mar 18 13:12 cheat}
+    \\[.5cm]
+    Die erste Datei ist hier ein Verzeichnis (Directory), das User, Group und Other lesen, verändern und betreten dürfen.
+    Die zweite Datei ist kein Verzeichnis, nur der User darf lesen und schreiben, die Gruppe darf nur lesen, und die anderen dürfen überhaupt nichts.
+\end{frame}
+
+\begin{frame}{Zugriffsrechte III}
+    \textbf{Dateirechte verändern - \structure{chmod} (\structure{ch}ange \structure{mod}e)}
+    \begin{description}[Hi] % Das Hi definiert nur, dass die Einrückung zwei Zeichen weit sein soll
+    \item[\alert{chmod \textless Klasse(n)\textgreater\textbf{+}\textless Rechte\textgreater \hspace{1pt} \textless Datei\textgreater}]\hspace{10cm}Vergibt den angegebenen Klassen die angegebenen Rechte
+    \item[\alert{chmod \textless Klasse(n)\textgreater \textbf{-}\textless Rechte\textgreater \hspace{1pt} \textless Datei\textgreater}]\hspace{10cm}Entzieht den angegebenen Klassen die angegebenen Rechte
+    \end{description}
+        
+    \smaller
+    \textbf{Beispiele:}\\
+    \alert{chmod go-rwx \textless Datei\textgreater} entzieht den Usern in der Gruppe und den anderen Lese-, Schreib- und Ausführrechte \\
+    \alert{chmod u+w \textless Datei\textgreater} gibt dem Besitzer Schreibrechte\\
+    \alert{chmod a-w \textless Datei\textgreater} entzieht allen die Schreibrechte (= \alert{chmod ugo-w})
+
+    \normalsize
+    \textit{Datei} kann hier immer auch ein \textit{Verzeichnis} sein.
+\end{frame}
+
+\begin{frame}{Mit Linux herumspielen und den Pooltest absolvieren}
+    \begin{center}
+        \includegraphics[width=0.8\textwidth]{../img/yalikejazz.png}
+        \\
+        \url{https://yalikejazz.cl.uni-heidelberg.de/}
+    \end{center}
+\end{frame}
+
+\begin{frame}{Mit Linux herumspielen und den Pooltest absolvieren}
+    \begin{itemize}
+        \item Ermöglicht euch, gefahrlos mit einem Linux-Terminal herumzuspielen und Befehle zu üben.
+        \item Es gibt einige Ãœbungsaufgaben im Stile der Aufgaben, die im Pooltest abgefragt werden.
+        \item Weil die Linux-Umgebung lediglich im Browser simuliert wird, sind nicht alle üblichen Programme verfügbar. Besonders relevant: es gibt \textbf{kein} \texttt{nano}, \texttt{vim} oder \texttt{emacs}.
+        \begin{itemize}
+            \item Falls ein Texteditor nötig ist, kann man \texttt{vi} verwenden. Hier gelten die gleichen Tastenkürzel wie bei \texttt{vim}, also insbesondere die komplizierte Methodik zum Schließen des Editors: \keys{ESC} + \texttt{:wq} zum Speichern und \keys{ESC} + \texttt{:q!} zum Verwerfen der Änderungen.
+            \item Zum Füllen einer Textdatei braucht es nicht immer einen Editor.
+        \end{itemize}
+    \end{itemize}
+\end{frame}
-- 
GitLab