aktuelle.kurse/m122/bash-kursunterlagen/bash2/src/Bash_L2.tex
Harald G. Mueller 5b3ada99be muh
2023-01-17 11:21:58 +01:00

311 lines
9.5 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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}