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
  • 2015ss
  • 2016ss
  • 2016ws
  • 2017ss
  • 2017ws
  • 2018ws
  • 2019ss
  • 2019ws
  • 2020ws
  • 2021ws
  • 2022ws
  • 2023ws
  • 2024ss
  • 2025ss
14 results

Target

Select target project
  • pgerwinski/es
  • MPeth/es
2 results
Select Git revision
  • 2015ss
  • 2016ss
  • 2016ws
  • 2017ss
  • 2017ws
  • 2018ws
  • 2019ss
  • 2019ws
  • 2020ws
  • 2021ws
  • 2022ws
  • MPeth-2022ws-patch-01682
12 results
Show changes
Showing
with 2279 additions and 0 deletions
cassini/home/peter/bo/2025ss/es/20250327> name="/*/../*/../*/../*/../*"
cassini/home/peter/bo/2025ss/es/20250327> echo Hallo $name ^C
cassini/home/peter/bo/2025ss/es/20250327>
cassini/home/peter/bo/2025ss/es/20250327> ls
a.out loesung-1.1-01.c loesung-1.2-04.c loesung-1.4-02.c
csa2.jpg loesung-1.1-02.c loesung-1.3-01.c loesung-1.4-03.c
es-20250327.aux loesung-1.1-03.c loesung-1.3-02.c loesung-1.4-04.c
es-20250327.log loesung-1.1-04.c loesung-1.3-03.c logo-hochschule-bochum-cvh-text-v3.pdf
es-20250327.nav loesung-1.1-05.c loesung-1.3-04.c logo-hochschule-bochum-de-narrow.pdf
es-20250327.out loesung-1.1-06.c loesung-1.3-05.c logo-hochschule-bochum-de-wide.pdf
es-20250327.pdf loesung-1.1-07.c loesung-1.3-06.c pgslides.sty
es-20250327.snm loesung-1.1-08.c loesung-1.3-07.c shell-variables-01.txt
es-20250327.tex loesung-1.1-09.c loesung-1.3-08.c unix-20250327.pdf
es-20250327.toc loesung-1.2-01.c loesung-1.3-09.c unix-20250327.tex
es-20250327.vrb loesung-1.2-02.c loesung-1.3-10.c wetterstation.jpg
floppys.jpg loesung-1.2-03.c loesung-1.4-01.c year-1752.txt
cassini/home/peter/bo/2025ss/es/20250327> less shell-variables-01.txt ^C
cassini/home/peter/bo/2025ss/es/20250327> xpdf logo-hochschule-bochum-
logo-hochschule-bochum-cvh-text-v3.pdf logo-hochschule-bochum-de-wide.pdf
logo-hochschule-bochum-de-narrow.pdf
cassini/home/peter/bo/2025ss/es/20250327> xpdf logo-hochschule-bochum-cvh-text-v3.pdf ^C
cassini/home/peter/bo/2025ss/es/20250327>
File added
% unix-20250327.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{27.\ 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}
File moved
cassini/home/peter/bo/2025ss/es/20250327> LANG=en cal 1752
cal: setlocale: No such file or directory
1752
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5 6 7
5 6 7 8 9 10 11 2 3 4 5 6 7 8 8 9 10 11 12 13 14
12 13 14 15 16 17 18 9 10 11 12 13 14 15 15 16 17 18 19 20 21
19 20 21 22 23 24 25 16 17 18 19 20 21 22 22 23 24 25 26 27 28
26 27 28 29 30 31 23 24 25 26 27 28 29 29 30 31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 2 1 2 3 4 5 6
5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
31
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 14 15 16
5 6 7 8 9 10 11 2 3 4 5 6 7 8 17 18 19 20 21 22 23
12 13 14 15 16 17 18 9 10 11 12 13 14 15 24 25 26 27 28 29 30
19 20 21 22 23 24 25 16 17 18 19 20 21 22
26 27 28 29 30 31 23 24 25 26 27 28 29
30 31
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1 2
8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9
15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16
22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23
29 30 31 26 27 28 29 30 24 25 26 27 28 29 30
31
cassini/home/peter/bo/2025ss/es/20250327>
../common/csa2.jpg
\ No newline at end of file
No preview for this file type
This diff is collapsed.
Übungsaufgabe 5.1, 03.04.2025, 12:42:18
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(f) 192.168.20.254 zur Basis 256 --> umwandeln nach Hexadezimal
binär = 1 Bit pro Ziffer
hexadezimal = 4 Bits pro Ziffer
zur Basis 256 = 8 Bits pro Ziffer ("Ziffer" = Dezimalzahl von 0 bis 255)
dezimal = Total krumm. Keine glatte Zahl von Bits pro Ziffern. Nicht verwenden.
254 = 0xfe
20 = 0x14
168 = 0xa8
192 = 0xc0
--> 192.168.20.254 zur Basis 256 = 0xc0a814fe
(j) 750_8 & 666_8 = 111 101 000 & 110 110 110 = 110 100 000 = 640_8
T-Shirt: Es gibt 11 Sorten von Menschen:
- solche, die das Binärsystem kennen,
- solche, die es nicht kennen und
- solche, die das Binärsystem kennen, diese Zahl aber trotzdem "elf" aussprechen.
(k) A380
B747
¹----
15AC7
(l) 0xAFFE >> 1 = 1010 1111 1111 1110 >> 1 = 0101 0111 1111 1111 ² = 0x57FF
²: Dies (0 kommt von links) gilt für vorzeichenlose Zahlen.
Bei vorzeichenbehafteten Zahlen kommt von links eine 1,
wenn ganz links bereits eine 1 stand, ansonsten eine 0.
Aufgabe 5.2, 03.04.2025, 13:18:47
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(a) A B C D A B C D
1 0 0 0 * * 0 0 0 1
1 0 0 0 * * 0 0 0 1
1 0 1 0 * * * * 0 1 0 1
1 0 1 0 * * * * 0 1 0 1
1 1 1 1 * * * * --> * * * * 1 1 1 1
0 0 1 0 * * 0 1 0 0
0 0 1 0 * * 0 1 0 0
0 0 1 0 * * 0 1 0 0
PORTA = 0x10;
PORTB = 0xfc;
PORTC = 0x10;
PORTD = 0x1f;
(c) Komma-Operator: a, b bedeutet: berechne a, vergiß es wieder, berechne b.
Mit Gleichheitszeichen: schreibe, lies es wieder, schreibe.
Problem, falls ein DDR-Register nur 4 Bit hat.
(d) 0001 1111 --> 1110 0000
$ cowsay "Mittagspause bis 14:29 Uhr"
____________________________
< Mittagspause bis 14:29 Uhr >
----------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
$ cowsay -f daemon "Nächste Woche bitte an den CVH kommen!"
________________________________________
< Nächste Woche bitte an den CVH kommen! >
----------------------------------------
\ , ,
\ /( )`
\ \ \___ / |
/- _ `-/ '
(/\/ \ \ /\
/ / | ` \
O O ) / |
`-^--'`< '
(_.) _ ) /
`.___/` /
`-----' /
<----. __ / __ \
<----|====O)))==) \) /====
<----' `--' `.__,' \
| |
\ /
______( (_ / \______
,' ,-----' | \
`--{__________) \/
cassini/home/peter/bo/2025ss/es/20250403> grep "[tT]est" *.txt
cassini/home/peter/bo/2025ss/es/20250403> grep http *
grep: es-20250403.pdf: Übereinstimmungen in Binärdatei
es-20250403.tex:% along with this document. If not, see <http://www.gnu.org/licenses/>.
es-20250403.tex:% document. If not, see <http://creativecommons.org/licenses/>.
es-20250403.tex: \greyurl{https://www.peter.gerwinski.de/}%
es-20250403.tex: \visible<2->{\redhref{https://www.peter.gerwinski.de/physik/}{physik/}}}}
es-20250403.tex: \url{https://www.cvh-server.de/online-werkzeuge/}
es-20250403.tex: Notfall-Schnellzugang: \url{https://www.cvh-server.de/virtuelle-raeume/}\\
es-20250403.tex: \textbf{Lehrmaterialien:} \url{https://gitlab.cvh-server.de/pgerwinski/es}
es-20250403.tex: \url{https://de.wikipedia.org/wiki/Eingebettetes_System}
es-20250403.tex: \textbf{Lehrmaterialien:} \url{https://gitlab.cvh-server.de/pgerwinski/es}
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241017/hp-uebung-20241017.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241121/hp-uebung-20241121.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241212/hp-uebung-20241212.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20250109/hp-uebung-20250109.pdf}%
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.vrb: \greyurl{https://www.peter.gerwinski.de/}%
es-20250403.vrb: \visible<2->{\redhref{https://www.peter.gerwinski.de/physik/}{physik/}}}}
grep: logo-hochschule-bochum-cvh-text-v3.pdf: Übereinstimmungen in Binärdatei
pgslides.sty:% along with this document. If not, see <http://www.gnu.org/licenses/>.
pgslides.sty:% document. If not, see <http://creativecommons.org/licenses/>.
pgslides.sty:\newcommand{\gitfile}[3]{\href{https://gitlab.cvh-server.de/pgerwinski/#1/raw/#2/#3}{\file{#3}}}
grep: test: Ist ein Verzeichnis
grep: unix-20250403.pdf: Übereinstimmungen in Binärdatei
unix-20250403.tex:% along with this document. If not, see <http://www.gnu.org/licenses/>.
unix-20250403.tex:% document. If not, see <http://creativecommons.org/licenses/>.
cassini/home/peter/bo/2025ss/es/20250403> grep -l http *
cassini/home/peter/bo/2025ss/es/20250403> grep http *
grep: es-20250403.pdf: Übereinstimmungen in Binärdatei
es-20250403.tex:% along with this document. If not, see <http://www.gnu.org/licenses/>.
es-20250403.tex:% document. If not, see <http://creativecommons.org/licenses/>.
es-20250403.tex: \greyurl{https://www.peter.gerwinski.de/}%
es-20250403.tex: \visible<2->{\redhref{https://www.peter.gerwinski.de/physik/}{physik/}}}}
es-20250403.tex: \url{https://www.cvh-server.de/online-werkzeuge/}
es-20250403.tex: Notfall-Schnellzugang: \url{https://www.cvh-server.de/virtuelle-raeume/}\\
es-20250403.tex: \textbf{Lehrmaterialien:} \url{https://gitlab.cvh-server.de/pgerwinski/es}
es-20250403.tex: \url{https://de.wikipedia.org/wiki/Eingebettetes_System}
es-20250403.tex: \textbf{Lehrmaterialien:} \url{https://gitlab.cvh-server.de/pgerwinski/es}
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241017/hp-uebung-20241017.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241121/hp-uebung-20241121.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241212/hp-uebung-20241212.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20250109/hp-uebung-20250109.pdf}%
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.vrb: \greyurl{https://www.peter.gerwinski.de/}%
es-20250403.vrb: \visible<2->{\redhref{https://www.peter.gerwinski.de/physik/}{physik/}}}}
grep: logo-hochschule-bochum-cvh-text-v3.pdf: Übereinstimmungen in Binärdatei
pgslides.sty:% along with this document. If not, see <http://www.gnu.org/licenses/>.
pgslides.sty:% document. If not, see <http://creativecommons.org/licenses/>.
pgslides.sty:\newcommand{\gitfile}[3]{\href{https://gitlab.cvh-server.de/pgerwinski/#1/raw/#2/#3}{\file{#3}}}
grep: test: Ist ein Verzeichnis
grep: unix-20250403.pdf: Übereinstimmungen in Binärdatei
unix-20250403.tex:% along with this document. If not, see <http://www.gnu.org/licenses/>.
unix-20250403.tex:% document. If not, see <http://creativecommons.org/licenses/>.
cassini/home/peter/bo/2025ss/es/20250403> grep "https\?://[A-Za-z0-9.-]*" *
grep: es-20250403.pdf: Übereinstimmungen in Binärdatei
es-20250403.tex:% along with this document. If not, see <http://www.gnu.org/licenses/>.
es-20250403.tex:% document. If not, see <http://creativecommons.org/licenses/>.
es-20250403.tex: \greyurl{https://www.peter.gerwinski.de/}%
es-20250403.tex: \visible<2->{\redhref{https://www.peter.gerwinski.de/physik/}{physik/}}}}
es-20250403.tex: \url{https://www.cvh-server.de/online-werkzeuge/}
es-20250403.tex: Notfall-Schnellzugang: \url{https://www.cvh-server.de/virtuelle-raeume/}\\
es-20250403.tex: \textbf{Lehrmaterialien:} \url{https://gitlab.cvh-server.de/pgerwinski/es}
es-20250403.tex: \url{https://de.wikipedia.org/wiki/Eingebettetes_System}
es-20250403.tex: \textbf{Lehrmaterialien:} \url{https://gitlab.cvh-server.de/pgerwinski/es}
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241017/hp-uebung-20241017.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241121/hp-uebung-20241121.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241212/hp-uebung-20241212.pdf}%
es-20250403.tex: \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20250109/hp-uebung-20250109.pdf}%
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.tex: \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
es-20250403.vrb: \greyurl{https://www.peter.gerwinski.de/}%
es-20250403.vrb: \visible<2->{\redhref{https://www.peter.gerwinski.de/physik/}{physik/}}}}
grep: logo-hochschule-bochum-cvh-text-v3.pdf: Übereinstimmungen in Binärdatei
pgslides.sty:% along with this document. If not, see <http://www.gnu.org/licenses/>.
pgslides.sty:% document. If not, see <http://creativecommons.org/licenses/>.
pgslides.sty:\newcommand{\gitfile}[3]{\href{https://gitlab.cvh-server.de/pgerwinski/#1/raw/#2/#3}{\file{#3}}}
grep: test: Ist ein Verzeichnis
grep: unix-20250403.pdf: Übereinstimmungen in Binärdatei
unix-20250403.tex:% along with this document. If not, see <http://www.gnu.org/licenses/>.
unix-20250403.tex:% document. If not, see <http://creativecommons.org/licenses/>.
cassini/home/peter/bo/2025ss/es/20250403> grep -o "https\?://[A-Za-z0-9.-]*" *
grep: es-20250403.pdf: Übereinstimmungen in Binärdatei
es-20250403.tex:http://www.gnu.org
es-20250403.tex:http://creativecommons.org
es-20250403.tex:https://www.peter.gerwinski.de
es-20250403.tex:https://www.peter.gerwinski.de
es-20250403.tex:https://www.cvh-server.de
es-20250403.tex:https://www.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://de.wikipedia.org
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.vrb:https://www.peter.gerwinski.de
es-20250403.vrb:https://www.peter.gerwinski.de
grep: logo-hochschule-bochum-cvh-text-v3.pdf: Übereinstimmungen in Binärdatei
pgslides.sty:http://www.gnu.org
pgslides.sty:http://creativecommons.org
pgslides.sty:https://gitlab.cvh-server.de
grep: test: Ist ein Verzeichnis
grep: unix-20250403.pdf: Übereinstimmungen in Binärdatei
unix-20250403.tex:http://www.gnu.org
unix-20250403.tex:http://creativecommons.org
cassini/home/peter/bo/2025ss/es/20250403> grep -o "https\?://[A-Za-z0-9.-]*" * es-20250403.tex
grep: es-20250403.pdf: Übereinstimmungen in Binärdatei
es-20250403.tex:http://www.gnu.org
es-20250403.tex:http://creativecommons.org
es-20250403.tex:https://www.peter.gerwinski.de
es-20250403.tex:https://www.peter.gerwinski.de
es-20250403.tex:https://www.cvh-server.de
es-20250403.tex:https://www.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://de.wikipedia.org
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.vrb:https://www.peter.gerwinski.de
es-20250403.vrb:https://www.peter.gerwinski.de
grep: logo-hochschule-bochum-cvh-text-v3.pdf: Übereinstimmungen in Binärdatei
pgslides.sty:http://www.gnu.org
pgslides.sty:http://creativecommons.org
pgslides.sty:https://gitlab.cvh-server.de
grep: test: Ist ein Verzeichnis
grep: unix-20250403.pdf: Übereinstimmungen in Binärdatei
unix-20250403.tex:http://www.gnu.org
unix-20250403.tex:http://creativecommons.org
es-20250403.tex:http://www.gnu.org
es-20250403.tex:http://creativecommons.org
es-20250403.tex:https://www.peter.gerwinski.de
es-20250403.tex:https://www.peter.gerwinski.de
es-20250403.tex:https://www.cvh-server.de
es-20250403.tex:https://www.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://de.wikipedia.org
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
es-20250403.tex:https://gitlab.cvh-server.de
cassini/home/peter/bo/2025ss/es/20250403> grep -o "https\?://[A-Za-z0-9.-]*" es-20250403.tex http://www.gnu.org
http://creativecommons.org
https://www.peter.gerwinski.de
https://www.peter.gerwinski.de
https://www.cvh-server.de
https://www.cvh-server.de
https://gitlab.cvh-server.de
https://de.wikipedia.org
https://gitlab.cvh-server.de
https://gitlab.cvh-server.de
https://gitlab.cvh-server.de
https://gitlab.cvh-server.de
https://gitlab.cvh-server.de
https://gitlab.cvh-server.de
https://gitlab.cvh-server.de
https://gitlab.cvh-server.de
cassini/home/peter/bo/2025ss/es/20250403> grep -o "https\?://[A-Za-z0-9.-]*" es-20250403.tex | sort | uniq
http://creativecommons.org
https://de.wikipedia.org
https://gitlab.cvh-server.de
https://www.cvh-server.de
https://www.peter.gerwinski.de
http://www.gnu.org
cassini/home/peter/bo/2025ss/es/20250403>
echo "Hello, world!"
../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
../common/logo-hochschule-bochum-de-wide.pdf
\ No newline at end of file
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-1.txt
-rw-r--r-- 1 peter peter 19 3. Apr 15:11 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> cat test-1.txt
Dies ist ein Test.
cassini/home/peter/bo/2025ss/es/20250403> chmod -r test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-1.txt
--w------- 1 peter peter 19 3. Apr 15:11 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> cat test-1.txt
cat: test-1.txt: Keine Berechtigung
cassini/home/peter/bo/2025ss/es/20250403> chmod +r test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> cat test-1.txt
Dies ist ein Test.
cassini/home/peter/bo/2025ss/es/20250403>
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-1.txt
-rw-r--r-- 1 peter peter 19 3. Apr 15:11 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> chmod u-w test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-1.txt
-r--r--r-- 1 peter peter 19 3. Apr 15:11 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> chmod u+w test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-1.txt
-rw-r--r-- 1 peter peter 19 3. Apr 15:11 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> id
uid=1501(peter) gid=1501(peter) Gruppen=1501(peter),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),50(staff),104(scanner),113(netdev),114(bluetooth),120(fuse),141(docker),146(air-quality-sensor),147(wireshark)
cassini/home/peter/bo/2025ss/es/20250403>
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-1.txt
-rw-r--r-- 1 peter peter 19 3. Apr 15:11 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> chmod 664 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-1.txt
-rw-rw-r-- 1 peter peter 19 3. Apr 15:11 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> chmod 640 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-1.txt
-rw-r----- 1 peter peter 19 3. Apr 15:11 test-1.txt
cassini/home/peter/bo/2025ss/es/20250403>
cassini/home/peter/bo/2025ss/es/20250403> cat > hello-01.sh
echo "Hello, world!"
cassini/home/peter/bo/2025ss/es/20250403> ls -l hello-01.sh
-rw-r--r-- 1 peter peter 21 3. Apr 15:45 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250403> hello-01.sh
bash: hello-01.sh: Kommando nicht gefunden.
cassini/home/peter/bo/2025ss/es/20250403> chmod +x hello-01.sh
cassini/home/peter/bo/2025ss/es/20250403> ls -l hello-01.sh
-rwxr-xr-x 1 peter peter 21 3. Apr 15:45 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250403> hello-01.sh
bash: hello-01.sh: Kommando nicht gefunden.
cassini/home/peter/bo/2025ss/es/20250403> ./hello-01.sh
Hello, world!
cassini/home/peter/bo/2025ss/es/20250403> 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/2025ss/es/20250403>