aktuelle.kurse/m122/bash-kursunterlagen/bash2/src/Bash_L2.tex

311 lines
9.5 KiB
TeX
Raw Normal View History

2021-08-30 15:20:49 +02:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Beamer Presentation
% LaTeX Template
% Version 1.0 (10/11/12)
%
% This template has been downloaded from:
% http://www.LaTeXTemplates.com
%
% License:
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%----------------------------------------------------------------------------------------
% PACKAGES AND THEMES
%----------------------------------------------------------------------------------------
\documentclass{beamer}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{lastpage}
\usepackage{fancyhdr}
\usepackage{soul}
\usepackage{lmodern} % Latin Modern
\usepackage[utf8]{inputenc}
\definecolor{beamer@zueriblue}{HTML}{009EE1}
\definecolor{beamer@lightblue}{HTML}{8BCCE8}\DeclareUnicodeCharacter{00A0}{ }
\mode<presentation> {
% The Beamer class comes with a number of default slide themes
% which change the colors and layouts of slides. Below this is a list
% of all the themes, uncomment each in turn to see what they look like.
%\usetheme{default}
%\usetheme{AnnArbor}
%\usetheme{Antibes}
%\usetheme{Bergen}
%\usetheme{Berkeley}
%\usetheme{Berlin}
%\usetheme{Boadilla}
%\usetheme{CambridgeUS}
%\usetheme{Copenhagen}
%\usetheme{Darmstadt}
%\usetheme{Dresden}
%\usetheme{Frankfurt}
%\usetheme{Goettingen}
%\usetheme{Hannover}
%\usetheme{Ilmenau}
%\usetheme{JuanLesPins}
%\usetheme{Luebeck}
%\usetheme{Madrid}
%\usetheme{Malmoe}
%\usetheme{Marburg}
%\usetheme{Montpellier}
%\usetheme{PaloAlto}
%\usetheme{Pittsburgh}
%\usetheme{Rochester}
%\usetheme{Singapore}
%\usetheme{Szeged}
%\usetheme{Warsaw}
% As well as themes, the Beamer class has a number of color themes
% for any slide theme. Uncomment each of these in turn to see how it
% changes the colors of your current slide theme.
%\usecolortheme{albatross}
%\usecolortheme{beaver}
%\usecolortheme{beetle}
%\usecolortheme{crane}
%\usecolortheme{dolphin}
%\usecolortheme{dove}
%\usecolortheme{fly}
%\usecolortheme{lily}
%\usecolortheme{orchid}
%\usecolortheme{rose}
%\usecolortheme{seagull}
%\usecolortheme{seahorse}
%\usecolortheme{whale}
%\usecolortheme{wolverine}
\usetheme{Dresden}
\setbeamercolor*{palette primary}{use=dove,fg=blue,bg=beamer@lightblue}
\setbeamercolor*{palette secondary}{use=dove,fg=blue,bg=beamer@lightblue}
\setbeamercolor*{palette tertiary}{use=dove,fg=white,bg=beamer@zueriblue}
%\setbeamertemplate{footline} % To remove the footer line in all slides uncomment this line
%\setbeamertemplate{footline}[page number] % To replace the footer line in all slides with a simple slide count uncomment this line
%\setbeamertemplate{navigation symbols}{} % To remove the navigation symbols from the bottom of all slides uncomment this line
}
\usepackage{graphicx} % Allows including images
\usepackage{booktabs} % Allows the use of \toprule, \midrule and \bottomrule in tables
%----------------------------------------------------------------------------------------
% TITLE PAGE
%----------------------------------------------------------------------------------------
\title[Bash - Lektion 2]{Linux Shell - Lektion 2} % The short title appears at the bottom of every slide, the full title is only on the title page
\author{Mario Bischof} % Your name
\institute[BFSU] % Your institution as it will appear on the bottom of every slide, may be shorthand to save space
{
Berufsfachschule Uster \\ % Your institution for the title page
\medskip
\href{mailto:mario.bischof@bzu.ch}{mario.bischof@bzu.ch}% Your email address
}
\date{\today} % Date, can be changed to a custom date
\begin{document}
\begin{frame}
\includegraphics[height=0.4in]{img/bfsulogo.jpg}
\titlepage % Print the title page as the first slide
\end{frame}
\begin{frame}
\frametitle{Übersicht} % Table of contents slide, comment this block out to remove it
\tableofcontents % Throughout your presentation, if you choose to use \section{} and \subsection{} commands, these will automatically be printed on this slide as an overview of your presentation
\end{frame}
%----------------------------------------------------------------------------------------
% PRESENTATION SLIDES
%----------------------------------------------------------------------------------------
%------------------------------------------------
%------------------------------------------------
% A subsection can be created just before a set of slides with a common theme to further break down your presentation into chunks
\section[kanaele]{Informationskanäle}
\begin{frame}[fragile]
\frametitle{Informationskanäle}
Wenn sie mit der Shell arbeiten, gibt es unterschiedliche Informationskanäle, welche sie verwenden können.
\begin{itemize}
\item \verb|stdin| - Standardeingabekanal (0)\\
{\small{(zB. sie geben Zeichen über die Tastatur ein)}}
\item \verb|stdout| - Standardausgabekanal (1)\\
{\small{(zB. ein Programm zeigt den Inhalt eines Verzeichnisses am Bildschirm an)}}
\item \verb|sterr| - Standardfehlerausgabekanal (2)\\
{\small{(zB. ein Programm erzeugt einen Fehler und zeigt diesen am Bildschirm an)}}
\end{itemize}
Jeder der Kanäle kann über die jeweilige Nummer angesprochen werden (0,1,2)
\end{frame}
\section[uml]{Umleiten}
\begin{frame}[fragile]
\frametitle{Ausgabe umleiten}
Die Ausgabe eines Befehls kann umgeleitet werden mit \verb|>| oder \verb|>>|\\
Beispiele:
\begin{itemize}
\item \verb|ls -la > liste.txt|
\item \verb|./meinskript > outputofscript.txt|
\item \verb|cat outputofscript.txt >> list.txt|
\end{itemize}
\verb|>>| hängt Inhalt an bestehende Datei an, \verb|>| überschreibt den Inhalt komplett mit Neuem
\end{frame}
\begin{frame}[fragile]
\frametitle{Ausgabe umleiten}
Die unterschiedlichen Kanäle können mit der Nummer spezifiziert werden:
\begin{itemize}
\item \verb|./meinskript 2> errorsofscript.txt| \\
{\small{(Leitet nur Fehlermeldungen in die Datei \verb|errorsofscript.txt|)}}
\item \verb|./meinskript 1> outputofscript.txt| \\
{\small{(Leitet den üblichen Output in die Datei \verb|outputofscript.txt|)}}
\item \verb|./meinzweitesskript 2>> errorsofscript.txt| \\
{\small{(Dasselbe geht auch im Anhängemodus)}}
\item \verb|./skript 1> output.txt 2> error.txt| \\
{\small{(Unterschiedliche Umleitungen der Kanäle in einem Befehl)}}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Ausgabekanäle zusammenlegen / Ausgaben unterdrücken}
Will man Standardausgabe und Standardfehlerausgabe über denselben Kanal ausgeben, kann man diese mit \verb|2>&1| (Leitet \verb|stderr| in \verb|stdout|) koppeln:\vspace{10pt}\\
\verb|./skript > output.txt 2>&1|
\vspace{10pt}\\
Will man einen Ausgabekanal \emph{ausschalten}, kann dieser nach \verb|/dev/null| (der Linux-Datenschredder) umgeleitet werden:\vspace{10pt}\\
\verb|./skript > output.txt 2>/dev/null|\\
(Unterdrückt die Ausgabe von Fehlern)
\end{frame}
\begin{frame}[fragile]
\frametitle{Eingabe umleiten}
Gleichwohl kann die Standardeingabe (oder Ein- und Ausgabe gleichzeitig) umgeleitet werden
\begin{itemize}
\item \verb|cat < meinFile.txt|
\item \verb|cat < meinFile.txt > meinKopiertesFile.txt|
\item
\begin{verbatim}
sort <<fertig
> Z
> B
> A
> fertig
A
B
Z
\end{verbatim}
\end{itemize}
\verb|<<| fängt eine interaktive Eingabe ab, bis ein Schlüsselwort zur Terminierung eingegeben wird (zB. \verb|fertig|).
\end{frame}
\section[pipe]{Pipeline}
\begin{frame}[fragile]
\frametitle{Pipeline}
Im Gegensatz zu Powershell ist die Pipeline in der Linuxshell nicht Objektorientiert. Es wird lediglich die Ausgabe des vorhergehenden Befehls als textueller Output an den nächsten weitergereicht
\begin{itemize}
\item Filtert alle Zeilen mit dem Begriff \verb|hallo| aus der Datei \verb|meinFile.txt|:
\begin{verbatim}
cat meinFile.txt | grep hallo
\end{verbatim}
\item Filtert und sortiert alle Zeilen mit dem Begriff \verb|hallo| aus der Datei \verb|meinFile.txt| (ohne Duplikate):
\begin{verbatim}
cat meinFile.txt | grep hallo | uniq | sort
\end{verbatim}
\item liefert eine Liste aller Benutzernamen (Alles vor dem ersten Doppelpunkt in jeder Zeile in \verb|/etc/passwd|), ausser dem Benutzer ntp.
\begin{verbatim}
cat /etc/passwd | grep -v ntp | cut -d : -f 1
\end{verbatim}
\end{itemize}
\end{frame}
\section[wcards]{Wildcards}
\begin{frame}[fragile]
\frametitle{Wildcards}
\begin{itemize}
\item * steht für beliebig viele Zeichen
\begin{verbatim}
ls *.txt
\end{verbatim}
\item ? steht für ein beliebiges Zeichen
\begin{verbatim}
ls file?.txt
\end{verbatim}
\item \verb|[ ]| erzeugt eine Auswahl
\begin{verbatim}
ls file[123].txt
\end{verbatim}
\item \verb|[ - ]| erzeugt einen Bereich
\begin{verbatim}
ls file[1-9].txt
\end{verbatim}
\item \verb|!| negiert einen Ausdruck
\begin{verbatim}
ls file[!3].txt
\end{verbatim}
\end{itemize}
\end{frame}
\section[brace]{Brace extension}
\begin{frame}[fragile]
\frametitle{Brace extension}
Mit den geschweiften Klammern können Alternativausdrücke formuliert werden:
\begin{itemize}
\item erzeugt \verb|File1.txt|, \verb|File2.txt| und \verb|File3.txt|:
\begin{verbatim}
touch File{1,2,3}.txt
\end{verbatim}
\item Auch Verschachtelungen sind möglich:
\begin{verbatim}
touch file{orginal{.bak,.txt},kopie{.bak,.txt}}
\end{verbatim}
erzeugt \verb|fileoriginal.txt|, \verb|fileoriginal.bak|, \verb|filekopie.txt| und \verb|filekopie.bak|
\end{itemize}
\end{frame}
\section[texp]{Tilde expansion}
\begin{frame}[fragile]
\frametitle{Tilde expansion}
Einige nützliche Erweiterungen der Tilde:
\begin{verbatim}
Heimverzeichnis des akt. Benutzers: ~
Heimverzeichnis Benutzer: ~BENUTZERNAME
zuvor besuchtes Verzeichnis: ~-
akt. Arbeitsverzeichnis (pwd) : ~+
\end{verbatim}
\end{frame}
\end{document}