Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • pgerwinski/bs
  • cloepke/bs
  • khaleeliyeh/bs
3 results
Select Git revision
Show changes
Commits on Source (177)
Showing
with 1471 additions and 177 deletions
../common/Operating_system_placement-de.pdf
\ No newline at end of file
cassini/home/peter/bo/2025ss/bs/20250324> echo "Hello, world!"
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> printf "Hello, world!"
Hello, world!cassini/home/peter/bo/2025ss/bs/20250324> printf "Hello, world!\n"
bash: !\n: event not found
cassini/home/peter/bo/2025ss/bs/20250324> printf 'Hello, world!\n'
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324>
cassini/home/peter/bo/2025ss/bs/20250324> printf 'Hello, world!\n'
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> printf 'The answer is %d.\n' 42
The answer is 42.
cassini/home/peter/bo/2025ss/bs/20250324> printf 'The answer is %04d.\n' 137
The answer is 0137.
cassini/home/peter/bo/2025ss/bs/20250324>
cassini/home/peter/bo/2025ss/bs/20250324> hello="Hello, world!"
cassini/home/peter/bo/2025ss/bs/20250324> echo $hello
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> echo "$hello"
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> echo '$hello'
$hello
cassini/home/peter/bo/2025ss/bs/20250324>
cassini/home/peter/bo/2025ss/bs/20250324> !!
cat >> ausgabe-01.txt
^C
cassini/home/peter/bo/2025ss/bs/20250324> echo "Hello, world!"
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> !!
echo "Hello, world!"
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> !\
bash: !\: event not found
cassini/home/peter/bo/2025ss/bs/20250324> \!
bash: !: Kommando nicht gefunden.
cassini/home/peter/bo/2025ss/bs/20250324>
aus "man bash":
When the command history expansion facilities are being used (see HISTORY EXPANSION
below), the history expansion character, usually !, must be quoted to prevent his‐
tory expansion.
cassini/home/peter/bo/2025ss/bs/20250324> !2
bash: !2: event not found
cassini/home/peter/bo/2025ss/bs/20250324> !ls
ls -lrt
insgesamt 420
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 19360 24. Mär 14:14 unix-20250324.tex
-rw-r--r-- 1 peter peter 272 24. Mär 14:14 unix-20250324.vrb
-rw-r--r-- 1 peter peter 0 24. Mär 14:14 unix-20250324.snm
-rw-r--r-- 1 peter peter 6806 24. Mär 14:14 unix-20250324.aux
-rw-r--r-- 1 peter peter 589 24. Mär 14:14 unix-20250324.toc
-rw-r--r-- 1 peter peter 1200 24. Mär 14:14 unix-20250324.out
-rw-r--r-- 1 peter peter 4242 24. Mär 14:14 unix-20250324.nav
-rw-r--r-- 1 peter peter 58120 24. Mär 14:14 unix-20250324.log
-rw-r--r-- 1 peter peter 128817 24. Mär 14:15 unix-20250324.pdf
-rw-r--r-- 1 peter peter 5853 24. Mär 14:22 unix-baukasten-01.txt
-rw-r--r-- 1 peter peter 8626 24. Mär 14:24 unix-optionen-01.txt
-rw-r--r-- 1 peter peter 372 24. Mär 14:25 ausgabe-01.txt
-rw-r--r-- 1 peter peter 419 24. Mär 14:28 ausrufezeichen-01.txt
File added
#!/bin/bash
echo -n "Name: "
read name
echo Hallo $name
#!/bin/bash
echo -n "Name: "
read name
echo Hallo "$name"
../common/logo-hochschule-bochum-cvh-text-v3.pdf
\ No newline at end of file
../common/logo-hochschule-bochum-de-narrow.pdf
\ No newline at end of file
#!/bin/bash
echo "SCHLIMME DINGE"
/bin/ls "$@"
#!/bin/sh
# Copyright (C) 2024 Peter Gerwinski <peter.gerwinski@hs-bochum.de>
# License: CC0 ("Do with this whatever you want, but don't blame me.")
player="aplay -q"
signal_file_mic_off=$HOME/usr/share/mic/mic-off.wav
signal_file_mic_on=$HOME/usr/share/mic/mic-on.wav
icon_file_mic_off=$HOME/usr/share/mic/mic-off.png
icon_file_mic_on=$HOME/usr/share/mic/mic-on.png
icon_position="-375+20"
icon_viewer="xmic"
cmd="$1"
if [ "$cmd" = "toggle" ]; then
onoff=$(amixer sget Capture | tail -1 | grep -o "\[on\]\|\[off\]")
if [ "$onoff" = "[on]" ]; then
cmd="off"
else
cmd="on"
fi
fi
if [ "$cmd" = "off" ]; then
for source in $(pacmd list-sources | grep index | egrep -o "[0-9]+"); do
pactl set-source-mute $source 1
done
dbus-send --print-reply --session --type=method_call \
--dest=net.sourceforge.mumble.mumble / \
net.sourceforge.mumble.Mumble.setSelfMuted boolean:true \
> /dev/null 2>&1
killall "$icon_viewer" || true
"$icon_viewer" -display :1 -geometry "$icon_position" -f "$icon_file_mic_off" &
$player "$signal_file_mic_off"
elif [ "$cmd" = "on" ]; then
for source in $(pacmd list-sources | grep index | egrep -o "[0-9]+"); do
pactl set-source-mute $source 0
done
dbus-send --print-reply --session --type=method_call \
--dest=net.sourceforge.mumble.mumble / \
net.sourceforge.mumble.Mumble.setSelfMuted boolean:false \
> /dev/null 2>&1
killall "$icon_viewer" || true
"$icon_viewer" -display :1 -geometry "$icon_position" -f "$icon_file_mic_on" &
$player "$signal_file_mic_on"
else
echo "usage: $0 on / off / toggle"
fi
cassini/home/peter/bo/2025ss/bs/20250324> cat ls
cassini/home/peter/bo/2025ss/bs/20250324> ls -l ls
SCHLIMME DINGE
-rwxr-xr-x 1 peter peter 48 24. Mär 15:19 ls
cassini/home/peter/bo/2025ss/bs/20250324> cat ls
#!/bin/bash
echo "SCHLIMME DINGE"
/bin/ls "$@"
cassini/home/peter/bo/2025ss/bs/20250324> ls -l
SCHLIMME DINGE
insgesamt 472
-rw-r--r-- 1 peter peter 372 24. Mär 14:25 ausgabe-01.txt
-rw-r--r-- 1 peter peter 312 24. Mär 14:33 ausgabe-02.txt
-rw-r--r-- 1 peter peter 307 24. Mär 14:34 ausgabe-03.txt
-rw-r--r-- 1 peter peter 419 24. Mär 14:30 ausrufezeichen-01.txt
-rw-r--r-- 1 peter peter 1913 24. Mär 14:31 ausrufezeichen-02.txt
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
-rwxr-xr-x 1 peter peter 57 24. Mär 14:55 hello-01.sh
-rwxr-xr-x 1 peter peter 59 24. Mär 15:01 hello-02.sh
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
-rwxr-xr-x 1 peter peter 48 24. Mär 15:19 ls
-rwxr-xr-x 1 peter peter 1649 15. Mai 2024 mic
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 1108 24. Mär 14:41 shell-scripts-01.txt
-rw-r--r-- 1 peter peter 6806 24. Mär 15:07 unix-20250324.aux
-rw-r--r-- 1 peter peter 58120 24. Mär 15:07 unix-20250324.log
-rw-r--r-- 1 peter peter 4242 24. Mär 15:07 unix-20250324.nav
-rw-r--r-- 1 peter peter 1200 24. Mär 15:07 unix-20250324.out
-rw-r--r-- 1 peter peter 128990 24. Mär 15:07 unix-20250324.pdf
-rw-r--r-- 1 peter peter 0 24. Mär 15:07 unix-20250324.snm
-rw-r--r-- 1 peter peter 19505 24. Mär 15:07 unix-20250324.tex
-rw-r--r-- 1 peter peter 589 24. Mär 15:07 unix-20250324.toc
-rw-r--r-- 1 peter peter 272 24. Mär 15:07 unix-20250324.vrb
-rw-r--r-- 1 peter peter 5853 24. Mär 14:22 unix-baukasten-01.txt
-rw-r--r-- 1 peter peter 8626 24. Mär 14:24 unix-optionen-01.txt
-rw-r--r-- 1 peter peter 2024 24. Mär 14:35 variables-01.txt
-rw-r--r-- 1 peter peter 2831 24. Mär 14:52 wildcards-01.txt
-rw-r--r-- 1 peter peter 664 24. Mär 14:52 wildcards-02.txt
-rw-r--r-- 1 peter peter 5393 24. Mär 14:57 wildcards-03.txt
cassini/home/peter/bo/2025ss/bs/20250324>
../common/pgslides.sty
\ No newline at end of file
cassini/home/peter> dark matter
2nd-order gravity
cassini/home/peter> cat $(which dark)
#!/bin/sh
if [ "$1" = "matter" ]; then
echo "2nd-order gravity"
shift
fi
b_fore=$(b)
b ${1:-0}
feh $HOME/Pictures/black.png
sleep 0.1
b $b_fore
cassini/home/peter> cat $(which b)
#!/bin/bash
if [ -n "$1" ]; then
if [ "$1" = "-x" -o "$1" = "x" ]; then
shift
b=${1:-100}
brightness=$(echo "0.01 * $b * 65535" | bc -l)
gamma=$(echo "0.25 + 0.75 * (0.01 * $b)^2" | bc -l)
echo xbrightness $brightness $gamma
xbrightness $brightness $gamma
elif [ "$1" = "-y" -o "$1" = "y" ]; then
shift
b=${1:-100}
brightness=$(echo "0.01 * $b * 65535" | bc -l)
echo xbrightness $brightness
xbrightness $brightness $gamma
else
echo $1 > /sys/class/backlight/intel_backlight/brightness
fi
else
cat /sys/class/backlight/intel_backlight/brightness
fi
cassini/home/peter> echo 0 > /sys/class/backlight/intel_backlight/brightness
cassini/home/peter> echo 384 > /sys/class/backlight/intel_backlight/brightness
cassini/home/peter> feh $HOME/Pictures/black.png
cassini/home/peter>
File added
% unix-20250324.pdf - Lecture Slides on Unix Fundamentals
% Copyright (C) 2013, 2015-2018, 2021-2024, 2025 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{24.\ März 2024}
\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, Mach-Kernel, BSD-User-Space)
\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 einlesen: \lstinline[style=cmd]{read FOO}
\item
Variable abrufen: \lstinline[style=cmd]{echo $FOO}
\item
Aus Sicherheitsgründen: \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
Anwendungsbeispiel: Snapshot-Backup
\smallskip
Bei Verzeichnissen: \newterm{hard links\/} halten die Verzeichnisstruktur zusammen
\begin{itemize}
\item eigentlicher Name
\item \lstinline{.} von sich selbst aus
\item \lstinline{..} von Unterverzeichnissen aus
\end{itemize}
\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}
cassini/home/peter/bo/2025ss/bs/20250324> tar xzf /home/peter/bo/2012ws/systech/material/linux-0.01.tar.gz
cassini/home/peter/bo/2025ss/bs/20250324> cat $(find linux -type f) | wc -l
10239
cassini/home/peter/bo/2025ss/bs/20250324> rm -r linux/
cassini/home/peter/bo/2025ss/bs/20250324> ls
bs-20250324.pdf pgslides.sty unix-20250324.snm
bs-20250324.tex unix-20250324.aux unix-20250324.tex
fotos unix-20250324.log unix-20250324.toc
logo-hochschule-bochum-cvh-text-v3.pdf unix-20250324.nav unix-20250324.vrb
logo-hochschule-bochum-de-narrow.pdf unix-20250324.out
Operating_system_placement-de.pdf unix-20250324.pdf
cassini/home/peter/bo/2025ss/bs/20250324> which ls
/usr/bin/ls
cassini/home/peter/bo/2025ss/bs/20250324> ls -l /usr/bin/ls
-rwxr-xr-x 1 root root 151344 20. Sep 2022 /usr/bin/ls
cassini/home/peter/bo/2025ss/bs/20250324> ls -l
insgesamt 392
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 6806 24. Mär 14:14 unix-20250324.aux
-rw-r--r-- 1 peter peter 58120 24. Mär 14:14 unix-20250324.log
-rw-r--r-- 1 peter peter 4242 24. Mär 14:14 unix-20250324.nav
-rw-r--r-- 1 peter peter 1200 24. Mär 14:14 unix-20250324.out
-rw-r--r-- 1 peter peter 128817 24. Mär 14:15 unix-20250324.pdf
-rw-r--r-- 1 peter peter 0 24. Mär 14:14 unix-20250324.snm
-rw-r--r-- 1 peter peter 19360 24. Mär 14:14 unix-20250324.tex
-rw-r--r-- 1 peter peter 589 24. Mär 14:14 unix-20250324.toc
-rw-r--r-- 1 peter peter 272 24. Mär 14:14 unix-20250324.vrb
cassini/home/peter/bo/2025ss/bs/20250324> ls -a
. unix-20250324.aux
.. unix-20250324.log
... unix-20250324.nav
bs-20250324.pdf unix-20250324.out
bs-20250324.tex unix-20250324.pdf
fotos unix-20250324.snm
logo-hochschule-bochum-cvh-text-v3.pdf unix-20250324.tex
logo-hochschule-bochum-de-narrow.pdf unix-20250324.toc
Operating_system_placement-de.pdf unix-20250324.vrb
pgslides.sty
cassini/home/peter/bo/2025ss/bs/20250324> ls -l -a
insgesamt 400
drwxr-xr-x 2 peter peter 4096 24. Mär 14:18 .
drwxr-xr-x 4 peter peter 4096 24. Mär 08:01 ..
-rw-r--r-- 1 peter peter 0 24. Mär 14:17 ...
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 6806 24. Mär 14:14 unix-20250324.aux
-rw-r--r-- 1 peter peter 58120 24. Mär 14:14 unix-20250324.log
-rw-r--r-- 1 peter peter 4242 24. Mär 14:14 unix-20250324.nav
-rw-r--r-- 1 peter peter 1200 24. Mär 14:14 unix-20250324.out
-rw-r--r-- 1 peter peter 128817 24. Mär 14:15 unix-20250324.pdf
-rw-r--r-- 1 peter peter 0 24. Mär 14:14 unix-20250324.snm
-rw-r--r-- 1 peter peter 19360 24. Mär 14:14 unix-20250324.tex
-rw-r--r-- 1 peter peter 589 24. Mär 14:14 unix-20250324.toc
-rw-r--r-- 1 peter peter 272 24. Mär 14:14 unix-20250324.vrb
cassini/home/peter/bo/2025ss/bs/20250324> ls -la
insgesamt 400
drwxr-xr-x 2 peter peter 4096 24. Mär 14:18 .
drwxr-xr-x 4 peter peter 4096 24. Mär 08:01 ..
-rw-r--r-- 1 peter peter 0 24. Mär 14:17 ...
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 6806 24. Mär 14:14 unix-20250324.aux
-rw-r--r-- 1 peter peter 58120 24. Mär 14:14 unix-20250324.log
-rw-r--r-- 1 peter peter 4242 24. Mär 14:14 unix-20250324.nav
-rw-r--r-- 1 peter peter 1200 24. Mär 14:14 unix-20250324.out
-rw-r--r-- 1 peter peter 128817 24. Mär 14:15 unix-20250324.pdf
-rw-r--r-- 1 peter peter 0 24. Mär 14:14 unix-20250324.snm
-rw-r--r-- 1 peter peter 19360 24. Mär 14:14 unix-20250324.tex
-rw-r--r-- 1 peter peter 589 24. Mär 14:14 unix-20250324.toc
-rw-r--r-- 1 peter peter 272 24. Mär 14:14 unix-20250324.vrb
cassini/home/peter/bo/2025ss/bs/20250324>