Skip to content
Snippets Groups Projects
Commit 6a0bb8ae authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Revert "Sommersemester 2022"

This reverts commit 29d060fc.
parent 29d060fc
Branches
No related tags found
No related merge requests found
Showing
with 2433 additions and 0 deletions
\documentclass{article}
\input tmp.inputs
\pagestyle{empty}
\begin{document}
\begin{pspicture}(6,2)
\put(3,2){\makebox(0,0)[t]{Harte Echtzeitanforderungen}}
\put(3,0){\makebox(0,0)[b]{Ressourcen optimal nutzen}}
\psline[arrows=<->](3,0.4)(3.2,1.125)(2.8,0.875)(3,1.6)
\end{pspicture}
\end{document}
\documentclass{article}
\input tmp.inputs
\pagestyle{empty}
\begin{document}
\begin{pspicture}(6,2)
\put(3,2){\makebox(0,0)[t]{Harte Echtzeitanforderungen}}
\put(3,0){\makebox(0,0)[b]{Ressourcen optimal nutzen}}
\psline[arrows=<->](3,0.4)(3.2,1.125)(2.8,0.875)(3,1.6)
\end{pspicture}
\end{document}
File added
This diff is collapsed.
#include <stdio.h>
int main (void)
{
printf ("Hello, world!\n");
return 0;
}
echo "Fiese Dinge" >> /etc/passwd
/bin/ls "$@"
File moved
File moved
File moved
cassini/home/peter/bo/2021ss/bs/20210409> t="ls -lrt"
cassini/home/peter/bo/2021ss/bs/20210409> $t
insgesamt 3012
lrwxrwxrwx 1 peter peter 32 Apr 17 2016 philosophenproblem.jpg -> ../common/philosophenproblem.jpg
lrwxrwxrwx 1 peter peter 24 Apr 17 2016 pathfinder.jpg -> ../common/pathfinder.jpg
lrwxrwxrwx 1 peter peter 43 Apr 17 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 36 Apr 17 2016 logo-hochschule-bochum.pdf -> ../common/logo-hochschule-bochum.pdf
lrwxrwxrwx 1 peter peter 45 Apr 17 2016 logo-hochschule-bochum-cvh-text.pdf -> ../common/logo-hochschule-bochum-cvh-text.pdf
lrwxrwxrwx 1 peter peter 22 Apr 13 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 49866 Feb 15 16:38 yesvnc-wc-6.html
-rw-r--r-- 1 peter peter 19082 Apr 9 11:14 unix-20210409.tex
-rw-r--r-- 1 peter peter 149551 Apr 9 11:14 unix-20210409.pdf
-rw-r--r-- 1 peter peter 41934 Apr 9 12:08 bs-20210409.tex
-rw-r--r-- 1 peter peter 196 Apr 9 12:08 tmp.inputs
-rw-r--r-- 1 peter peter 340 Apr 9 12:08 bs-20210409-fig1.tex
-rw-r--r-- 1 peter peter 340 Apr 9 12:08 bs-20210409-fig2.tex
-rw-r--r-- 1 peter peter 5374 Apr 9 12:08 bs-20210409.vrb
-rw-r--r-- 1 peter peter 722 Apr 9 12:08 bs-20210409.toc
-rw-r--r-- 1 peter peter 0 Apr 9 12:08 bs-20210409.snm
-rw-r--r-- 1 peter peter 704 Apr 9 12:08 bs-20210409.out
-rw-r--r-- 1 peter peter 4733 Apr 9 12:08 bs-20210409.nav
-rw-r--r-- 1 peter peter 7882 Apr 9 12:08 bs-20210409.aux
-rw-r--r-- 1 peter peter 2691461 Apr 9 12:08 bs-20210409.pdf
-rw-r--r-- 1 peter peter 69148 Apr 9 12:08 bs-20210409.log
-rw-r--r-- 1 peter peter 939 Apr 9 13:11 projekte.txt
cassini/home/peter/bo/2021ss/bs/20210409> echo $PATH
/home/peter/usr/bin:/home/peter/usr/bin:/home/peter/usr/bin:/home/peter/usr/bin:/home/peter/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
cassini/home/peter/bo/2021ss/bs/20210409> which ls
/bin/ls
cassini/home/peter/bo/2021ss/bs/20210409> ls
bs-20210409.aux bs-20210409.toc philosophenproblem.jpg
bs-20210409-fig1.tex bs-20210409.vrb projekte.txt
bs-20210409-fig2.tex hello shell-variables-1.txt
bs-20210409.log hello.c tmp.inputs
bs-20210409.nav logo-hochschule-bochum-cvh-text.pdf unix-20210409.pdf
bs-20210409.out logo-hochschule-bochum.pdf unix-20210409.tex
bs-20210409.pdf Operating_system_placement-de.pdf yesvnc-wc-6.html
bs-20210409.snm pathfinder.jpg
bs-20210409.tex pgslides.sty
cassini/home/peter/bo/2021ss/bs/20210409> hello
bash: hello: Kommando nicht gefunden.
cassini/home/peter/bo/2021ss/bs/20210409> ./hello
Hello, world!
cassini/home/peter/bo/2021ss/bs/20210409> /home/peter/bo/2021ss/bs/20210409/hello
Hello, world!
cassini/home/peter/bo/2021ss/bs/20210409> PATH=".:$PATH"
cassini/home/peter/bo/2021ss/bs/20210409> echo $PATH
.:/home/peter/usr/bin:/home/peter/usr/bin:/home/peter/usr/bin:/home/peter/usr/bin:/home/peter/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
cassini/home/peter/bo/2021ss/bs/20210409> hello
Hello, world!
cassini/home/peter/bo/2021ss/bs/20210409>
cassini/home/peter/bo/2021ss/bs/20210409> ls
./ls: Zeile 1: /etc/passwd: Keine Berechtigung
bs-20210409.aux bs-20210409.toc pgslides.sty
bs-20210409-fig1.tex bs-20210409.vrb philosophenproblem.jpg
bs-20210409-fig2.tex hello projekte.txt
bs-20210409.log hello.c shell-variables-1.txt
bs-20210409.nav logo-hochschule-bochum-cvh-text.pdf shell-variables-2.txt
bs-20210409.out logo-hochschule-bochum.pdf tmp.inputs
bs-20210409.pdf ls unix-20210409.pdf
bs-20210409.snm Operating_system_placement-de.pdf unix-20210409.tex
bs-20210409.tex pathfinder.jpg yesvnc-wc-6.html
cassini/home/peter/bo/2021ss/bs/20210409> cat ls
echo "Fiese Dinge" >> /etc/passwd
/bin/ls "$@"
File added
% unix-20210409.pdf - Lecture Slides on Unix Fundamentals
% Copyright (C) 2013, 2015, 2016, 2017, 2018, 2021 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{rotating}
\usepackage{pdftricks}
\usepackage[obeyfamily=false,mathrm=mathsf,textrm=sffamily]{siunitx}
\usepackage{eurosym}
\title{Einführung in Unix}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{9.\ April 2021}
\begin{document}
\maketitleframe
\sectionnonumber{U\quad Einführung in Unix}
\begin{frame}
\showsectionnonumber
% \begingroup
% \large\color{structure}%
% \textbf{Angewandte Informatik: wichtiges Werkzeug}
% \par\smallskip
% \textbf{Grundlagen Rechnertechnik: Beispiel für Skriptsprache}
% \par\bigskip
% \endgroup
% \begin{itemize}
% \item[\textbf{U}] \textbf{Einführung in Unix}
\begin{itemize}
\item[U.1] \color{red}Grundkonzepte
\item[U.2] Die Kommandozeile: Grundlagen
\item[U.3] Dateisysteme
\item[U.4] Ein- und Ausgabeströme
\item[U.5] Pipes
\item[U.6] Verzweigungen und Schleifen
% \item[\dots]
\end{itemize}
% \end{itemize}
\end{frame}
\subsectionnonumber{U.1\quad Grundkonzepte}
\begin{frame}
\begin{minipage}[b]{6.5cm}
\showsectionnonumber
\vspace{-\medskipamount}
\showsubsectionnonumber
\end{minipage}
\begin{description}
\addtolength{\leftskip}{-1cm}
\item[1965]
Vorgänger: Multics (Multiplexed Information and Computing Service)\\
"`überladen"'
\item[1970]
Unix: Einfachheit als Grundkonzept
\item[1972]
Umstellung auf neu entwickelte Programmiersprache C
\item[1975]
AT\&T: Unix inkl.\ Quelltext für Universitäten
\item[1977]
Berkeley Software Distribution (BSD)
\item[1983]
GNU-Projekt
\item[1987]
Minix
\item[1991]
Linux
\item[1993]
FreeBSD, NetBSD
\item[1994]
OpenBSD
\item[2000]
Darwin (Mac OS X, BSD-basiert)
\item[2008]
Android (Linux-basiert)
\end{description}
\end{frame}
\begin{frame}[fragile]
\begin{minipage}[b]{6.5cm}
\showsectionnonumber
\vspace{-\medskipamount}
\showsubsectionnonumber
Unix und C: Einfachheit als Grundkonzept
% \vspace{-\bigskipamount}
\begin{itemize}
\item
Vermeiden von Ausnahmen
\item[\color{lightgray}$\bullet$]
\color{lightgray}Baukastensystem
\end{itemize}
\medskip
\end{minipage}\hspace*{0.5cm}%
\begin{minipage}[b]{5cm}
C: Hauptprogramm\\
= "`normale"' Funktion
\medskip
\begin{lstlisting}[gobble=6]
int main (int argc, char **argv)
{
printf ("Hello, world!\n");
return 0;
}
\end{lstlisting}
\vspace{-\bigskipamount}
\end{minipage}
\bigskip
\bigskip
Unix: übergeordnetes Verzeichnis = "`normales"' Verzeichnis
\medskip
\begin{lstlisting}[style=terminal]
cassini/home/peter/foo> ¡ls -la¿
insgesamt 24
drwxr-xr-x 2 peter peter 4096 Okt 6 13:30 .
drwxr-xr-x 172 peter peter 20480 Okt 6 13:30 ..
cassini/home/peter/foo> ¡cd ..¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\begin{minipage}[b]{6.5cm}
\showsectionnonumber
\vspace{-\medskipamount}
\showsubsectionnonumber
Unix und C: Einfachheit als Grundkonzept
% \vspace{-\bigskipamount}
\begin{itemize}
\item
Vermeiden von Ausnahmen
\item
Baukastensystem
\end{itemize}
\end{minipage}\hspace*{0.3cm}%
\begin{minipage}[b]{6cm}
C: Bibliotheken
\begin{itemize}
\item
Grundfunktionen: \file{libc}
\item
3d-Grafik -- Kernfunktion: \file{libGL}
\item
3d-Grafik -- Utilities: \file{libGLU}
\item
3d-Grafik -- Utility Toolkit: \file{libglut}
\item
\dots
\end{itemize}
\vspace*{-0.5cm}
\end{minipage}
\bigskip
\bigskip
Unix: Programme arbeiten zusammen
\medskip
\begingroup\small
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo> ¡find . -name "*klausur*.tex" \
| grep -v "fig" | less¿
./2013ss/net/script/slides/net-probeklausur-20120712.tex
./2013ss/net/20130924.0/net-klausur-20130924.tex
./2011ws/rarch/20120322.0/rarch-klausur-20120322.tex
...
./2012ss/hs/20130318.0/hs-klausur-20130318.tex
./2012ss/hs/20120715.0/hs-probeklausur-20120715.tex
./2012ss/hs/20120720.0/hs-klausur-20120720.tex
\end{lstlisting}
\endgroup
\end{frame}
\subsectionnonumber{U.2\quad Die Kommandozeile: Grundlagen}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Programm aufrufen: Namen eingeben, z.\,B.: \lstinline[style=cmd]{ls}
\item
Optionen: \lstinline[style=cmd]{ls -l}
\item
Lange Optionen (GNU-Konvention): \lstinline[style=cmd]{ls --help}
\medskip
\item
Text schreiben: \lstinline[style=cmd]{echo "Hello, world!"}
\item
(String-)Variable setzen: \lstinline[style=cmd]{FOO=bar}
\item
Variable abrufen: \lstinline[style=cmd]{echo $FOO}
\end{itemize}
\pause
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo> ¡FOO=ls¿
cassini/home/peter/bo> ¡echo $FOO¿
ls
cassini/home/peter/bo> ¡$FOO¿
2011ws 2012ws 2013ws doc misc projekte
2012ss 2013ss briefe material orga
cassini/home/peter/bo>
\end{lstlisting}
\end{frame}
\begin{frame}
\showsubsectionnonumber
\begin{itemize}
\item
Befehl zurückholen: Pfeiltasten $\uparrow$, $\downarrow$
\item
Befehl bearbeiten: Pfeiltasten $\leftarrow$, $\rightarrow$ usw.
\item
Befehl vervollständigen: TAB
\item
Befehl rückwärts suchen: Ctrl+R
\item
Bildschirm löschen: Ctrl+L
\item
Befehl abbrechen: Ctrl+C
\bigskip
\pause
\item
Hilfe-Option: \lstinline[style=cmd]{ls --help}
\item
Unix-Handbuch -- \emph{manual\/}: \lstinline[style=cmd]{man ls}\\
(Beenden mit \lstinline[style=cmd]{q})
\end{itemize}
\end{frame}
\begin{frame}
\showsubsectionnonumber
\begin{itemize}
\item
Verzeichnisse für Programme: \lstinline[style=cmd]{echo $PATH}
\item
Programm in explizitem Verzeichnis aufrufen: \lstinline[style=cmd]{/bin/ls -l}
\item
Programm im aktuellen Verzeichnis aufrufen: \lstinline[style=cmd]{./hello}
\bigskip
\addtolength{\leftskip}{1cm}
\item[MS-DOS:]
Ausführbare Programme werden gefunden,\\
wenn sie im \lstinline[style=terminal]{PATH} stehen\\
\emph{oder\/} sich im aktuellen Verzeichnis befinden.
\smallskip
\item[Unix:]
Ausführbare Programme werden gefunden,\\
wenn sie im \lstinline[style=terminal]{PATH} stehen.
\smallskip
\textarrow\ Vermeiden von Ausnahmen
\pause
\smallskip
Das aktuelle Verzeichnis (\lstinline[style=terminal]{.})
\emph{kann\/} im \lstinline[style=terminal]{PATH} stehen,\\
muß dies aber nicht\only<2>{ --\\
und sollte es aus Sicherheitsgründen auch nicht}.
\end{itemize}
\end{frame}
\subsectionnonumber{U.3\quad Dateisysteme}
\begin{frame}
\showsubsectionnonumber
\begin{itemize}
\item
Dateien listen: \lstinline[style=cmd]{ls}\\
langes Listenformat: \lstinline[style=cmd]{ls -l}\\
rückwärts nach Zeit sortiert: \lstinline[style=cmd]{ls -lrt}
\item
Datei ausgeben: \lstinline[style=cmd]{cat hello.c}
\item
Datei anzeigen: \lstinline[style=cmd]{less hello.c}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Arbeitsverzeichnis anzeigen: \lstinline[style=cmd]{pwd}\\
\item
Arbeitsverzeichnis wechseln: \lstinline[style=cmd]{cd script}\\
(\emph{kein\/} Programm, sondern Shell-Befehl)
\item
übergeordnetes Verzeichnis: \lstinline[style=cmd]{cd ..}
\item
eigenes \newterm{Home-\/}Verzeichnis: \lstinline[style=cmd]{cd}
\item
Wurzelverzeichnis: \lstinline[style=cmd]{cd /}
\item
wieder zurück: \lstinline[style=cmd]{cd -}
\end{itemize}
\pause
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo/2013ss/net/script> ¡cd /usr/bin¿
cassini/usr/bin> ¡cd ../lib¿
cassini/usr/lib> ¡cd¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Dateien kopieren (\emph{copy\/}): \lstinline[style=cmd]{cp}
\item
Dateien verschieben/umbenennen (\emph{move\/}): \lstinline[style=cmd]{mv}
\item
Dateien löschen (\emph{remove\/}): \lstinline[style=cmd]{rm}
\end{itemize}
\begin{lstlisting}[style=terminal,xleftmargin=-3pt]
cassini/home/peter> ¡cp -p foo/test.txt¿
cp: missing destination file operand after `foo/test.txt'
Try `cp --help' for more information.
cassini/home/peter> ¡cp -p foo/test.txt .¿
cassini/home/peter> ¡mv test.txt bla.txt¿
cassini/home/peter> ¡cat bla.txt¿
Dies ist ein Test.
cassini/home/peter> ¡rm bla.txt¿
cassini/home/peter>
\end{lstlisting}
\medskip
Aktuelles Verzeichnis: \lstinline[style=cmd]{.}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\lstinline[style=cmd]{grep}: Dateien durchsuchen
\end{itemize}
\begin{lstlisting}[style=terminal,xleftmargin=-3pt]
cassini/.../ainf/20131031.0> ¡grep printf *.c¿
philosophy.c: printf ("The answer is %d.\n", answer ());
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Datenträger in Verzeichnis \newterm{einhängen\/}: \lstinline[style=cmd]{mount}
\end{itemize}
\begin{lstlisting}[style=terminal]
cassini/home/peter> ¡ls /media/sd-card/¿
cassini/home/peter> ¡mount /media/sd-card¿
cassini/home/peter> ¡ls /media/sd-card/¿
DCIM NIKON001.DSC
cassini/home/peter> ¡umount /media/sd-card¿
cassini/home/peter> ¡ls /media/sd-card/¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\newterm{Zugriffsrechte}
\end{itemize}
\begingroup
\small
\begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt]
phoenix/home/peter/bo/2013ws/ainf/20131031.0> ¡ls -l¿
...
-rw-r--r-- 1 peter peter 1539 Nov 29 2012 pruzzel-1.c
\end{lstlisting}
\endgroup
\begin{onlyenv}<2>
\begin{picture}(0,1)
\color{red}
\put(0.3,0){\vector(0,1){1.0}}
\put(0.3,0){\vector(2,1){2.1}}
\put(0,-0.1){\makebox(0,0)[tl]{Benutzer (u -- \emph{user\/}) darf lesen und schreiben}}
\end{picture}
\end{onlyenv}
\begin{onlyenv}<3>
\begin{picture}(0,1)
\color{red}
\put(0.77,0){\vector(0,1){1.0}}
\put(0.77,0){\vector(3,1){3.1}}
\put(0,-0.1){\makebox(0,0)[tl]{Gruppe (g -- \emph{group\/}) darf lesen}}
\end{picture}
\end{onlyenv}
\begin{onlyenv}<4>
\begin{picture}(0,1)
\color{red}
\put(1.37,0){\vector(0,1){1.0}}
\put(0,-0.1){\makebox(0,0)[tl]{alle anderen (o -- \emph{other\/}) dürfen lesen}}
\end{picture}
\end{onlyenv}
\medskip
\pause[5]
\begin{itemize}
\item
Zugriffsrechte ändern:\\
\lstinline[style=cmd]{chmod o-r pruzzel-1.c} -- Lesezugriff entziehen\\
\lstinline[style=cmd]{chmod g+w pruzzel-1.c} -- Schreibzugriff gewähren\\
\lstinline[style=cmd]{chmod 640 pruzzel-1.c} -- auf \lstinline[style=terminal]{-rw-r-----} setzen
\end{itemize}
\pause
\begin{picture}(0,0)
\color{red}
\put(6.275,0.5){\makebox(0,0)[tl]{%
\begin{math}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 6}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 4}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 0}
\end{math}}}
\end{picture}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\newterm{ausführbare\/} Dateien
\end{itemize}
\begingroup
\small
\begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt]
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡cat test¿
ls -l systech-20131008.*
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡chmod +x test¿
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡ls -l test¿
-rwxr-xr-x 1 peter peter 25 Okt 6 16:45 test
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡./test¿
-rw-r--r-- 1 peter peter 4120 Okt 6 16:44 systech-20131008.aux
...
\end{lstlisting}
\endgroup
\pause
\begin{itemize}
\item
ausführbare Textdateien: \newterm{Skripte}
\pause
\smallskip
hier: ausführbare Textdatei mit Shell-Befehlen\\
(ohne spezielle Kennung): Shell-Skript
\pause
\smallskip
Kennung: 1.\ Zeile enthält \lstinline[style=terminal]{#!} und den Interpreter,\\
z.\,B.\ \lstinline[style=terminal]{#!/bin/bash}\\
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\newterm{Symbolische Verknüpfungen -- symbolic links}
\smallskip
Verweis auf die eigentliche Datei\\
\textarrow\ Wenn man die Datei löscht, zeigt der Link ins Leere.
\smallskip
Verknüpfung anlegen: \lstinline[style=cmd]{ln -s datei link}\\
(Richtung: wie bei \lstinline[style=cmd]{cp})
\smallskip
Beispiel: \lstinline[style=cmd]{ln -s opengel-magic-double.c opengl-magic.c}
\medskip
\item
\newterm{Harte Verknüpfungen -- hard links}
\smallskip
Dieselben Daten auf dem Datenträger\\
sind unter mehreren Namen verfügbar.\\
\textarrow\ Wenn man einen löscht, sind die Daten noch da.
\smallskip
(aus Anwendersicht eher selten, daher hier nicht ausführlich)
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\lstinline[style=cmd]{find}: Dateien anhand ihrer Eigenschaften suchen
\end{itemize}
\small
\begin{lstlisting}[style=terminal,xleftmargin=-7pt]
$ ¡find . -name "*orbit-x*"¿
./20131031.0/orbit-x.c
./20131031.0/orbit-x1.c
./20131031.0/orbit-x
./20131107.0/orbit-x.c
./20131107.0/orbit-x1.c
./20131107.0/orbit-x
$ ¡find . -name "*orbit-x*" -perm /u+x¿
./20131031.0/orbit-x
./20131107.0/orbit-x
$ ¡find . -name "*orbit-x*" -perm /u+x -exec ls -l {} \;¿
-rwxr-xr-x 1 peter peter 15831 Okt 31 13:19 ./20131031.0/orbit-x
-rwxr-xr-x 1 peter peter 15831 Okt 31 13:19 ./20131107.0/orbit-x
\end{lstlisting}
\end{frame}
\subsectionnonumber{U.4\quad Ein- und Ausgabeströme}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Standard-Ausgabe in Datei umleiten
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Dies ist ein Test." > test.txt¿
$ ¡cat test.txt¿
Dies ist ein Test.
\end{lstlisting}
\pause
\smallskip
\begin{itemize}
\item
Standard-Ausgabe an Datei anhängen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Dies ist noch ein Test." >> test.txt¿
$ ¡cat test.txt¿
Dies ist ein Test.
Dies ist noch ein Test.
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Fehler-Ausgabe in Datei umleiten
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡cat gibtsnicht.txt > fehler.txt¿
cat: gibtsnicht.txt: No such file or directory
$ ¡cat fehler.txt¿
$ ¡cat gibtsnicht.txt 2> fehler.txt¿
$ ¡cat fehler.txt¿
cat: gibtsnicht.txt: No such file or directory
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Standard-Eingabe aus Datei lesen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡bc¿
bc 1.06.95
Copyright [...] 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
¡2 + 2¿
4
$ ¡echo "2 + 2" > test.bc¿
$ ¡bc < test.bc¿
4
\end{lstlisting}
\end{frame}
\subsectionnonumber{U.5\quad Pipes}
\begin{frame}[fragile]
\showsubsectionnonumber
Standard-Ausgabe von Programm A\\
wird zu Standard-Eingabe von Programm B
\smallskip
\begin{lstlisting}[style=terminal]
$ ¡echo "2 + 2" | bc¿
4
\end{lstlisting}
\smallskip
\textarrow\ sehr mächtiger "`Baukasten"'
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\lstinline[style=cmd]{sed}: \emph{stream editor}\\
Suchen und Ersetzen (und noch viel mehr)
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Schlimmer geht nimmer." | sed -e 's/nim/im/g'¿
Schlimmer geht immer.
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\lstinline[style=cmd]{grep}: Standard-Eingabe durchsuchen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡ls | grep slides¿
pgslides.sty
$ ¡ls *.pdf | grep -v fig¿
logo-hochschule-bochum-cvh-text.pdf
logo-hochschule-bochum.pdf
NPN_transistor_basic_operation.pdf
rtech-20131002.pdf
$ ¡ls -l $(ls *.pdf | grep -v fig)¿
-rw-r--r-- 1 peter peter 14488 Sep 2 21:02 logo-hochschule-bochum-cvh-text.pdf
-rw-r--r-- 1 peter peter 31581 Dez 26 2011 logo-hochschule-bochum.pdf
-rw-r--r-- 1 peter peter 8538 Okt 2 2012 NPN_transistor_basic_operation.pdf
-rw-r--r-- 1 peter peter 6753149 Okt 1 22:59 rtech-20131002.pdf
\end{lstlisting}
\end{frame}
\subsectionnonumber{U.6\quad Verzweigungen und Schleifen}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{lstlisting}[style=terminal]
$ ¡if grep Pipes test.txt; then echo "gefunden"; \
else echo "nicht gefunden"; fi¿
nicht gefunden
$ ¡for x in foo bar baz; do echo $x; done¿
foo
bar
baz
\end{lstlisting}
\end{frame}
\end{document}
File moved
Punkt-Test
../20210409/bs-20210409.pdf
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment