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
Loading items

Target

Select target project
  • Peter Gerwinski / es
  • Martin Peth / es
2 results
Select Git revision
  • MPeth-2022ws-patch-01682
  • 2022ws
  • 2021ws
  • 2020ws
  • 2019ws
  • 2019ss
  • 2018ws
  • 2017ws
  • 2017ss
  • 2016ws
  • 2016ss
  • 2015ss
12 results
Show changes
293 files
+ 17452
210
Compare changes
  • Side-by-side
  • Inline

Files

+0 −1
Original line number Diff line number Diff line
../common/logo-hochschule-bochum.pdf
 No newline at end of file
+1117 −0

File added.

Preview size limit exceeded, changes collapsed.

+25 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  if (year % 4 == 0)
    {
      if (year % 400 == 0)
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
      else if (year % 100 == 0)
        {
          printf ("%d ist kein Schaltjahr.\n", year);
          return 0;
        }
      else
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
    }
  return 0;
}
+27 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  if (year % 4 == 0)
    {
      if (year % 400 == 0)
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
      else if (year % 100 == 0)
        {
          printf ("%d ist kein Schaltjahr.\n", year);
          return 0;
        }
      else
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
    }
  else
    printf ("%d ist kein Schaltjahr.\n", year);
  return 0;
}
+29 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  printf ("Jahr: ");
  scanf ("%d", year);
  if (year % 4 == 0)
    {
      if (year % 400 == 0)
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
      else if (year % 100 == 0)
        {
          printf ("%d ist kein Schaltjahr.\n", year);
          return 0;
        }
      else
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
    }
  else
    printf ("%d ist kein Schaltjahr.\n", year);
  return 0;
}
+29 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  printf ("Jahr: ");
  scanf ("%d", &year);
  if (year % 4 == 0)
    {
      if (year % 400 == 0)
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
      else if (year % 100 == 0)
        {
          printf ("%d ist kein Schaltjahr.\n", year);
          return 0;
        }
      else
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
    }
  else
    printf ("%d ist kein Schaltjahr.\n", year);
  return 0;
}
+31 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  printf ("Jahr: ");
  scanf ("%d", &year);
  if (year <= 1752)
    printf ("Zulässige Jahreszahlen: größer als 1752.\n");
  else if (year % 4 == 0)
    {
      if (year % 400 == 0)
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
      else if (year % 100 == 0)
        {
          printf ("%d ist kein Schaltjahr.\n", year);
          return 0;
        }
      else
        {
          printf ("%d ist ein Schaltjahr.\n", year);
          return 0;
        }
    }
  else
    printf ("%d ist kein Schaltjahr.\n", year);
  return 0;
}
+22 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  printf ("Jahr: ");
  scanf ("%d", &year);
  if (year <= 1752)
    printf ("Zulässige Jahreszahlen: größer als 1752.\n");
  else if (year % 4 == 0)
    {
      if (year % 400 == 0)
        printf ("%d ist ein Schaltjahr.\n", year);
      else if (year % 100 == 0)
        printf ("%d ist kein Schaltjahr.\n", year);
      else
        printf ("%d ist ein Schaltjahr.\n", year);
    }
  else
    printf ("%d ist kein Schaltjahr.\n", year);
  return 0;
}
+21 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  printf ("Jahr: ");
  scanf ("%d", &year);
  if (year <= 1752)
    printf ("Zulässige Jahreszahlen: größer als 1752.\n");
  else if (year % 4 == 0)
    if (year % 100 == 0)
      if (year % 400 == 0)
        printf ("%d ist ein Schaltjahr.\n", year);
      else
        printf ("%d ist kein Schaltjahr.\n", year);
    else
      printf ("%d ist ein Schaltjahr.\n", year);
  else
    printf ("%d ist kein Schaltjahr.\n", year);
  return 0;
}
+26 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  printf ("Jahr: ");
  scanf ("%d", &year);
  int is_leap_year = 0;
  if (year <= 1752)
    printf ("Zulässige Jahreszahlen: größer als 1752.\n");
  else if (year % 4 == 0)
    if (year % 100 == 0)
      if (year % 400 == 0)
        is_leap_year = 1;
      else
        is_leap_year = 0;
    else
      is_leap_year = 1;
  else
    is_leap_year = 0;
  if (is_leap_year)
    printf ("%d ist ein Schaltjahr.\n", year);
  else
    printf ("%d ist kein Schaltjahr.\n", year);
  return 0;
}
+15 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int year = 42;
  printf ("Jahr: ");
  scanf ("%d", &year);
  if (year <= 1752)
    printf ("Zulässige Jahreszahlen: größer als 1752.\n");
  else if (year % 4 == 0 && (year % 400 == 0 || year % 100))
    printf ("%d ist ein Schaltjahr.\n", year);
  else
    printf ("%d ist kein Schaltjahr.\n", year);
  return 0;
}
+13 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 1; i <= 10; i++)
    {
      for (int j = 1; j <= 10; j++)
	{
	  printf ("%2d * %2d = %3d \n", i, j, i * j);
        }
    }
  return 0;
}
+13 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 1; i <= 10; i++)
    {
      for (int j = 1; j <= 10; j++)
	{
	  printf ("%2d * %2d = %3d \n", j, i, j * i);
        }
    }
  return 0;
}
+13 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 1; i <= 10; i++)
    {
      for (int j = 1; j <= 10; j++)
	{
	  printf ("%2d * %2d =%3d \n", j, i, j * i);
        }
    }
  return 0;
}
+13 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int j = 1; j <= 10; j++)
    {
      for (int i = 1; i <= 10; i++)
	{
	  printf ("%2d * %2d =%3d \n", i, j, i * j);
        }
    }
  return 0;
}
+18 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>

int main ()
{
  uint64_t fibonacci_zahlen[50];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[i] = fibonacci_zahlen[i - 2] + fibonacci_zahlen[i - 1];
    }
  for (int i = 0; i < 50; i++)
    {
      printf ("%d. Zahl = %ld\n", i + 1, fibonacci_zahlen[i]);
    }
  return 0;
}
+18 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>

int main ()
{
  uint32_t fibonacci_zahlen[50];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[i] = fibonacci_zahlen[i - 2] + fibonacci_zahlen[i - 1];
    }
  for (int i = 0; i < 50; i++)
    {
      printf ("%d. Zahl = %d\n", i + 1, fibonacci_zahlen[i]);
    }
  return 0;
}
+18 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>

int main ()
{
  uint64_t fibonacci_zahlen[50];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[i] = fibonacci_zahlen[i - 2] + fibonacci_zahlen[i - 1];
    }
  for (int i = 0; i < 50; i++)
    {
      printf ("%d. Zahl = %d\n", i + 1, fibonacci_zahlen[i]);
    }
  return 0;
}
+18 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>

int main ()
{
  uint64_t fibonacci_zahlen[50];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[i] = fibonacci_zahlen[i - 2] + fibonacci_zahlen[i - 1];
    }
  for (int i = 0; i < 50; i++)
    {
      printf ("%d. Zahl = %u\n", i + 1, fibonacci_zahlen[i]);
    }
  return 0;
}
+18 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>

int main ()
{
  uint64_t fibonacci_zahlen[50];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[i] = fibonacci_zahlen[i - 2] + fibonacci_zahlen[i - 1];
    }
  for (int i = 0; i < 50; i++)
    {
      printf ("%d. Zahl = %lu\n", i + 1, fibonacci_zahlen[i]);
    }
  return 0;
}
+18 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>

int main ()
{
  uint64_t fibonacci_zahlen[50];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[i] = fibonacci_zahlen[i - 2] + fibonacci_zahlen[i - 1];
    }
  for (int i = 0; i < 50; i++)
    {
      printf ("%d. Zahl = %" PRIu64 "\n", i + 1, fibonacci_zahlen[i]);
    }
  return 0;
}
+19 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main ()
{
  uint64_t fibonacci_zahlen[50];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[i] = fibonacci_zahlen[i - 2] + fibonacci_zahlen[i - 1];
    }
  for (int i = 0; i < 50; i++)
    {
      printf ("%d. Zahl = %" PRIu64 "\n", i + 1, fibonacci_zahlen[i]);
    }
  return 0;
}
+16 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main ()
{
  uint64_t fibonacci_zahlen[50];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[i] = fibonacci_zahlen[i - 2] + fibonacci_zahlen[i - 1];
      printf ("%d. Zahl = %" PRIu64 "\n", i + 1, fibonacci_zahlen[i]);
    }
  return 0;
}
+18 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main ()
{
  uint64_t fibonacci_zahlen[3];
  fibonacci_zahlen[0] = 0;
  fibonacci_zahlen[1] = 1;
  for (int i = 2; i < 50; i++)
    {
      fibonacci_zahlen[2] = fibonacci_zahlen[0] + fibonacci_zahlen[1];
      printf ("%d. Zahl = %" PRIu64 "\n", i + 1, fibonacci_zahlen[2]);
      fibonacci_zahlen[0] = fibonacci_zahlen[1];
      fibonacci_zahlen[1] = fibonacci_zahlen[2];
    }
  return 0;
}
+20 −0
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

uint64_t fibonacci_zahl (int n)
{
  if (n <= 1)
    return 0;
  else if (n <= 2)
    return 1;
  else
    return fibonacci_zahl (n - 2) + fibonacci_zahl (n - 1);
}

int main ()
{
  for (int i = 2; i < 50; i++)
    printf ("%d. Zahl = %" PRIu64 "\n", i + 1, fibonacci_zahl (i));
  return 0;
}
+8 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 10; i = 0; i - 1)
    printf ("%d\n", i);
  return 0;
}
+8 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 10; !(i < 1); i--)
    printf ("%d\n", i);
  return 0;
}
+8 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 10; i >= 1; i--)
    printf ("%d\n", i);
  return 0;
}
+8 −0
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 10; i >= 0; i--)
    printf ("%d\n", i);
  return 0;
}

20250327/ls

0 → 100755
+4 −0
Original line number Diff line number Diff line
#!/bin/bash

echo "SCHLIMME DINGE"
/bin/ls "$@"

20250327/path-01.txt

0 → 100644
+23 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250327> PATH=".:$PATH"
cassini/home/peter/bo/2025ss/es/20250327> a.out
10
9
8
7
6
5
4
3
2
1
0
cassini/home/peter/bo/2025ss/es/20250327> cp -pi ../../bs/20250324/ls .
cassini/home/peter/bo/2025ss/es/20250327> ls -l ls
SCHLIMME DINGE
-rwxr-xr-x 1 peter peter 48 24. Mär 15:19 ls
cassini/home/peter/bo/2025ss/es/20250327> cat ls
#!/bin/bash

echo "SCHLIMME DINGE"
/bin/ls "$@"
cassini/home/peter/bo/2025ss/es/20250327>
+13 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250327> name="Peter"
cassini/home/peter/bo/2025ss/es/20250327> echo "Hallo $name"
Hallo Peter
cassini/home/peter/bo/2025ss/es/20250327> name="/*"
cassini/home/peter/bo/2025ss/es/20250327> echo "Hallo $name"
Hallo /*
cassini/home/peter/bo/2025ss/es/20250327> name=Peter
cassini/home/peter/bo/2025ss/es/20250327> echo Hallo $name
Hallo Peter
cassini/home/peter/bo/2025ss/es/20250327> name="/*"
cassini/home/peter/bo/2025ss/es/20250327> echo Hallo $name
Hallo /bin /boot /dev /etc /home /initrd.img /initrd.img.old /lib /lib32 /lib64 /libx32 /lost+found /media /mnt /opt /proc /root /run /sbin /srv /swapfile /sys /tmp /usr /var /vmlinuz /vmlinuz.old
cassini/home/peter/bo/2025ss/es/20250327>
+3 −0
Original line number Diff line number Diff line
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>
+19 −0
Original line number Diff line number Diff line
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>
+773 −0
Original line number Diff line number Diff line
% 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}

20250327/year-1752.txt

0 → 100644
+39 −0
Original line number Diff line number Diff line
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>

20250403/csa2.jpg

0 → 120000
+1 −0
Original line number Diff line number Diff line
../common/csa2.jpg
 No newline at end of file
+1117 −0

File added.

Preview size limit exceeded, changes collapsed.

+92 −0
Original line number Diff line number Diff line
Ü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)))==) \) /====
<----'    `--' `.__,' \
             |        |
              \       /
        ______( (_  / \______
      ,'  ,-----'   |        \
      `--{__________)        \/

20250403/grep-01.txt

0 → 100644
+1 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250403> grep "[tT]est" *.txt

20250403/grep-02.txt

0 → 100644
+181 −0
Original line number Diff line number Diff line
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>

20250403/hello-01.sh

0 → 100755
+1 −0
Original line number Diff line number Diff line
echo "Hello, world!"
+13 −0
Original line number Diff line number Diff line
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>
+11 −0
Original line number Diff line number Diff line
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>
+9 −0
Original line number Diff line number Diff line
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>
+16 −0
Original line number Diff line number Diff line
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>

20250403/pgslides.sty

0 → 120000
+1 −0
Original line number Diff line number Diff line
../common/pgslides.sty
 No newline at end of file

20250403/test-1.txt

0 → 100644
+1 −0
Original line number Diff line number Diff line
Dies ist ein Test.

20250403/test-2.txt

0 → 100644
+1 −0
Original line number Diff line number Diff line
Dies ist noch ein Test.
+1 −0
Original line number Diff line number Diff line
Dies ist noch ein Test.
+1 −0
Original line number Diff line number Diff line
../20250327/unix-20250327.pdf
 No newline at end of file
+1 −0
Original line number Diff line number Diff line
../20250327/unix-20250327.tex
 No newline at end of file
+20 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250403> cat > test-2.txt
Dies ist noch ein Test.
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-*.txt
-rw-r--r-- 1 peter peter 19  3. Apr 15:11 test-1.txt
-rw-r--r-- 1 peter peter 24  3. Apr 15:14 test-2.txt
cassini/home/peter/bo/2025ss/es/20250403> cat test-1.txt
Dies ist ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cat test-2.txt
Dies ist noch ein Test.
cassini/home/peter/bo/2025ss/es/20250403> mkdir test
cassini/home/peter/bo/2025ss/es/20250403> cd test/
cassini/home/peter/bo/2025ss/es/20250403/test> mv ../test-*.txt
cassini/home/peter/bo/2025ss/es/20250403/test> ls -l
insgesamt 0
cassini/home/peter/bo/2025ss/es/20250403/test> cd ..
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-*.txt
-rw-r--r-- 1 peter peter 19  3. Apr 15:11 test-2.txt
cassini/home/peter/bo/2025ss/es/20250403> cat test-2.txt
Dies ist ein Test.
cassini/home/peter/bo/2025ss/es/20250403>
+19 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-*.txt
-rw-r--r-- 1 peter peter 19  3. Apr 15:11 test-1.txt
-rw-r--r-- 1 peter peter 24  3. Apr 15:17 test-2.txt
cassini/home/peter/bo/2025ss/es/20250403> cat test-1.txt
Dies ist ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cat test-2.txt
Dies ist noch ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cd test/
cassini/home/peter/bo/2025ss/es/20250403/test> echo mv ../test-*.txt
mv ../test-1.txt ../test-2.txt
cassini/home/peter/bo/2025ss/es/20250403/test> mv ../test-*.txt .
cassini/home/peter/bo/2025ss/es/20250403/test> ls -l
insgesamt 8
-rw-r--r-- 1 peter peter 19  3. Apr 15:11 test-1.txt
-rw-r--r-- 1 peter peter 24  3. Apr 15:17 test-2.txt
cassini/home/peter/bo/2025ss/es/20250403/test> cd ..
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-*.txt
ls: Zugriff auf 'test-*.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
cassini/home/peter/bo/2025ss/es/20250403>
+20 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250403> mv test/test-*.txt .
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-*.txt
-rw-r--r-- 1 peter peter 19  3. Apr 15:11 test-1.txt
-rw-r--r-- 1 peter peter 24  3. Apr 15:17 test-2.txt
cassini/home/peter/bo/2025ss/es/20250403> cat > test-3.txt
Noch ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cat test-1.txt
Dies ist ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cat test-2.txt
Dies ist noch ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cat test-3.txt
Noch ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cd test/
cassini/home/peter/bo/2025ss/es/20250403/test> mv ../test-*.txt
mv: Ziel '../test-3.txt': Ist kein Verzeichnis
cassini/home/peter/bo/2025ss/es/20250403/test> ls -l
insgesamt 0
cassini/home/peter/bo/2025ss/es/20250403/test> echo mv ../test-*.txt
mv ../test-1.txt ../test-2.txt ../test-3.txt
cassini/home/peter/bo/2025ss/es/20250403/test>
+12 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250403> ls -l test-*.txt
-rw-r--r-- 1 peter peter 19  3. Apr 15:11 test-1.txt
-rw-r--r-- 1 peter peter 24  3. Apr 15:17 test-2.txt
cassini/home/peter/bo/2025ss/es/20250403> cat test-1.txt
Dies ist ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cat test-2.txt
Dies ist noch ein Test.
cassini/home/peter/bo/2025ss/es/20250403> cd -
/home/peter/bo/2025ss/es/20250403/test
cassini/home/peter/bo/2025ss/es/20250403/test> mv -i ../test-*.txt
mv: '../test-2.txt' überschreiben? n
cassini/home/peter/bo/2025ss/es/20250403/test>
+20 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250403/test> echo mv ../test-*.txt
mv ../test-1.txt ../test-2.txt
cassini/home/peter/bo/2025ss/es/20250403/test> cp -i ../test-*.txt
cp: '../test-2.txt' überschreiben? n
cassini/home/peter/bo/2025ss/es/20250403/test> rm -i ../test-*.txt
rm: reguläre Datei '../test-1.txt' entfernen? n
rm: reguläre Datei '../test-2.txt' entfernen? n
cassini/home/peter/bo/2025ss/es/20250403/test> cp -pi ../test-*.txt
cp: '../test-2.txt' überschreiben? n
cassini/home/peter/bo/2025ss/es/20250403/test> cp -pi ../test-*.txt .
cassini/home/peter/bo/2025ss/es/20250403/test> ls -l test-*.txt
-rw-r--r-- 1 peter peter 19  3. Apr 15:11 test-1.txt
-rw-r--r-- 1 peter peter 24  3. Apr 15:17 test-2.txt
cassini/home/peter/bo/2025ss/es/20250403/test> cp -i ../test-*.txt .
cp: './test-1.txt' überschreiben? y
cp: './test-2.txt' überschreiben? y
cassini/home/peter/bo/2025ss/es/20250403/test> ls -l test-*.txt
-rw-r--r-- 1 peter peter 19  3. Apr 15:29 test-1.txt
-rw-r--r-- 1 peter peter 24  3. Apr 15:29 test-2.txt
cassini/home/peter/bo/2025ss/es/20250403/test>
+90 −0
Original line number Diff line number Diff line
% es-20250407.pdf - Labor Notes on Embedded Systems
% Copyright (C) 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/>.

% README: TCP/IP in der Praxis

\documentclass[a4paper]{article}

\usepackage{pgscript}

\pagestyle{empty}
\newcommand{\sep}{~$\cdot$~}
\newcommand{\mylicense}{CC BY-SA (Version 4.0) oder GNU GPL (Version 3 oder höher)}

\begin{document}

  \hsbologos
  \begin{center}
    \Large\textbf{Praxisaufgabe: Aufbau eines grundlegenden TCP/IP-Netzwerks}
    \par\medskip
    \normalsize Eingebettete Systeme\sep
    Sommersemester 2025\sep
    Prof.~Dr.~Peter Gerwinski
  \end{center}

  Aufgabe: Vernetzen Sie Ihre Rechner mittels TCP/IP.
  \begin{itemize}
    \item
      Stellen Sie eine geeignete Hardware-Infrastruktur her.\\
      (Kabelgebundenes Netz, WLAN, Avian Carriers, \dots)
    \item
      Wählen Sie geeignete IP-Adressen und prüfen Sie mittels \lstinline[style=cmd]{ping}
      die gegenseitige Erreichbarkeit.
    \item
      Stellen Sie mittels Netcat (\lstinline[style=cmd]{nc})
      TCP-Verbindungen her (Ende-zu-Ende-Chat).
    \item
      Bieten Sie (z.\,B.\ mittels \lstinline[style=cmd]{nc -e})
      in diesem Netz Dienste an und testen Sie diese.
    \item
      Untersuchen Sie den Netzwerkverkehr mittels tcpdump und/oder Wireshark.
    \item
      Testen Sie, wie sich externe Dienste (Webseiten, E-Mail)
      mittels \lstinline[style=cmd]{nc} nutzen lassen.
  \end{itemize}

  \bigskip

  \strut\hfill\emph{Viel Erfolg!}

  \vfill

  \begingroup

    \small

    \setlength{\leftskip}{3cm}

    Stand: 9.\ April 2025

%    Soweit nicht anders angegeben:\\
    Copyright \copyright\ 2025\quad Peter Gerwinski\\
    Lizenz: \mylicense

    Sie können diese Praxisaufgabe einschließlich \LaTeX-Quelltext
%%    und Beispielprogramme\\
    herunterladen unter:\\
    \url{https://gitlab.cvh-server.de/pgerwinski/es}

  \endgroup

\end{document}

20250410/pgscript.sty

0 → 120000
+1 −0
Original line number Diff line number Diff line
../common/pgscript.sty
 No newline at end of file
Original line number Diff line number Diff line
% es-20220928.pdf - Lecture Slides on Embedded Systems
% Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Peter Gerwinski
% es-20250417.pdf - Lecture Slides on Embedded Systems
% Copyright (C) 2013-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
@@ -20,7 +20,7 @@
% Attribution-ShareAlike 3.0 Unported License along with this
% document.  If not, see <http://creativecommons.org/licenses/>.

% README: Einführung: eingebettete Systeme, Unix-Kommandozeile
% README: Wiederholung: hardwarenahe Programmierung, Unix

\documentclass[10pt,t]{beamer}

@@ -36,14 +36,15 @@

\title{Eingebettete Systeme}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{28.\ September 2022}
\date{17.\ April 2025}

\newcommand{\greyurl}[1]{\href{#1}{\color{gray}\nolinkurl{#1}}}
\newcommand{\redhref}[2]{\href{#1}{\color{red}\nolinkurl{#2}}}
\newcommand{\ItwoC}{I\raisebox{0.5ex}{\footnotesize 2}C}

\begin{document}

\iffalse
\iftrue

\maketitleframe

@@ -57,16 +58,19 @@
%      {\normalsize Software-Entwicklung für}\\[0.5ex]
    \put(12.3,8.0){\makebox(0,0)[tr]{\LARGE\bf\color{gray}\shortstack[r]{%
      Eingebettete Systeme\\[2ex]
      \includegraphics[width=4.3cm]{logo-hochschule-bochum.pdf}}}}
%      \makebox(0,0)[br]{\color{yellow}\rule{5cm}{3cm}}%
%      \makebox(0,0)[br]{\includegraphics[trim=0.98cm 13.60cm 0.98cm 13.59cm,width=5cm]{logo-hochschule-bochum-de-wide.pdf}}\\[2cm]
      \includegraphics[trim=0.98cm 13.60cm 0.98cm 13.59cm,width=6.4cm]{logo-hochschule-bochum-de-wide.pdf}\\[2ex]
      \large Sommersemester 2025}}}
    %\put(9.5,6.677) % zum Vergleich
    \put(0.0,8.0){\makebox(0,0)[tl]{\includegraphics[width=2.87cm]{logo-hochschule-bochum-cvh-text-v2.pdf}}}
    \put(0.0,8.0){\makebox(0,0)[tl]{\includegraphics[width=3.5cm]{logo-hochschule-bochum-cvh-text-v3.pdf}}}
  \end{picture}%
  \begin{picture}(-0.3,-0.5)
%    \put(0,0.5){\includegraphics[width=5.6cm]{floppys.jpg}}
    \put(0,-0.3){\includegraphics[width=5.6cm]{wetterstation.jpg}}
  \end{picture}%
  \begin{picture}(0,0)
    \put(1.0,4.1){\includegraphics[width=5.6cm]{floppys.jpg}}
    \put(0.4,4.1){\includegraphics[width=5.4cm]{floppys.jpg}}
%    \put(1.7,3.1){\includegraphics[width=6.3cm]{hexapode.png}}
  \end{picture}%
  \begin{picture}(0,0)
@@ -74,9 +78,11 @@
  \end{picture}
  \begin{picture}(0,0)
    \put(0.2,-1.1){\makebox(0,0)[bl]{\bf\color{gray}\shortstack[l]{\insertauthor\\[\smallskipamount]\insertdate}}}
    \put(12.4,-1.1){\makebox(0,0)[r]{\greyurl{https://www.peter.gerwinski.de/}}}
    \put(4.35,-0.9){\only<2->{\makebox(0,0)[br]{\tikz{\draw[-latex,red](0,0)--(-1.55,0.3);}}}}
    \put(4.0,-0.8){\only<2->{\makebox(0,0)[tl]{\footnotesize\color{red}\shortstack{%
    \put(12.4,-1.1){\makebox(0,0)[r]{%
      \greyurl{https://www.peter.gerwinski.de/}%
      \visible<2->{\redhref{https://www.peter.gerwinski.de/physik/}{physik/}}}}
    \put(3.55,-0.95){\only<2->{\makebox(0,0)[br]{\tikz{\draw[-latex,red](0,0)--(-0.75,0.25);}}}}
    \put(3.2,-0.8){\only<2->{\makebox(0,0)[tl]{\footnotesize\color{red}\shortstack{%
      \emph{rerum naturalium}\\der Naturwissenschaften}}}}
  \end{picture}

@@ -84,143 +90,321 @@

\fi

\sectionnonumber{Vorab: Online-Werkzeuge}
\nosectionnonumber{\inserttitle}

\begin{frame}

  \showsectionnonumber
  \shownosectionnonumber

  \begin{itemize}
    \item[\textbf{1}] \textbf{\color{medgreen}Einführung}
      \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/es}}}
%      \begin{itemize}
%        \color{medgreen}
%        \item[1.1] Was sind eingebettete Systeme?
%%        \item[1.2] Vertiefung Systemtechnik
%        \item[1.2] In dieser Lehrveranstaltung
%      \end{itemize}
    \item[\textbf{2}] \textbf{\color{orange}Hardwarenahe Programmierung}
    \item[\textbf{3}] \textbf{\color{orange}Einführung in Unix}
%      \begin{itemize}
%        \item[2.1] \color{red}Grundkonzepte
%        \item[2.2] Die Kommandozeile: Grundlagen
%        \item[2.3] Dateisysteme
%        \item[2.4] Ein- und Ausgabeströme
%        \item[2.5] Pipes
%        \item[2.6] Verzweigungen und Schleifen
%%        \item[\dots]
%      \end{itemize}
%    \color{gray}
    \item[\textbf{4}] \textbf{\color{orange}TCP/IP in der Praxis}
    \vspace*{-\smallskipamount}
    \item[\textbf{\dots}]
  \end{itemize}

%  \vspace*{-1cm plus 1filll}
%
%  \underconstruction

\end{frame}

\section{Hardwarenahe Programmierung}

\begin{frame}

  \showsection

  \begin{itemize}
    \item[\textbf{:\,)}]
      \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241017/hp-uebung-20241017.pdf}%
           {Übungsaufgaben 1, 17.\,10.\,2024:\\Schaltjahr ermitteln, Multiplikationstabelle,\\Fibonacci-Zahlen, fehlerhaftes Programm}
    \item
      Diese Veranstaltung findet \textbf{in Präsenz} statt.\\
      Wir versuchen aber, auch eine Online-Teilnahme zu ermöglichen.
    \medskip
      \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241121/hp-uebung-20241121.pdf}%
           {Übungsaufgaben 5, 21.\,11.\,2024:\\Zahlensysteme, Mikrocontroller, LED-Blinkmuster}
    \item
      \textbf{Mumble}: Seminarraum 2\\
      Fragen: Mikrofon einschalten oder über den Chat\\
      Umfragen: über den Chat -- \textbf{auch während der Präsenz-Veranstaltung}
    \smallskip
      \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20241212/hp-uebung-20241212.pdf}%
           {Übungsaufgabe 8.1, 12.\,12.\,2024:\\Trickprogrammierung}
    \item
      \textbf{VNC}: Kanal 6, Passwort: \lstinline[style=cmd]{testcvh}\\
      Eigenen Bildschirm freigeben: VNC-Software oder Web-Interface \emph{yesVNC}\\
      Eigenes Kamerabild übertragen: Web-Interface \emph{CVH-Camera}
      \href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2024ws/20250109/hp-uebung-20250109.pdf}%
           {Übungsaufgabe 10.1, 9.\,1.\,2025:\\Personen-Datenbank}
  \end{itemize}

\end{frame}

\iffalse

\subsection{Arrays und Zeiger für Fortgeschrittene}

\begin{frame}[fragile]
  \showsubsection

  \begin{minipage}[t]{6cm}
    Array:
    \smallskip
    \item
      Allgemeine Informationen:
      \url{https://www.cvh-server.de/online-werkzeuge/}
    \begin{lstlisting}[gobble=6]
      char a[] = "Test";
    \end{lstlisting}
  \end{minipage}\hfill
  \begin{minipage}[t]{6cm}
    Zeiger:
    \smallskip
    \begin{lstlisting}[gobble=6]
      char *p = "Test";
    \end{lstlisting}
  \end{minipage}

  \bigskip

  \begin{itemize}
    \item
      Notfall-Schnellzugang: \url{https://www.cvh-server.de/virtuelle-raeume/}\\
      Seminarraum 2, VNC-Passwort: \lstinline[style=cmd]{testcvh}
    \smallskip
      In beiden Fällen wird ein Array von ganzen Zahlen\\
      (5 \lstinline{char}-Variable mit den Werten 84, 101, 115, 116 und 0)\\
      im Speicher angelegt.
    \medskip
    \item
      Bei Problemen: bitte notieren:\\
      Art des Problems, genaue Uhrzeit, eigener Internet-Zugang
    \bigskip
      Links heißt das Array \lstinline{a};
      rechts ist es "`anonym"'.
    \item
      Rechts wird zusätzlich ein Zeiger \lstinline{p} im Speicher angelegt,\\
      der auf das (anonyme) Array zeigt.
    \medskip
    \item
      GitLab: \url{https://gitlab.cvh-server.de/pgerwinski/es}
      \lstinline{&a} ist dasselbe wie \lstinline{a},
      nämlich die Adresse des Arrays.
    \item
      \lstinline{&p} ist die Adresse des Zeigers.
    \item
      \lstinline{p} ist der Wert des Zeigers,\\
      momentan also die Adresse des (anonymen) Arrays.
  \end{itemize}

\end{frame}

\sectionnonumber{Was sind eingebettete Systeme?}

\begin{frame}
\begin{frame}[fragile]
  \showsubsection

  \showsectionnonumber
  \begin{minipage}[t]{6cm}
    Array:
    \smallskip
    \begin{lstlisting}[gobble=6]
      char a[] = "Test";
    \end{lstlisting}
  \end{minipage}\hfill
  \begin{minipage}[t]{6cm}
    Zeiger:
    \smallskip
    \begin{lstlisting}[gobble=6]
      char *p = "Test";
    \end{lstlisting}
  \end{minipage}

  \emph{Der Ausdruck \textbf{\newterm{eingebettetes System\/}} (\dots\,) bezeichnet
        einen elektronischen Rechner oder auch Computer,
        der in einen technischen Kontext eingebunden (eingebettet) ist.}
  \vspace*{-0.5cm}
  \begin{flushright}
    \url{https://de.wikipedia.org/wiki/Eingebettetes_System}
  \end{flushright}
  \bigskip

  \begin{itemize}
    \pause
    \item
      \emph{keine\/} Aussage über die Größe
      In beiden Fällen wird ein Array von ganzen Zahlen\\
      (5 \lstinline{char}-Variable mit den Werten 84, 101, 115, 116 und 0)\\
      im Speicher angelegt.
    \medskip
    \item
      in der Praxis: so klein wie möglich\only<4->{, z.\,B.:}\\[\smallskipamount]
      \only<3>{\vspace*{-3.3cm}\hspace*{0.7cm}\includegraphics[height=8cm]{csa2.jpg}\hspace*{-1cm}\vspace*{-8cm}}
    \pause
    \pause
      \begin{itemize}
      Links heißt das Array \lstinline{a};
      rechts ist es "`anonym"'.
    \item
          mehrere Rechnerschränke
      Rechts wird zusätzlich ein Zeiger \lstinline{p} im Speicher angelegt,\\
      der auf das (anonyme) Array zeigt.
    \medskip
    \item
          Industrie-PC
      \lstinline{&a} ist {\color{red}fast} dasselbe wie \lstinline{a},\\
      nämlich die Adresse des Arrays {\color{red}bzw.\ das Array selbst,\\
      das zuweisungskompatibel zu einem Zeiger auf Elemente des Arrays ist.\\
      \lstinline{&} bewirkt hier eine (nicht explizite!) Typumwandlung.}
    \item
          Einplatinencomputer
      \lstinline{&p} ist die Adresse des Zeigers.
    \item
          Mikro-Controller
      \lstinline{p} ist der Wert des Zeigers,\\
      momentan also die Adresse des (anonymen) Arrays.
  \end{itemize}
    \pause
    \item
      Bedienung über spezielle Ein-/Ausgabegeräte (z.\,B.\ PKW, Telefon)
    \pause
    \item
      Wartung über speziellen Adminstrator-Zugang

  \vspace*{-1cm}

\end{frame}

\begin{frame}[fragile]
  \showsubsection

  \begin{minipage}[t]{7cm}
    Array:
    \smallskip
    \begin{lstlisting}[gobble=6]
      char *a[] = { "Dies", "ist", "ein", "Test" };
    \end{lstlisting}
  \end{minipage}\hfill
  \begin{minipage}[t]{5cm}
    Zeiger:
    \smallskip
    \begin{lstlisting}[gobble=6]
      char **p = a;
    \end{lstlisting}
  \end{minipage}

  \bigskip

  \begin{itemize}
    \item
          Bus-Schnittstelle (RS-232, CAN-BUS)
      Array von Zeigern auf \lstinline{char}-Variable
    \item
          Netzwerk (TCP/IP, Ethernet oder WLAN)
      \end{itemize}
    \pause
      Zeiger auf das Array = Zeiger auf Zeiger auf \lstinline{char}-Variable
    \item
      Programmierung oft außerhalb des Systems\\
      (Cross-Entwicklungswerkzeuge)
      Schleife durch äußeres Array mit \lstinline{p++} möglich
  \end{itemize}
  \vspace*{-1cm}

\end{frame}

\sectionnonumber{In dieser Lehrveranstaltung}
\begin{frame}[fragile]
  \showsubsection

\begin{frame}
  \begin{minipage}[t]{7cm}
    Array:
    \smallskip
    \begin{lstlisting}[gobble=6]
      char a[][5] = { "Dies", "ist", "ein", "Test" };
    \end{lstlisting}
  \end{minipage}\hfill
  \begin{minipage}[t]{5cm}
    Zeiger:
    \smallskip
    \begin{lstlisting}[gobble=6]
      char *p = a[0];
    \end{lstlisting}
  \end{minipage}

  \bigskip

  \showsectionnonumber
  \vspace*{-\medskipamount}
  \begin{itemize}
    \item
      Einführung in Unix
      zweidimensionales Array von \lstinline{char}-Variablen
    \item
      Zeiger auf Array-Komponente\\
      = Zeiger auf eindimensionales Array\\
      = Zeiger auf \lstinline{char}-Variable
    \item
      TCP/IP und Bus-Systeme in der Praxis
      Schleife durch äußeres Array mit Zeiger-Arithmetik nicht möglich
  \end{itemize}

  \begin{picture}(0,0)
    \color{red}
    \thicklines
    \put(8.6,0.63){\line(1,0){0.85}}
    \put(9.05,0.4){\makebox(0,0)[t]{$\overbrace{\mbox{nur mit Trick:
                   \lstinline{p += 5}}}$}}
  \end{picture}

\end{frame}

\begin{frame}[fragile]
  \showsubsection

  \begin{lstlisting}
    typedef char string5[5];
    string5 a[] = { "Dies", "ist", "ein", "Test" };
    string5 *p = a;
  \end{lstlisting}

  \bigskip

  \begin{itemize}
    \item
      C-Programmierung für Fortgeschrittene
      Array von Array von \lstinline{char}-Variablen\\
      = zweidimensionales Array von \lstinline{char}-Variablen
    \item
      Echtzeit-Systeme in Theorie und Praxis
    \medskip
      Zeiger auf zweidimensionales Array
    \item
      Prüfungsleistung: Projektaufgabe\\
      Eingebettetes System eigener Wahl zum Laufen bringen
      Schleife durch äußeres Array mit \lstinline{p++} möglich
    \bigskip
    \arrowitem
      {\color{red}Projektaufgabe überlegen}
      Fazit:\\
      Ein Hoch auf \lstinline{typedef}!
    \arrowitem
      Trotzdem: {\color{red}Vorsicht!}\\
      Ein \lstinline{p++} auf einen Zeiger vom Typ \lstinline{string5 *p}\\
      ergibt anscheinend undefiniertes Verhalten!
  \end{itemize}

\iffalse
\end{frame}

\begin{frame}[fragile]
  \showsubsection

  \begin{lstlisting}
    typedef char string5[5];
    string5 *p = { "Dies", "ist", "ein", "Test" };
  \end{lstlisting}

  \bigskip

  {\color{gray}
  Weitere Ideen:
  \begin{itemize}
    \item
      {\color{black}im Sommer: Exkursion: Lufthansa Aviation Training, Frankfurt am Main}
    \item[\color{gray}$\bullet$]\color{gray}
      falls möglich: Exkursion: TFC -- Simulatoren und Technik GmbH, Velbert-Nierenhof
    \item[\color{gray}$\bullet$]\color{gray}
      Einführung in die GUI-Programmierung
    \item[\color{gray}$\bullet$]\color{gray}
      Web-Interfaces
  \end{itemize}}
      anonymes Array von Array von \lstinline{char}-Variablen\\
      = anonymes zweidimensionales Array von \lstinline{char}-Variablen
    \item
      Zeiger auf zweidimensionales Array
    \item
      Schleife durch äußeres Array mit \lstinline{p++} möglich
  \end{itemize}

  \vspace*{-1cm plus 1filll}
%  \pause

  \underconstruction
  \begin{picture}(0,0)(-2,-0.4)
    \color{red}
    \thicklines
    \put(0,0){\line(2,1){4}}
    \put(0,2){\line(2,-1){4}}
  \end{picture}

\fi
  Das Konstrukt \lstinline|{ "Dies", "ist", "ein", "Test" }|\\
  steht für ein Array von 4 Zeigern auf \lstinline{char}-Variable.

  \smallskip

  \lstinline{string5 *p} hingegen erwartet einen Zeiger auf ein Array
  von 5 \lstinline{char}-Variablen.

  \smallskip

  Es bekommt die Adresse von \lstinline{"Dies"} zugewiesen.

  \smallskip

  Durch das Erhöhen von \lstinline{p} (um 5) zeigt es danach
  \emph{zufällig\/} auf das \lstinline{"ist"}.

  Bei nochmaligem Erhöhen zeigt es auf das \lstinline{"in"} von \lstinline{"ein"}.

  \smallskip

  (Auch ohne Optimierung werden die Strings \lstinline{"ist"}, \lstinline{"ein"}
  und \lstinline{"Test"}\\
  u.\,U.\ wegoptimiert.)

\end{frame}

@@ -239,18 +423,25 @@
%        \item[1.2] Vertiefung Systemtechnik
        \item[1.2] In dieser Lehrveranstaltung
      \end{itemize}
    \item[\textbf{2}] \textbf{Einführung in Unix}
    \item[\textbf{2}] \textbf{C für Fortgeschrittene}
      \begin{itemize}
        \item[2.1] \color{red}Grundkonzepte
        \item[2.2] Die Kommandozeile: Grundlagen
        \item[2.3] Dateisysteme
        \item[2.4] Ein- und Ausgabeströme
        \item[2.5] Pipes
        \item[2.6] Verzweigungen und Schleifen
%        \item[\dots]
        \color{medgreen}
        \item[2.1] Hardwarenahe Programmierung
        \item[2.2] Arrays und Zeiger für Fortgeschrittene
        \item[\dots]
      \end{itemize}
    \color{gray}
    \item[\textbf{3}] \textbf{TCP/IP in der Praxis}
    \item[\textbf{3}] \textbf{Einführung in Unix}
%      \begin{itemize}
%        \item[2.1] \color{red}Grundkonzepte
%        \item[2.2] Die Kommandozeile: Grundlagen
%        \item[2.3] Dateisysteme
%        \item[2.4] Ein- und Ausgabeströme
%        \item[2.5] Pipes
%        \item[2.6] Verzweigungen und Schleifen
%%        \item[\dots]
%      \end{itemize}
%    \color{gray}
    \item[\textbf{4}] \textbf{TCP/IP in der Praxis}
    \vspace*{-\smallskipamount}
    \item[\textbf{\dots}]
  \end{itemize}
@@ -261,7 +452,6 @@

\end{frame}

\setcounter{section}{1}
\section{Einführung in Unix}

\subsection{Grundkonzepte}
@@ -730,20 +920,25 @@
%        \item[1.2] Vertiefung Systemtechnik
        \item[1.2] In dieser Lehrveranstaltung
      \end{itemize}
    \item[\textbf{2}] \textbf{Einführung in Unix}
    \item[\textbf{2}] \textbf{C für Fortgeschrittene}
      \begin{itemize}
        \color{medgreen}
        \item[2.1] Hardwarenahe Programmierung
        \item[2.2] Arrays und Zeiger für Fortgeschrittene
        \item[\dots]
      \end{itemize}
    \item[\textbf{3}] \textbf{Einführung in Unix}
      \begin{itemize}
        \item[2.1] Grundkonzepte
        \item[2.2] Die Kommandozeile: Grundlagen
        \color{orange}
        \item[2.3] Dateisysteme
        \color{red}
        \item[2.4] Ein- und Ausgabeströme
        \item[2.5] Pipes
        \item[2.6] Verzweigungen und Schleifen
%        \item[\dots]
      \end{itemize}
    \color{gray}
    \item[\textbf{3}] \textbf{TCP/IP in der Praxis}
%    \color{gray}
    \item[\textbf{4}] \textbf{TCP/IP in der Praxis}
    \vspace*{-\smallskipamount}
    \item[\textbf{\dots}]
  \end{itemize}
@@ -754,4 +949,6 @@

\end{frame}

\fi

\end{document}

20250417/fehler.txt

0 → 100644
+3 −0
Original line number Diff line number Diff line
Test 2
cat: gibtsnicht.txt: Datei oder Verzeichnis nicht gefunden
Test 2

20250417/find-01.txt

0 → 100644
+14 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> find . -name "*.pdf"
./es-20250417.pdf
./logo-hochschule-bochum-de-narrow.pdf
./unix-20250417.pdf
./logo-hochschule-bochum-cvh-text-v3.pdf
./logo-hochschule-bochum-de-wide.pdf
cassini/home/peter/bo/2025ss/es/20250417> find . -name *.pdf
find: paths must precede expression: `logo-hochschule-bochum-cvh-text-v3.pdf'
find: possible unquoted pattern after predicate `-name'?
cassini/home/peter/bo/2025ss/es/20250417> echo find . -name "*.pdf"
find . -name *.pdf
cassini/home/peter/bo/2025ss/es/20250417> echo find . -name *.pdf
find . -name es-20250417.pdf logo-hochschule-bochum-cvh-text-v3.pdf logo-hochschule-bochum-de-narrow.pdf logo-hochschule-bochum-de-wide.pdf unix-20250417.pdf
cassini/home/peter/bo/2025ss/es/20250417>

20250417/find-02.txt

0 → 100644
+64 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> echo find . -perm /u+x
find . -perm /u+x
cassini/home/peter/bo/2025ss/es/20250417> find . -perm /u+x
.
./test
./logo-hochschule-bochum-de-narrow.pdf
./unix-20250417.pdf
./hello-01.sh
./hello-03.sh
./hello-01.bc
./logo-hochschule-bochum-cvh-text-v3.pdf
./hello-01.py
./pgslides.sty
./test-02.txt
./hello-02.sh
./unix-20250417.tex
./test-1
./logo-hochschule-bochum-de-wide.pdf
./hello-02.bc
cassini/home/peter/bo/2025ss/es/20250417> ls -l
insgesamt 256
-rw-r--r-- 1 peter peter  1655 17. Apr 08:42 es-20250417.aux
-rw-r--r-- 1 peter peter 53790 17. Apr 08:42 es-20250417.log
-rw-r--r-- 1 peter peter   669 17. Apr 08:42 es-20250417.nav
-rw-r--r-- 1 peter peter   181 17. Apr 08:42 es-20250417.out
-rw-r--r-- 1 peter peter 48381 17. Apr 08:42 es-20250417.pdf
-rw-r--r-- 1 peter peter     0 17. Apr 08:42 es-20250417.snm
-rw-r--r-- 1 peter peter 25846 17. Apr 08:42 es-20250417.tex
-rw-r--r-- 1 peter peter    92 17. Apr 08:42 es-20250417.toc
-rw-r--r-- 1 peter peter   767 17. Apr 15:18 find-01.txt
-rw-r--r-- 1 peter peter  1454 17. Apr 12:45 grep-01.txt
-rw-r--r-- 1 peter peter   681 17. Apr 14:59 hardlinks-01.txt
-rw-r--r-- 1 peter peter   513 17. Apr 15:01 hardlinks-02.txt
-rwxr-xr-x 1 peter peter    26 17. Apr 12:56 hello-01.bc
-rwxr-xr-x 1 peter peter    44 17. Apr 13:00 hello-01.py
-rwxr-xr-x 1 peter peter    61 17. Apr 12:26 hello-01.sh
-rwxr-xr-x 1 peter peter    32 17. Apr 12:58 hello-02.bc
-rwxr-xr-x 1 peter peter    63 17. Apr 12:28 hello-02.sh
-rwxr-xr-x 1 peter peter    63 17. Apr 12:29 hello-03.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
lrwxrwxrwx 1 peter peter    44 27. Mär 07:34 logo-hochschule-bochum-de-wide.pdf -> ../common/logo-hochschule-bochum-de-wide.pdf
-rw-r--r-- 1 peter peter  2293 17. Apr 12:54 permissions-01.txt
-rw-r--r-- 1 peter peter   433 17. Apr 12:55 permissions-02.txt
lrwxrwxrwx 1 peter peter    22  5. Okt 2016  pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter    85  3. Apr 15:57 SCRATCH
-rw-r--r-- 1 peter peter   663 17. Apr 12:57 scripts-01.txt
-rw-r--r-- 1 peter peter   941 17. Apr 12:59 scripts-02.txt
-rw-r--r-- 1 peter peter   957 17. Apr 13:00 scripts-03.txt
-rw-r--r-- 1 peter peter   505 17. Apr 13:01 scripts-04.txt
-rw-r--r-- 1 peter peter  1139 17. Apr 12:27 shell-variables-01.txt
-rw-r--r-- 1 peter peter  1220 17. Apr 14:50 symlinks-01.txt
-rw-r--r-- 1 peter peter   515 17. Apr 14:54 symlinks-02.txt
-rw-r--r-- 1 peter peter  5129 17. Apr 12:02 tcpip-01.txt
-rw-r--r-- 1 peter peter   729 17. Apr 12:19 tcpip-02.txt
drwxr-xr-x 2 peter peter  4096 17. Apr 12:42 test
-rw-r--r-- 2 peter peter     7 17. Apr 14:58 test-01.txt
lrwxrwxrwx 1 peter peter    11 17. Apr 14:48 test-02.txt -> test-01.txt
-rw-r--r-- 2 peter peter     7 17. Apr 14:58 test-03.txt
lrwxrwxrwx 1 peter peter     4 17. Apr 15:09 test-1 -> test
-rw------- 1 peter peter  2020 17. Apr 12:38 test.mail
lrwxrwxrwx 1 peter peter    29  3. Apr 09:31 unix-20250417.pdf -> ../20250327/unix-20250327.pdf
lrwxrwxrwx 1 peter peter    29  3. Apr 09:31 unix-20250417.tex -> ../20250327/unix-20250327.tex
cassini/home/peter/bo/2025ss/es/20250417>

20250417/find-03.txt

0 → 100644
+16 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> find . -type f -perm /u+x
./hello-01.sh
./hello-03.sh
./hello-01.bc
./hello-01.py
./hello-02.sh
./hello-02.bc
cassini/home/peter/bo/2025ss/es/20250417> find . -type l
./logo-hochschule-bochum-de-narrow.pdf
./unix-20250417.pdf
./logo-hochschule-bochum-cvh-text-v3.pdf
./pgslides.sty
./test-02.txt
./unix-20250417.tex
./test-1
./logo-hochschule-bochum-de-wide.pdf

20250417/find-04.txt

0 → 100644
+16 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> find . -type f -perm /u+x
./hello-01.sh
./hello-03.sh
./hello-01.bc
./hello-01.py
./hello-02.sh
./hello-02.bc
cassini/home/peter/bo/2025ss/es/20250417> grep Test $(find . -type f -perm /u+x)
cassini/home/peter/bo/2025ss/es/20250417> grep echo $(find . -type f -perm /u+x)
./hello-01.sh:echo -n "Ihr Name? "
./hello-01.sh:echo Hallo $name
./hello-03.sh:echo -n "Ihr Name? "
./hello-03.sh:echo Hallo '$name'
./hello-02.sh:echo -n "Ihr Name? "
./hello-02.sh:echo Hallo "$name"
cassini/home/peter/bo/2025ss/es/20250417>

20250417/grep-01.txt

0 → 100644
+28 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> grep Test *.txt
cassini/home/peter/bo/2025ss/es/20250417> grep Test *.tex
es-20250417.tex:      char a[] = "Test";
es-20250417.tex:      char *p = "Test";
es-20250417.tex:      char a[] = "Test";
es-20250417.tex:      char *p = "Test";
es-20250417.tex:      char *a[] = { "Dies", "ist", "ein", "Test" };
es-20250417.tex:      char a[][5] = { "Dies", "ist", "ein", "Test" };
es-20250417.tex:    string5 a[] = { "Dies", "ist", "ein", "Test" };
es-20250417.tex:    string5 *p = { "Dies", "ist", "ein", "Test" };
es-20250417.tex:  Das Konstrukt \lstinline|{ "Dies", "ist", "ein", "Test" }|\\
es-20250417.tex:  und \lstinline{"Test"}\\
es-20250417.tex:    Dies ist ein Test.
unix-20250417.tex:    Dies ist ein Test.
unix-20250417.tex:    $ ¡echo "Dies ist ein Test." > test.txt¿
unix-20250417.tex:    Dies ist ein Test.
unix-20250417.tex:    $ ¡echo "Dies ist noch ein Test." >> test.txt¿
unix-20250417.tex:    Dies ist ein Test.
unix-20250417.tex:    Dies ist noch ein Test.
cassini/home/peter/bo/2025ss/es/20250417> grep "^Dies" *.tex
cassini/home/peter/bo/2025ss/es/20250417> grep "^ *Dies" *.tex
es-20250417.tex:    Dies ist ein Test.
unix-20250417.tex:    Dies ist ein Test.
unix-20250417.tex:      Dieselben Daten auf dem Datenträger\\
unix-20250417.tex:    Dies ist ein Test.
unix-20250417.tex:    Dies ist ein Test.
unix-20250417.tex:    Dies ist noch ein Test.
cassini/home/peter/bo/2025ss/es/20250417>
+14 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> ln test-01.txt test-03.txt
cassini/home/peter/bo/2025ss/es/20250417> cat test-03.txt
Test 1
cassini/home/peter/bo/2025ss/es/20250417> ls -l test*.txt
-rw-r--r-- 2 peter peter  7 17. Apr 14:52 test-01.txt
lrwxrwxrwx 1 peter peter 11 17. Apr 14:48 test-02.txt -> test-01.txt
-rw-r--r-- 2 peter peter  7 17. Apr 14:52 test-03.txt
cassini/home/peter/bo/2025ss/es/20250417> echo "Test 3" > test-03.txt
cassini/home/peter/bo/2025ss/es/20250417> cat test-01.txt
Test 3
cassini/home/peter/bo/2025ss/es/20250417> echo "Test 2" > test-02.txt
cassini/home/peter/bo/2025ss/es/20250417> cat test-01.txt
Test 2
cassini/home/peter/bo/2025ss/es/20250417>
+10 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> ls -l test*.txt
-rw-r--r-- 2 peter peter  7 17. Apr 14:58 test-01.txt
lrwxrwxrwx 1 peter peter 11 17. Apr 14:48 test-02.txt -> test-01.txt
-rw-r--r-- 2 peter peter  7 17. Apr 14:58 test-03.txt
cassini/home/peter/bo/2025ss/es/20250417> rm test-01.txt
cassini/home/peter/bo/2025ss/es/20250417> cat test-02.txt
cat: test-02.txt: Datei oder Verzeichnis nicht gefunden
cassini/home/peter/bo/2025ss/es/20250417> cat test-03.txt
Test 2
cassini/home/peter/bo/2025ss/es/20250417>

20250417/hello-01.bc

0 → 100755
+4 −0
Original line number Diff line number Diff line
#!/usr/bin/bc

2 + 2
quit

20250417/hello-01.py

0 → 100755
+3 −0
Original line number Diff line number Diff line
#!/usr/bin/python3

print ("Hello, world!")

20250417/hello-01.sh

0 → 100755
+5 −0
Original line number Diff line number Diff line
#!/bin/bash

echo -n "Ihr Name? "
read name
echo Hallo $name

20250417/hello-02.bc

0 → 100755
+3 −0
Original line number Diff line number Diff line
#!/usr/bin/bc

Ätschibätschi!

20250417/hello-02.sh

0 → 100755
+5 −0
Original line number Diff line number Diff line
#!/bin/bash

echo -n "Ihr Name? "
read name
echo Hallo "$name"

20250417/hello-03.sh

0 → 100755
+5 −0
Original line number Diff line number Diff line
#!/bin/bash

echo -n "Ihr Name? "
read name
echo Hallo '$name'

20250417/if-01.txt

0 → 100644
+28 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> grep bla *.txt
cassini/home/peter/bo/2025ss/es/20250417> echo $?
1
cassini/home/peter/bo/2025ss/es/20250417> grep echo *.txt
find-01.txt:cassini/home/peter/bo/2025ss/es/20250417> echo find . -name "*.pdf"
find-01.txt:cassini/home/peter/bo/2025ss/es/20250417> echo find . -name *.pdf
find-02.txt:cassini/home/peter/bo/2025ss/es/20250417> echo find . -perm /u+x
find-04.txt:cassini/home/peter/bo/2025ss/es/20250417> grep echo $(find . -type f -perm /u+x)
find-04.txt:./hello-01.sh:echo -n "Ihr Name? "
find-04.txt:./hello-01.sh:echo Hallo $name
find-04.txt:./hello-03.sh:echo -n "Ihr Name? "
find-04.txt:./hello-03.sh:echo Hallo '$name'
find-04.txt:./hello-02.sh:echo -n "Ihr Name? "
find-04.txt:./hello-02.sh:echo Hallo "$name"
grep-01.txt:unix-20250417.tex:    $ ¡echo "Dies ist ein Test." > test.txt¿
grep-01.txt:unix-20250417.tex:    $ ¡echo "Dies ist noch ein Test." >> test.txt¿
hardlinks-01.txt:cassini/home/peter/bo/2025ss/es/20250417> echo "Test 3" > test-03.txt
hardlinks-01.txt:cassini/home/peter/bo/2025ss/es/20250417> echo "Test 2" > test-02.txt
permissions-02.txt:echo -n "Ihr Name? "
permissions-02.txt:echo Hallo $name
shell-variables-01.txt:echo -n "Ihr Name? "
shell-variables-01.txt:echo Hallo $name
symlinks-01.txt:cassini/home/peter/bo/2025ss/es/20250417> echo "Test 1" > test-01.txt
symlinks-01.txt:cassini/home/peter/bo/2025ss/es/20250417> echo "Test 2" > test-02.txt
symlinks-02.txt:cassini/home/peter/bo/2025ss/es/20250417> echo "Test 1" > test-01.txt
cassini/home/peter/bo/2025ss/es/20250417> echo $?
0
cassini/home/peter/bo/2025ss/es/20250417>
+45 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> chmod 750 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> ls -l hello-01.sh
-rwxr-x--- 1 peter peter 61 17. Apr 12:26 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> chmod 755 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> ls -l hello-01.sh
-rwxr-xr-x 1 peter peter 61 17. Apr 12:26 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> chmod 000 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> ls -l hello-01.sh
---------- 1 peter peter 61 17. Apr 12:26 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> cat hello-01.sh
cat: hello-01.sh: Keine Berechtigung
cassini/home/peter/bo/2025ss/es/20250417> ./hello-01.sh
bash: ./hello-01.sh: Keine Berechtigung
cassini/home/peter/bo/2025ss/es/20250417> vi hello-0
hello-01.sh  hello-02.sh  hello-03.sh
cassini/home/peter/bo/2025ss/es/20250417> vi hello-0
hello-01.sh  hello-02.sh  hello-03.sh
cassini/home/peter/bo/2025ss/es/20250417> chmod 755 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> ls -l hello-01.sh
-rwxr-xr-x 1 peter peter 61 17. Apr 12:26 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> scp hello-01.sh main-0.cvh-server.de:
hello-01.sh                                                100%   61     4.5KB/s   00:00
cassini/home/peter/bo/2025ss/es/20250417> ssh main-0.cvh-server.de
Linux main-0 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64

2 updates could not be installed automatically. For more details,
see /var/log/unattended-upgrades/unattended-upgrades.log

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Apr 17 12:15:53 2025 from 195.37.15.82
pgerwinski@main-0:~$ ls -l hello-01.sh
-rwxr-xr-x 1 pgerwinski pgerwinski 61 Apr 17 12:51 hello-01.sh
pgerwinski@main-0:~$ ls -ln hello-01.sh
-rwxr-xr-x 1 1004 1004 61 Apr 17 12:51 hello-01.sh
pgerwinski@main-0:~$
logout
Connection to main-0.cvh-server.de closed.
cassini/home/peter/bo/2025ss/es/20250417> ls -ln hello-01.sh
-rwxr-xr-x 1 1501 1501 61 17. Apr 12:26 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417>
+12 −0
Original line number Diff line number Diff line
cassini/home/peter/bo/2025ss/es/20250417> ls -l hello-01.sh
-rwxr-xr-x 1 peter peter 61 17. Apr 12:26 hello-01.sh
cassini/home/peter/bo/2025ss/es/20250417> cat hello-01.sh
#!/bin/bash

echo -n "Ihr Name? "
read name
echo Hallo $name
cassini/home/peter/bo/2025ss/es/20250417> ./hello-01.sh
Ihr Name? *.txt
Hallo grep-01.txt permissions-01.txt shell-variables-01.txt tcpip-01.txt tcpip-02.txt
cassini/home/peter/bo/2025ss/es/20250417>