Informatik I - Einstiegskurs Dr. Henrik Brosenne Georg-August-Universität Göttingen Institut für Informatik Basiert auf dem Einstiegskurs im Wintersemester 2009/10 von Markus Osterhoff Wintersemester 2012/13
Inhalt Einstiegskurs Linux/UNIX UNIX-Dateisystem Standardprogramme cat, less & mehr Editoren man pages Pipes Standard-Programme Shellskripte
Was sind / tun Betriebssysteme? zahlreiche Komponenten...
Was sind / tun Betriebssysteme? zahlreiche Komponenten... Strom an...
Was sind / tun Betriebssysteme? zahlreiche Komponenten... Strom an... nichts passiert!
Aufgaben eines Betriebssystems Prozessverwaltung & Speichermanagement Dateisystem & Benutzer-/ Rechteverwaltung Treiber und Protokolle Bibliotheken und Schnittstellen Benutzeroberflächen Basis-Satz an (Administrations-) Programmen alle zum Betrieb nötigen Dinge (kein Browser, kein Office,... ) Linux-Distribution: + Browser, + Office + tausende Pakete
Aufgaben eines Betriebssystems A bs t r a k ti o n Betriebssystem Bibliotheken Benutzer Software Betriebssystem- Kern Hardware Schnittstellen Treiber
UNIX und Linux Das erste UNIX wird 1969 von Ken Thompson in Assembler geschrieben 1971 entwickelt Dennis Ritchie die Programmiersprache C Danach: Weiterentwicklung durch zahlreiche Universitäten und Firmen (IBM, HP, AT&T,..., Microsoft,... ) 1991: Linus Torvalds schreibt als Student eine Terminalemulation, um von zu Hause auf die Uni-Rechner zuzugreifen das Projekt wird größer schließlich entsteht ein kleines Betriebssystem, das mittlerweile eine herausragende Stellung im Servermarkt einnimmt, und auch im Desktop-Bereich große Zuwächse verzeichnet. Viele Distributionen bieten komplette Betriebssysteme (Kernel + Anwendungssoftware) an.
Die Benutzerverwaltung unter Linux (1/3) Jeder Anwender hat einen eigenen Account mit Benutzernamen und Passwort. Dies dient dem Schutz der eigenen Dateien und dem Schutz der Rechenanlage Der Administrator (root) darf alles.
Die Benutzerverwaltung unter Linux (2/3) Mit Benutzernamen und Passwort kann man sich direkt am Rechner einloggen...
Die Benutzerverwaltung unter Linux (3/3) Mit Benutzernamen und Passwort kann man sich direkt am Rechner einloggen aber auch über das Netzwerk auf entfernten Rechnern.
Benutzeroberfläche: Konsole (Shell) Ein Konsole (auch Shell genannt) ist eine Kommandozeile, die vollständig über die Tastatur gesteuert wird. Diese Art der Computersteuerung ist sehr mächtig gerade im Bereich der Softwareentwicklung und Wissenschaft können viele Aktionen sehr schnell auch ohne Maus ausgeführt werden. Einige Schwächen: Bildbearbeitung, Videoschnitt, pixelorientierte Aufgaben Große Stärke der Shell: viele kleine nützliche Programme, die bei textorientierten Aufgaben eng zusammenarbeiten können.
Dateisystem Das UNIX-Dateisystem hat eine Baumstruktur. / /afs /bin /etc /usr /tmp informatik...goe.de local a b c... m... z bin brosenne firefox Die oberste Ebene heißt / ( root ). Darunter findet sich einige Standard-Verzeichnisse /bin /sbin /etc /usr /var /tmp /home... Es gibt keine Laufwerksbuchstaben, sondern mount points. Verzeichnisse können Unterverzeichnisse und Dateien enthalten, einige Sonderfälle /dev /proc /sys
Dateien $ stat vortrag. tex File : " vortrag. tex " Size : 883 Blocks : 8 IO Block : 4096 Device : 811h/2065 Inode : 7325018 Links : 1 Access : (0755/ - rwxr -xr -x) Uid : ( 1000/ brosenne ) Gid : ( 1000/ brosenne ) Access : 2012-10 -23 14:44:07.000000000 +0200 Modify : 2012-10 -23 14:44:02.000000000 +0200 Change : 2012-10 -23 14:44:02.000000000 +0200 Eine Datei hat Name Größe Berechtigungen Datum...
Verzeichnisse (1/2) / afs / informatik.uni - goettingen.de /. / afs / informatik.uni - goettingen.de/ course /. / afs / informatik.uni - goettingen.de/ course / info1 /. / afs / informatik.uni - goettingen.de/ course / info1 / public /. / afs / informatik.uni - goettingen.de/ course / info1 / public / index. html / afs / informatik.uni - goettingen.de/ course / info1 / public / uebungen. html Ein Verzeichnis hat Name Dateien/Verzeichnisse als Inhalt Berechtigungen Datum...
Verzeichnisse (2/2) Jeder Benutzer hat ein eigenes Home-Verzeichnis. /afs/informatik.uni-goettingen.de/user/b/brosenne Hier befinden sich die Daten und die Konfigurationsdateien des Benutzers. Es gibt zwei besondere Verzeichnisse. das aktuelle Verzeichnis,.. das darüberliegende Verzeichnis
Bewegen im Dateisystem $ pwd print working directory Wo sind wir gerade? $ ls list Was befindet sich hier? Was sind die Berechtigungen? ls -l list long $ cd change directory Wir wollen woanders hin...
Berechtigungen Dateiberechtigungen Nicht jeder darf jede Datei ausführen (execute) schreiben (Write) lesen (Read) Verzeichnisberechtigungen Nicht jeder darf in jedes/jedem Verzeichnis wechseln (X) schreiben (W), d.h. Dateien erzeugen, verschieben, löschen,... auflisten (R)
Berechtigungen rwx rwx rwx Besitzer alle anderen Gruppe
Berechtigungen Berechtigungen anzeigen: ls -l typische Ausgabe (zusätzlich: Änderungsdatum, Größe) - rwx rwx rwx musterma students datei1 - rw- r-- --- musterma students datei2 - --- --- --- cdamm professors datei4 d rwx r-x r-x musterma students verzeichnis1 d rwx rwx rwx musterma students verzeichnis2 d rwx --- --- cdamm professors klausur
Berechtigungen Kombination von Datei- und Verzeichnisberechtigung Verzeichnis: d --x /tmp/nurwechseln Datei: - r-- /tmp/nurwechseln/nurlesen Die Datei darf gelesen werden, aber der Anwender muss den Dateinamen kennen, da er kein $ ls /tmp/nurwechseln machen kann.
chmod (1/3) Dateiberechtigungen können mit dem Befehl $ chmod <rechte> <datei> change modus vom Besitzer der Datei geändert werden Es sind zwei Schreibweisen möglich. $ chmod g+rw <datei> $ chmod 755 <datei> Flag Wert r 4 w 2 x 1
chmod (2/3) $ chmod g+rw datei Gruppe: +Lesen, +Schreiben $ chmod o-w datei Andere: -Schreiben $ chmod u+x datei Besitzer: +Ausführen $ chmod u+x,g-w datei Besitzer: +Ausführen, Gruppe: -Schreiben
chmod (3/3) $ chmod 750 datei 750 == 4+2+1, 4+1, 0 7 = rwx 5 = r-x 0 = --- 750 = rwx r-x --- $ chmod 664 datei 664 == 4+2, 4+2, 4 6 = rw- 4 = r 664 = rw- rw- r-- $ chmod 775 verzeichnis,programm 775 == 4+2+1, 4+2+1, 4+1 7 = rwx 5 = r-x 775 = rwx rwx r-x
Dateiverwaltung Hier eine Auswahl an wichtigen Befehlen. Befehl pwd ls -l cd mkdir rmdir touch mv cp rm -r Name print working directory list long change directory make directory remove directory (legt Datei an) move copy remove recursively
Dateiverwaltung $ cp einedatei /tmp/anderedatei Kopiert einedatei in das Verzeichnis /tmp/ unter dem Namen anderedatei $ cp einedatei anderedatei Kopiert einedatei in anderedatei (im aktuellen Verzeichnis).
Dateiverwaltung $ mv einedatei anderedatei Benennt einedatei in anderedatei um. $ mv einedatei /tmp/anderedatei Verschiebt einedatei in das Verzeichnis /tmp/ und benennt sie um in anderedatei $ mv /tmp/einedatei anderedatei Verschiebt /tmp/einedatei in das aktuelle Verzeichnis und benennt sie um in anderedatei
mkdir, cd, pwd $ pwd /afs/.../brosenne $ mkdir einfuehrungskurs $ cd einfuehrungskurs $ pwd /afs/.../brosenne/einfuehrungskurs $ ls -l insgesamt 0 $ cd.. $ rmdir einfuehrungskurs
Inhalt Einstiegskurs Linux/UNIX UNIX-Dateisystem Standardprogramme cat, less & mehr Editoren man pages Pipes Standard-Programme Shellskripte
Standardprogramme Zu einer UNIX-/Linux-Installation gehören viele Standardprogramme, nützliche kleine Tools, einige davon werden im Folgenden vorgestellt. zunächst: wie bedient man die Konsole (Shell)? anschließend: wie bearbeitet man Text-Dateien?
Shell & Programme Das Kommando $ firefox soll das Programm firefox starten. Aber wo findet sich die Programmdatei? Die Shell durchsucht alle Verzeichnisse, die in der Variablen $PATH aufgelistet sind. $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/x11 und findet schließlich $ which firefox /usr/bin/firefox
Shell & Programme $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/x11 Ausschließlich diese Verzeichnisse werden durchsucht. Nur ausführbare Dateien in diesen Verzeichnissen können auf diese Weise ausgeführt werden. Insbesondere: ausführbare Dateien im aktuellen Verzeichnis können so nicht gestartet werden. Das geht nur mit vollständigen Pfad (absolut oder relativ). $./mein skript.sh $ /afs/.../brosenne/einfuehrung/mein skript.sh $../anderes skript.sh
Früher war alles besser... Die Shell merkt sich die Eingaben. Cursor-Hoch: letzte Befehle Curor-Runter: nächste Befehle STRG+R: Suchen Tabulator: Vervollständigung von Datei-/Verzeichnisnamen $ programm1 $ ls wichtige Daten $ mv wichtige Daten unwichtige Daten $ ls unwichtige Daten $
Früher war alles besser... Die Shell merkt sich die Eingaben. Cursor-Hoch: letzte Befehle Curor-Runter: nächste Befehle STRG+R: Suchen Tabulator: Vervollständigung von Datei-/Verzeichnisnamen $ programm1 $ ls wichtige Daten $ mv wichtige Daten unwichtige Daten $ ls unwichtige Daten $ ls
Früher war alles besser... Die Shell merkt sich die Eingaben. Cursor-Hoch: letzte Befehle Curor-Runter: nächste Befehle STRG+R: Suchen Tabulator: Vervollständigung von Datei-/Verzeichnisnamen $ programm1 $ ls wichtige Daten $ mv wichtige Daten unwichtige Daten $ ls unwichtige Daten $ mv wichtige Daten
Früher war alles besser... Die Shell merkt sich die Eingaben. Cursor-Hoch: letzte Befehle Curor-Runter: nächste Befehle STRG+R: Suchen Tabulator: Vervollständigung von Datei-/Verzeichnisnamen $ programm1 $ ls wichtige Daten $ mv wichtige Daten unwichtige Daten $ ls unwichtige Daten $ ls
Früher war alles besser... Die Shell merkt sich die Eingaben. Cursor-Hoch: letzte Befehle Curor-Runter: nächste Befehle STRG+R: Suchen Tabulator: Vervollständigung von Datei-/Verzeichnisnamen $ programm1 $ ls wichtige Daten $ mv wichtige Daten unwichtige Daten $ ls unwichtige Daten $ mv wichtige Daten unwichtige Daten
Früher war alles besser... Die Shell merkt sich die Eingaben. Cursor-Hoch: letzte Befehle Curor-Runter: nächste Befehle STRG+R: Suchen Tabulator: Vervollständigung von Datei-/Verzeichnisnamen $ STRG+R mv $ mv wichtige Daten unwichtige Daten
Früher war alles besser... Die Shell merkt sich die Eingaben. Cursor-Hoch: letzte Befehle Curor-Runter: nächste Befehle STRG+R: Suchen Tabulator: Vervollständigung von Datei-/Verzeichnisnamen $ ls /afs/inf TABULATOR $ ls /afs/informatik.uni-goettingen.de
cat, less & mehr Den Inhalt einer Datei auf dem Bildschirm ausgeben. $ cat <datei> Klingt wenig nützlich, Geduld! Ein Pager. $ less <datei> Die Datei wird seitenweise (page by page) angezeigt. mit Cursor- und Bild-Tasten lässt sich scrollen Suchfunktion: /, n beenden: q
head & tail Während $ cat datei die komplette Datei anzeigt, zeigt $ head datei die ersten 10 Zeile an und $ tail datei die letzten 10 Zeile an. Beispiel Anzeigen der ersten 5 Zeilen $ head -5 datei und der letzten 5 Zeilen. $ tail -5 datei
Inhalt Einstiegskurs Linux/UNIX UNIX-Dateisystem Standardprogramme cat, less & mehr Editoren man pages Pipes Standard-Programme Shellskripte
Editoren cat, less, head, tail zeigen den Inhalt von Text-Dateien an. Wie kann man Dateien bearbeiten? mit Text-Editoren Die viele Dateien unter Linux sind Text-Dateien (Konfigurationen, Skripte, Programm-Quellcode). Es gibt zahlreiche gute Text-Editoren um diese Dateien effizient zu bearbeiten.
Editoren Für Einsteiger gut geeignete Allzweck-Editoren. gedit kwrite emacs Gewöhnungsbedürftig, aber immer vorhanden vi oder vim Mit ESC wechselt man zwischen Steuer- und Bearbeitungsmodus. Beenden mit :q! im Steuermodus.
Editoren Was sind die tollen Funktionen eines Editors? Zeilennummern (Programme werden zeilenweise compiliert/ausgeführt) Syntaxhervorhebung (Schlüsselwörter der Sprache, Variablen, Literale,... ) besondere Such-Funktionen (etwa: wo wurde diese Variable deklariert?) Shortcuts & Vervollständigungen Möglichkeit, Compiler-Fehler zu erkennen und Zeilen anzuspringen
Inhalt Einstiegskurs Linux/UNIX UNIX-Dateisystem Standardprogramme cat, less & mehr Editoren man pages Pipes Standard-Programme Shellskripte
man pages Anleitungen zu (fast allen) Programmen findet man in den man pages: $ man program Typischer Aufbau Name Syntax Beschreibung Siehe auch... Beispiele $ man man $ man less $ man sort
Inhalt Einstiegskurs Linux/UNIX UNIX-Dateisystem Standardprogramme cat, less & mehr Editoren man pages Pipes Standard-Programme Shellskripte
Pipes Röhren zwischen Prozessen Eingabe Ausgabe Fehlerausgabe
Pipes Röhren zwischen Prozessen Eingabe Ausgabe Fehlerausgabe
Pipes Röhren zwischen Prozessen Standardeingabe und Standardausgabe $ cat datei > datei0 Der Inhalt von datei wird in die Datei datei0 geschrieben. $ cat datei2 >> datei0 Der Inhalt von datei2 wird an die Datei datei0 angehängt. $ cat datei programm Der Inhalt von datei wird zur Eingabe von programm, d.h. die Ausgabe von cat datei erfolgt nicht auf der Standardausgabe, sondern wird auf die Standardeingabe umgeleitet, von der programm seine Eingaben liest. Standardfehlerausgabe 2> und 2>> funktioniert entsprechend 2 ist nicht so einfach möglich
Pipes Röhren zwischen Prozessen Die Standardeingabe kann < aus einer Datei kommen, von einer Standardausgabe stammen Beispiele $ less datei $ cat datei head $ tail < datei
Inhalt Einstiegskurs Linux/UNIX UNIX-Dateisystem Standardprogramme cat, less & mehr Editoren man pages Pipes Standard-Programme Shellskripte
cat Auf die Standardausgabe schreiben. $ cat datei Gibt den Inhalt von datei zeileweise auf der Standardausgabe aus. $ cat datei Tastatureingabe Liest Daten zeilenweise von der Standardeingabe und gibt sie zeilenweise auf der Standardausgabe aus. Dateiende (EOF = end of file): STRG+D. Beispiele $ cat datei1 datei2 datei3 > alledrei $ cat nocheine >> alledrei $ cat tolledatei > /dev/null
cut Teile jeder Zeile einer Datei entfernen. $ cut [optionen] datei Gibt den Inhalt von datei (oder der Standardeingabe) zeileweise auf der Standardausgabe aus. Neu. Es können Spalten definiert werden. Beispiele $ cat tabelle spalte1 spalte2 spalte3 spalte4 Guten Tag Frau Benutzerin $ cut -f 3 tabelle spalte3 Frau
cut Beispiele $ cat Messergebnisse head -3 #Zeit Entfernung Geschwindigkeit 0.000 0.000 0.000 0.002 0.004 2.000 $ cut -f 3 Messergebnisse head -3 tail -2 0.000 2.000
sort Zeilen von Textdateien sortieren. $ sort [optionen] datei Gibt den Inhalt von datei (oder der Standardeingabe) zeileweise auf der Standardausgabe aus. Nomen est omen. Die Daten werden sortiert. Beispiele -u gibt identische Zeilen nur einmal aus... siehe man sort $ sort /tmp/unsortiert $ gibvielezeilenaus sort -k 2
wc Word Count Bytes, Wörter und Zeilen von Dateien zählen. $ wc datei Liest den Inhalt von datei (oder der Standardeingabe) und gibt die Anzahl an Zeichen, Wörtern und Zeilen aus. Beispiele -l Anzahl an Zeilen -w Anzahl an Wörtern -c Anzahl an Zeichen... siehe man wc $ wc -l /etc/passwd $ wc -w /etc/*.conf $ gibvielezeilenaus wc -l $ sort -u wc -l $ gibvielezeilenaus wc -l $ gibvielezeilenaus sort -u wc -l
Inhalt Einstiegskurs Linux/UNIX UNIX-Dateisystem Standardprogramme cat, less & mehr Editoren man pages Pipes Standard-Programme Shellskripte
Shellskripte Shellskripte sind Programme, die von einer Shell (z.b. der Bash = Bourne-again-shell) interpretiert und ausgeführt werden. Meist eine Abfolge von Shell-Befehlen oder Programmaufrufen. Beispiel 1 #!/ bin / bash 2 echo " Anzahl der Dateien " 3 ls wc -l 4 echo " Datum " 5 date 6 echo " heutiger Glueckskeks " 7 fortune
Shellskripte Raute Rufzeichen Pfad-zur-Shell ( shee-bang ) #!/bin/bash Sagt dem Betriebssystem, mit welcher Shell (bash, sh, php, perl,... ) das Skript interpretiert werden soll. Die Zeilen eines Shellskript werden nacheinander abgearbeitet (Batch-Betrieb).
Starten eines Shellskriptes Shellskript muss mit shee-bang beginnen. #!/bin/bash Shellskript muss ausführbar sein. $ chmod +x skript.sh Shellskript liegt typischerweise nicht im Pfad ($PATH). $./skript.sh