@asciinema2(speed: 2, autoPlay:true, rows: 10)
Diese kurze Einführung zum Thema Linux kann unabhängig vom Rest des Kurses bearbeitet werden. Für den Überblick über den gesamten Kurs kommen Sie @lialink(hier zurück zur Kursübersicht).
Was ist die Aufgabe der Personen auf diesem Bild?
Hardwaretechniker?
Programmierer?
Wissenschaftler?\
Tatsächlich ist nichts davon richtig. Die Personen auf diesem Bild sind sogenannte Operator, die die Computer bedienen. Ihre Rolle besteht darin, Programme zu laden, deren Ausführung zu überwachen und sicherzustellen, dass die Computer effizient arbeiten. In den Anfangstagen der Computertechnologie mussten Programme direkt in die Hardware geladen werden, was bedeutete, dass alle Programme direkt eine bestimmte Hardware ansprachen.
Programme laden im Jahr 1970
Der Operator erhält einen Stapel mit Lochkarten vom Programmierer. Jede Lochkarte enthält eine Zeile des Programmcodes. Der Operator legt die Lochkarten in den Kartenleser, der die Lochkarten einliest und in den Arbeitsspeicher des Computers lädt. Anschließend startet der Operator das Programm und überwacht dessen Ausführung. Wenn das Programm beendet ist, meldet der Operator die Ergebnisse an den Programmierer zurück.
Was kann schief gehen?
- Der Kartenleser liest eine Lochkarte falsch ein oder beschädigt sie.
- Das Programm enthält einen Fehler und der Computer "stürzt ab".
- Der Stapel Karten fällt herunter und die Reihenfolge der Lochkarten wird durcheinander gebracht.
Moderne Computer führen viele verschiedene Programme gleichzeitig aus, kein Operator könnte all diese Programme gleichzeitig überwachen. So verwenden wir heute ein Operating System, auf deutsch Betriebssystem, um die Aufgaben des Operators zu übernehmen. Betriebssysteme sind spezielle Programme die den Zugriff auf die Hardware steuern und es ermöglichen, dass Programme ausgeführt werden, ohne dass der Programmierer sich mit den technischen Details der jeweiligen Maschine befassen muss.
- Prozess- und Speicherverwaltung: Das Betriebssystem verwaltet die Ausführung von Programmen und den ihnen zugewiesenen Arbeitsspeicher.
- Dateiverwaltung: Das Betriebssystem verwaltet Dateien und Ordner und stellt sie für Programme und Anwender in einer Baumstruktur dar.
- Geräteverwaltung: Das Betriebssystem erlaubt Programmen, auf Geräte wie Drucker, Tastatur oder Maus zuzugreifen ohne dass technische Details bekannt sein müssen.
- Benutzerverwaltung: Fast alle modernen Benutzersysteme sind Mehrbenutzersysteme: Das Betriebssystem trennt die Prozesse und Dateien verschiedener Benutzer voneinander und stellt sicher, dass Benutzer nur auf ihre eigenen Dateien zugreifen können.
Parallel dazu entstand in den 1980er Jahren mit DOS ein einfaches Betriebssystem für Personal Computer, aus dem Windows (ab 1985) hervorging. Windows NT (1993) war ein wichtiger Schritt, da es eine neue, stabile Architektur einführte, die die Basis für alle modernen Windows-Versionen wie Windows 10 und Windows 11 bildet.
MacOS basiert auf der Unix-Variante BSD. Auch iOS (2007), das Betriebssystem für mobile Apple-Geräte, baut auf dieser Architektur auf. So sind sogar die zwei vebreitetsten mobilen Betriesbssysteme die Enkelkinder von Unix.
In diesem Kurs lernen wir die Grundlagen der Bedienung von Linux, da Grundkenntnisse in der Bedienung von Linux für viele andere Betriebssysteme von Android bis MacOS hilfreich sind. Selbst Windows 10 und Windows 11 bieten mittlerweile die Möglichkeit, Linux-Programme direkt auszuführen. Außerdem verwenden Server und Cloud-Dienste meistens Linux als Betriebssystem.
Linux ist eigentlich der Name des Betriebssystemkerns (englisch Kernel), also des grundlegenden Teils des Systems, der die Hardware steuert und die Ausführung von Programmen ermöglicht. Für sich allein genommen ist der Kernel jedoch kein vollständiges Betriebssystem. Das erhält man erst durch die Kombination mit einer Vielzahl von Programmen, Tools und Benutzeroberflächen. Diese Gesamtpakete, die den Kernel und all diese zusätzlichen Komponenten enthalten, werden als Distributionen bezeichnet. Bekannte Beispiele dafür sind Ubuntu, Debian, Archlinux, oder Fedora.
Jede dieser Distributionen können Sie als vollwertiges Betriebssystem benutzen. Wenn sie weiterhin Windows benötigen können Sie Linux auch parallel zu Windows auf Ihrer Festplatte installieren. Beim Start des Computers wählen Sie dann, welches Betriebssystem Sie verwenden möchten. Dies wird als Dual Boot bezeichnet.
Tipp:
Auch wenn die hier genannten Distributionen seit langer Zeit sehr beliebt und weit verbreitet sind, gibt es noch sehr viel mehr. Auch entstehen immer neuere Varianten von bekannten Distributionen, so Beispielsweise Linux Mint (als Variante von Ubuntu) oder Manjaro (als Variante von Archlinux).
Seit vielen Jahren führt DistroWatch eine umfassende Liste von Linux Distributionen.
Wenn sie Window benutzen und noch nicht bereit sind, Linux auf ihrem Computer zu installieren, besteht ab Windows 10 eine einfachere Möglichkeit: Das Windows Subsystem for Linux (WSL) kann Linux direkt innerhalb von Windows ausführen.
-
Windows-Version überprüfen:
- Stellen Sie sicher, dass Sie mindestens Windows 10 Version 2004 oder höher oder Windows 11 verwenden. Dies können Sie in den Einstellungen unter System > Info nachsehen.
-
Voraussetzungen für WSL aktivieren:
-
Öffnen Sie die Systemsteuerung.
-
Gehen Sie zu Programme > Programme und Features.
-
Klicken Sie auf Windows-Features aktivieren oder deaktivieren.
-
Aktivieren Sie die Kästchen für:
- Windows-Subsystem für Linux
- Virtuelle Maschinen-Plattform
- Hyper-V
-
Klicken Sie auf OK und starten Sie den Computer neu1.
-
-
Linux-Distribution aus dem Microsoft Store installieren:
- Öffnen Sie den Microsoft Store.
- Suchen Sie nach Ihrer gewünschten Linux-Distribution (z.B. Ubuntu) und klicken Sie auf Installieren.
- Aktuell2 kann ich Ubuntu 24.04 LTS empfehlen.
Nun können Sie ein Linux-Terminal über das Startmenü starten.
Haben Sie keinen PC sondern einen Mac nutzen Sie bereits ein Betriebssystem, dessen Grundlage auf Unix basiert. MacOS basiert auf BSD, einer Unix-Variante. Sie können auf jedem Mac einfach ein Terminal starten und die meisten Linux-Kommandos verwenden1.Um mehr Befehle und Programme zu installieren können Sie Homebrew verwenden, ein Paketmanager für MacOS.
Egal ob Sie Linux auf ihrem Rechner installiert haben oder WSL bzw. MacOS nutzen: Wir beginnen damit, ein Terminal zu starten1 und werden von einer sogenannten Eingabeaufforderung begrüßt, die in etwa so aussieht2:
tilman@Linux:~$Meistens gibt Ihnen diese Eingabeaufforderung ein paar grundlegende Informationen. Hier in der Form:
Benutzername@Hostname:Verzeichnis$- Benutzername der Name unter dem sie gerade im System angemeldet sind.
- Hostname ist der Name des Computers auf dem das Terminal läuft. Zwar ist das normalerweise einfach der Name ihres Rechners, doch sie können auch Terminals auf entfernten Servern ausführen.
- Verzeichnis Hier wird angezeigt, in welchem Verzeichnis Sie sich befinden. Das Kürzel
~steht dabei für ihr home-Verzeichnis (Sie werden gleich lernen, was das bedeutet).
Das Terminal wartet nun darauf, dass sie Befehle eingeben und diese mit Enter bestätigen.
Manche Befehle lesen sich wie normales Englisch, andere sind Abkürzungen.
So gibt der Befehl whoami den aktuellen Benutzernamen aus
pwd steht für print working directory und gibt an, wo im Dateisystem wir uns gerade befinden.
Hier sehen Sie ein Beispiel (drücken Sie den Play-Knopf):
@asciinema2(rows: 5)
Vorsicht root: In jedem Linux gibt es den Benutzer root, den sogenannten superuser. Dieser hat alle Berechtigungen im System und kann deshalb großen Schaden anrichten. Achten Sie darauf, nicht als root sondern mit ihrem Benutzernamen angemeldet zu sein.
Vorhin haben wir erwähnt, dass das Symbol ~ eine Abkürzung für das home-Verzeichnis ihres Benutzers ist.
Diese Abkürzung steht also in diesem Fall für den Pfad home/tilman, im Ordner /home gibt es also für jeden Benutzer einen gleichlautenden persönlichen Ordner3.
Wie in den meisten Betriebssystemen benutzt auch das Dateisystem in Linux eine hierarchische Ordnerstruktur.
Auf der obersten Ebene ist root, das Wurzelverzeichnis.
Ein Teil einer solchen Struktur sieht wie folgt aus:
/
|
+--home
| |
| +--tilman
| |
| +--sreekanth
|
+--bin
|
+--etc
|
+--var
| |
| +--log
|
+--dev
homekennen Sie bereits, hier enthält es die persönlichen Ordner zweier Nutzer.binenthält installierte Programmeetcenthält Konfigurationsdateienvarenthält zum Beispiel Protokolle (Logs) untervar/log.deventhält keine Dateien im eigentlichen Sinn, sondern erlaubt direkten Zugriff auf Geräte (devices) wie Festplatten oder auf Funktionalitäten wie einen Zufallszahlengenerator.
Um sich in dieser Verzeichnishierarchie zu bewegen, können Sie den Befehl cd für change directory verwenden.
So bewegen Sie sich mit cd var in den Ordner var. Beachten Sie, dass ein solcher Pfad relativ zum aktuellen Verzeichnis interpretiert wird. Gibt es unter dem aktuellen Verzeichnis keinen Ordner namens var schlägt der Befehl fehl.
Mit cd \var hingegen welchseln Sie direkt von überall her in das Verzeichnis /var direkt unter dem Wurzelverzeichnis. Das nennt man einen absoluten Pfad.
Auch die schon bekannte Abkürzung ~ können Sie mit dem Befehl cd verwenden. Allerdings wechselt auch der Befehl cd ohne Angabe eines Verzeichnisses immer in ihren persönlichen Ordner.
tilman@Linux:/var/log$ cd
tilman@Linux:~$Ebenfalls nützlich ist die Abkürzung .. für das Verzeichnis eine Ebene über dem aktuellen. Im Verzeichnis /var/log wechselt der Befehl cd .. also in das Verzeichnis /var
tilman@Linux:/var/log$ cd ..
tilman@Linux:/var$Hier sehen Sie wie man sich mit cd durch die Verzeichnisse bewegen kann.
@asciinema2(rows: 10)
mkdir ist eine Abkürzung für make directory mit dem Befehl
tilman@Linux:~$ mkdir projektelegen wir ein Verzeichnis mit dem Namen projekte an. Da wir nun das Dateisystem verändert haben1, wollen wir das Ergebnis auch sehen. Dafür ist der Befehl ls – kurz für list – nützlich. Der Inhalt des aktuellen Verzeichnisses wird angezeigt.
tilman@Linux:~$ ls
projekte notizen.txtHier sehen wir nun das soeben erstellte Verzeichnis projekte aber auch eine Datei notizen.txt die ebenfalls im persönlichen Ordner des Nutzers liegt.
ls kann beliebige Verzeichnisse anzeigen, so können Sie sich zum Beispiel auch das Wurzelverzeichnis anzeigen lassen:
tilman@Linux:~$ ls /
var bin dev opt home ...Wollen wir das soeben erstellte Verzeichnis wieder löschen, geht das mit rmdir oder remove directory. Allerdings lassen sich damit nur leere Verzeichnisse löschen.
Sowohl mkdir als auch rmdir akzeptieren mehrere, durch Leerzeichen getrennte Verzeichnisnamen um gleichzeitig mehrere Verzeichnisse zu erstellen oder zu löschen.
Hier sehen Sie ein Beispiel:
@asciinema2(rows: 8)
Natürlich gibt es viele Arten von Dateien die mit einer Vielzahl von Anwendungsprogrammen erstellt werden können. Eine einfache Textdatei lässt sich jedoch auch ohne weiteres im Terminal erstellen.
So wie mkdir ein leeres Verzeichnis erstellt, kann mit dem Befehl touch eine leere Datei erstellt werden.
Hier erstellen wir in einem bisher leeren Verzeichnis eine Datei rezepte.txt:
tilman@Linux:~/neu$ ls
tilman@Linux:~/neu$ touch rezepte.txt
tilman@Linux:~/neu$ ls
rezepte.txtDa eine leere Datei wenig nützt können wir sie nun mit einem Texteditor bearbeiten.
Die meisten Linux-Distributionen enthalten nano, einen minimalistischen Editor, in dem Sie interaktiv eine Datei bearbeiten können. Mit Strg+O1 speichern Sie die Datei, mit Strg+X verlassen Sie den Editor.
Mit cat von concatenate können Sie sich dann den Inhalt der Datei anzeigen lassen.
Hier sehen sie, wie man mit nano eine Textdatei bearbeiten und den Inhalt dann mit cat ausgeben kann:
Mit dem Befehl mv, kurz für move können Sie Dateien und Verzeichnisse "bewegen". Das kann man auf zweierlei Weise einsetzen: Erstens können Sie etwas von einem Ort zu einem anderen verschieben, und zweitens können Sie etwas umbenennen, indem Sie den alten Namen durch einen neuen ersetzen, ohne den Speicherort zu ändern.
So benennen wir hier den falsch geschriebenen Ordner "porjekte" in "projekte" um:
tilman@Linux:~$ mkdir porjekte
tilman@Linux:~$ mv porjekte projekteHier verschieben wir die Datei hello_world.py aus home in den Ordner projekte
tilman@Linux:~$ touch hello_world.py
tilman@Linux:~$ mv hello_world.py projekte
tilman@Linux:~$ ls projekte
hello_world.pyÄhnlich funktioniert der Befehl cp, kurz für copy. es wird jedoch eine Kopie der Datei oder des Verzeichnisses erstellt, anstatt es zu verschieben. Das Original bleibt am ursprünglichen Ort erhalten.
So kopieren wir zum Beispiel die Datei hello_world.py in das Verzeichnis "backup", während die Originaldatei im Home-Verzeichnis bleibt:
tilman@Linux:~$ cp hello_world.py backup
tilman@Linux:~$ ls backup
hello_world.py
tilman@Linux:~$ ls
backup hello_world.pyDer Befehl rm, kurz für remove, wird verwendet, um Dateien und Verzeichnisse zu löschen. Wenn Sie eine Datei auf diese Weise löschen, wird sie vollständig entfernt und kann nicht wiederhergestellt werden.
So können wir so die zuvor erstellte Kopie von hello_world.py löschen:
tilman@Linux:~$ rm backup/hello_world.py
tilman@Linux:~$ ls backupDie Befehle die sie bis jetzt kennengelernt haben, decken bereits einen großen Teil der täglichen Arbeit im Terminal ab. Mit ein paar zusätzlichen Tricks können diese aber noch vielseitiger eingesetzt werden.
So haben wir gesehen, dass rmdir nur leere Verzeichnisse löschen kann. Wenn sie aber den Befehl rm mit rm -r aufrufen, können Sie auch Verzeichnisse mit Inhalt löschen. -r steht für recursive und bedeutet, und ist eine Option, die besagt, dass der Befehl rekursiv alle Dateien und Unterverzeichnisse löschen soll.
Der Parameter -r ist ein Beispiel für eine Option. Optionen sind zusätzliche Argumente, die das Verhalten eines Befehls ändern. Sie werden durch einen Bindestrich und einen Buchstaben oder zwei Bindestriche und ein Wort angegeben1.\
Hier ein paar Beispiele für Optionen der Ihnen bereits bekannten Befehle:
ls -lzeigt zusätzliche Informationen zu den Dateien an (-lsteht für long)rm -ifragt vor dem Löschen jeder Datei nach, ob Sie sicher sind (-isteht für interactive)cp -rkopiert rekursiv alle Dateien und Unterverzeichnisse (Die Bedeutung von-rkennen Sie bereits)mkdir -perstellt das angegebene Verzeichnis, auch wenn die übergeordneten Verzeichnisse im Pfad fehlen. (-psteht für parents)rm --helpzeigt die Hilfe des Befehlsrman. Diese Option funktioniert mit allen Befehlen. Probieren Sie es aus!2
- Tabulator-Taste TAB: Drücken Sie die Tabulator-Taste um Dateinamen und Befehle automatisch vervollständigen zu lassen.
- Pfeiltasten ↑ und ↓: So können Sie sich durch die zuletzt eingegebenen Befehle bewegen.
- Platzhalter
*: Mitls *.txtkönnen Sie sich alle Dateien mit der Endung.txtanzeigen lassen.rm test*löscht alle Dateien die mittestbeginnen. - Strg+C: Unterbricht die Ausführung eines Befehls.
Das Verzeichnis projekte enthält 4 Unterverzeichnisse mit vielen Dateien. Sie wollen eine Sicherungskopie namens namens backup erstellen.
Welcher der folgenden Befehle ist korrekt?
- [(X)]
cp -r projekte backup - [( )]
cp -r backup projekte - [( )]
cp projekte backup - [( )]
mv projekte backup
Sie sind angemeldet als Nutzer erwin. Welche der folgenden Befehle bringen Sie in Ihr Heimatverzeichnis?
- [[X]]
cd - [[ ]]
cd / - [[X]]
cd ~ - [[X]]
cd /home/erwin - [[ ]]
cd /home - [[ ]]
cd /erwin
In ihrem Heimatverzeichnis befindet sich das leere Verzeichnis bilder und das leere Verzeichnis musik.
Welche der folgenden Befehle löschen beide Verzeichnisse?
- [[ ]]
rm bilder musik - [[X]]
rm -r bilder musik - [[X]]
rmdir bilder musik - [[ ]]
rmdir /bilder /musik - [[ ]]
rmdir -r bilder musik - [[ ]]
rm bilder rm musik
 "Operator" bei der NASA](/tilman-schieber/OKInf/raw/main/img/A/operator.jpg)
![Der IBM 1442 Lochkartenstanzer und -leser[^1] Kartenleser](https://upload.wikimedia.org/wikipedia/commons/1/10/IBM1442.corestore.jpg)
![eine gestanzte Lochkarte der TU Berlin[^2] Eine Lochkarte](/tilman-schieber/OKInf/raw/main/img/A/lochkarte_tu.jpg)
![Eine Lochkarte wurde beim Einlesen des Programms beschädigt.[^1] Beschädigte Lochkarte](https://upload.wikimedia.org/wikipedia/commons/f/f6/DamagedPunchedCard.jpg)
![Ein Programm auf Lochkarten. Der schräge rote Strich hilft die Karten in der richtigen Reihenfolge zu halten.[^1] Lochkarten](https://upload.wikimedia.org/wikipedia/commons/2/26/Punched_card_program_deck.agr.jpg)

