1 Christopher Oezbek, Linux und die Kommandozeile Brückenkurs Informatik WiSe 2005 Christopher Oezbek Freie Universität Berlin, Institut für Informatik
2 Christopher Oezbek, Eine kurzer Überblick über Linux Linux – soviel verrät der Name schon – ist ein Kind des Betriebssystems Unix. Unix entstand in den Sechziger und Siebziger Jahren als Betriebssystem für "Minicomputer" wie die PDP11 draußen im Foyer Als der IBM PC immer populärer wurde, wollte man auch dort ein Unix-ähnliches Betriebssystem laufen lassen. Leider war Unix nur kommerziell verfügbar und teuer. Es entstanden ein paar Abwandlungen wie Minix und 386BSD. Das Problem war aber, dass es sehr viel verschiedene Hardware zu unterstützen gab.
3 Christopher Oezbek, Ein Finne erobert die Welt Linus Torvalds war 1991 Informatik- student in Helsinki. Im dritten Jahr an der Uni. Er begann, für seinen Computer ein Betriebssystem zu entwickeln. Dabei stützte er sich in einigen Teilen auf Minix und Unix. Wichtiger war, dass er sich im August 1991 an die Öffentlichkeit wandte. Linus Torvalds hatte den richtigen Riecher: Eine solche Aufgabe sollte man gemeinsam lösen. (und Linus schaffte die passende Atmosphäre dafür) Aber es gab noch eine wichtige Voraussetzung:
4 Christopher Oezbek, Die freie Lizenzierung Seit den Achtziger Jahren kämpft Richard Stallman für die Freiheit der Software. Das Problem war und ist, dass die Firmen ihre Software nur noch als Programme veröffentlichten, die man nicht verändern konnte und durfte. Dem entgegen stellte Stallman die "GNU General Public License" (GPL): Man muss das Programm laufen lassen dürfen. Es muss Einblick in das komplette Programm gewährt werden und Änderungen müssen erlaubt sein. Das Programm muss kostenfrei verteilt werden dürfen. Programme die aus einem GPL Programm entstehen, müssen die Lizenz beibehalten.
5 Christopher Oezbek, Was bedeutet das? Software unter der GPL hat damit den Vorteil, dass: Software, die einmal frei ist, dies auch bleibt. Beiträge nicht von anderen zum Geld verdienen missbraucht werden können. Die GPL ist also ein Vertrag, der es jedem einzelnen ermöglicht einzuschätzen, wie sein Beitrag verwertet wird. Dies hat große Vorteile für eine kollaborative Arbeit von Hobbyisten, wie es Linux am Anfang war. Viele Programmierer überall auf der Welt stürzten sich auf Linux und eine Grundmenge an Werkzeugen aus dem GNU-Projekt und arbeiten daran zusammen weiter.
6 Christopher Oezbek, Linux heute... Linux ist neben Windows eines der populärsten Betriebssysteme. Es gibt für nahezu alle wichtigen Softwarebereiche auch Programme für Linux. Seine Stärken liegen besonders im Bereich, wo keine Endbenutzer arbeiten (Server). Unter Akademikern, Studenten und Hackern erfreut es sich größter Beliebtheit, obwohl es oft nicht so einfach zu bedienen ist wie Windows oder MacOS. Am Institut gibt es das Studentische Projekt Linux Netzwerk ("Spline"). Diese veranstalten Linux-Installations-Parties und helfen dort bei den komplizierten Feinheiten. Es ist durchaus kein einfacher Umstieg. Tux
7 Christopher Oezbek, Ein Screenshot für Windows
8 Christopher Oezbek, Ein Screenshot für Linux
9 Christopher Oezbek, Zusammenfassung Linux wurde aus freiwilligen Beiträgen erstellt. Jeder kann sich das Betriebssystem und die vielen Anwendungen, die auf der Basis entstanden sind, kopieren, selbst verbessern und erweitern. Natürlich gibt es noch viel darüber zu lernen: Wie kann eine Firma wie Suse oder Redhat Linux verkaufen? Was ist Open Source? Wie funktioniert das rechtlich? Was ist Copyleft und Creative Commons? Was bringt es mir, die Programme theoretisch ändern zu können, wenn es aber in Wirklichkeit viel zu kompliziert ist? Wie verdient Linus Torvalds sein Geld?
10 Christopher Oezbek, Verzeichnisse und Dateien Vereinfacht: Eine Datei ist Daten plus Namen. Um diese Dateien hierarchisch zu ordnen, verwendet man Verzeichnisse. Jedes Verzeichnis kann Dateien und wiederum Verzeichnisse enthalten. In Anlehnung an frühere Büros werden Verzeichnisse auch Ordner (engl. Folders) genannt. Dadurch ergibt sich ein so genannter Verzeichnisbaum (Directory Tree) -> Meine Dateien CV.doc Bild1.jpgPlan.svg Hits42.cdaJam.mp3 Bilder Musik
11 Christopher Oezbek, Verzeichnispfad und Dateinamen Zwei Dateien müssen verschiedene Namen haben, es sei denn, sie liegen in verschiedenen Verzeichnissen Um eine Datei eindeutig zu identifizieren verwendet man dann den so genannten Pfad path, Verzeichnispfad, Dateipfad Im rechten Beispiel gibt es CV.doc zweimal in verschiedenen Verzeichnissen (Pfaden): Eigene Dateien\CV.doc Eigene Dateien\Alt\CV.doc Den Backslash \ nennt man "Pfadtrennzeichen" oder "Path-Separator". Meine Dateien CV.doc Alt CV.doc
12 Christopher Oezbek, Windows: Verzeichnisse Unter Windows (Dateimanager Explorer) sieht der Dateibaum so aus: Es sieht so aus, als sei der Desktop das oberste Verzeichnis. In Wirklichkeit wird unter Windows aber alles relativ zu einer Festplatte angesprochen, z.B. C:\Programme\Winamp\ D:\Kurs\Einleitung.pdf Das Trennzeichen ist ein Backslash \.
13 Christopher Oezbek, Linux: Verzeichnisse Unter Linux (z.B. Dateimanager Konqueror) ist dies anders: Es gibt tatsächlich nur ein oberstes Verzeichnis: / auch root directory oder Wurzelverzeichnis genannt. Achtung: der Administrator des Linux- Computers wird auch Root genannt. Die verschiedenen Festplatten werden dann an unterschiedlichen Stellen in diesen Baum eingebunden (mounted). Das Trennzeichen ist der Slash / (nicht der Backslash): /home/oezbek/kurs/einleitung.pdf /usr/bin/xine
14 Christopher Oezbek, Datei-Namensendungen unter Linux Unter Windows bestimmt die Dateiendung (File- Extension), welcher Typ von Datei vorliegt. exe und com sind ausführbar. dll ist eine Programmbibliothek. txt, doc, rtf sind Textformate... Unter Linux ist dieser Zwang gelockert. Unter Linux gibt es ein spezielles Bit, das anzeigt, ob eine Datei ausgeführt werden darf (eXecute-Flag). Deshalb sind keine Endungen nötig. Auf der anderen Seite ist es ohne die Endungen oft schwieriger zu erkennen, was die Datei für einen Typ hat. Viele Benutzer behalten deshalb Dateiendungen bei. Im Prinzip gibt es aber keinen Unterschied ob ihr eine Datei hallo oder hallo.txt nennt.
15 Christopher Oezbek, Groß- und Kleinschreibung Windows unterscheidet nicht Linux aber schon Man kann also unter Linux die folgenden Dateien haben: hallo Hallo HALLO...und sie sind alle unterschiedlich. Also Achtung beim Aufrufen von Befehlen und Programmen.
16 Christopher Oezbek, Kommandozeile Wie viele haben noch Computer kennen gelernt, bei denen die Kommandozeile die Haupteingabeform war?
17 Christopher Oezbek, Ein anderes Paradigma Als mehrfarbige Bildschirme noch teuer waren und auch die Hardware nicht so leistungsfähig war, verwendete man folgenden Ansatz für die Kommunikation mit dem Rechner: Der Benutzer bekommt vom Computer einen textuellen Prompt vorgegebenen. Auf diese Eingabeauforderung antwortet der Benutzer durch Eintippen eines Befehls. Wird dieser Befehl mit Enter bestätigt, führt der Computer diesen aus und zeigt das Ergebnis der Ausführung an. Anschließend wartet der Computer wieder auf Eingabe.
18 Christopher Oezbek, Der Terminal-Ansatz Wenn man noch weiter zurück geht, war es sogar so, dass man einen zentralen Rechner hatte und viele verbundene Bildschirme mit Tastatur. Diese Bildschirm empfingen Zeichen vom Zentralrechner und zeigten sie an und schickten die Eingabe des Benutzers zurück an den Rechner. Man nannte diese "dummen" Bildschirme ohne Festplatte und Prozessor auch Terminals. Dementsprechend werden Programme, die heute die Funktion des Terminals ersetzen, auch als Terminal- Emulatoren bezeichnet.
19 Christopher Oezbek, Vergleich zur graphischen Eingabe Macht euch klar, dass die Eingabeaufforderung nichts anderes ist, als eine andere Sicht auf das System. Zugrunde liegen die gleiche Hardware und gleichen Daten. Die meisten Tätigkeiten lassen sich in beiden Welten gut lösen. Aber es gibt Unterschiede: Textuelle Befehle kann man kopieren. Bei Mausklicks ist das schwieriger. Graphisch lassen sich aber viele Informationen besser darstellen. Die Kommandozeile ist linear. Graphische Oberflächen sind 2D (vielleicht kann man sogar 3D sagen aka Fenster im Hintergrund).
20 Christopher Oezbek, Bereiche, wo die Kommandozeile vorherrscht Überall dort, wo Aktionen im Dateisystem automatisiert und vom Computer gesteuert werden sollen, hat die Kommandozeile deutliche Vorteile: Alle Dateien mit Endung htm in Endung html umbenennen. for f in *.htm; do mv $f `basename $f.htm`.html; done; Das geht mit graphischen Mitteln nur schwierig bzw. mit speziellen Werkzeugen. Insgesamt aber verliert die Kommandozeile gegenüber graphischen Oberflächen mehr und mehr an Bedeutung. Unter MacOS X gibt es z.B. den Automator -> Unter Windows hat man als Benutzer kaum noch Kontakt mit der "Shell".
21 Christopher Oezbek, Wie komme ich auf eine Kommandozeile? Windows: cmd steht für command. Die Kommandozeile häufig auch Command Line Interface (CLI) oder Command Shell oder nur Shell genannt.
22 Christopher Oezbek, Linux Wenn ihr an einem Linuxrechner sitzt, dann heißt ein entsprechendes Programm, welches ein solches Fenster anzeigt: Konsole (KDE) Term (kurz für Terminal Emulator) oder auch X-Term Shell Darüber hinaus redet man auch gerne von dem Programm, welche die Kommandozeile in dem Fenster verwaltet: Bash, Csh, Ksh, Zsh, Shell Ihr könnt an einem Linux-Rechner (auch gerne Linux- Kiste genannt) aber auch STRG+ALT+F1 bis F6* drücken und seht dann Linux ohne graphische Oberfläche (Zurück mit STRG-ALT+F7).
23 Christopher Oezbek, Z.B. Konsole unter KDE
24 Christopher Oezbek, Namensverwirrung Hier noch mal alle Namen, die alle letztlich oft einfach dafür verwendet werden, die Kommandozeile zu benennen: Kommandozeile / Command-Line / CMD Kommandoprompt / Prompt CLI (Command-Line Interface) Eingabefenster / Eingabeaufforderung Terminal Emulator / Terminal / X-Term / Term Konsole Alles, was mit Sh wie Shell endet: Bash, CSh (sprich Cee-Shell), Ksh Beliebt auch Namen der Windows-Programme und Protokolle: SSH Client, Putty, SSH Shell, Telnet, Hyperterm Nicht irre machen lassen ;-)
25 Christopher Oezbek, Von Windows auf Linux zugreifen Wir haben gestern ja schon gelernt, wie man sein Passwort ändert, indem man sich auf dem Rechner chpasswd einloggt. Da dies über einen verschlüsselten Kanal funktioniert (ssh), seid ihr vor Angreifern sicher. Mit der gleichen Technik könnt ihr euch auch auf einen Linux-Rechner zum Arbeiten einloggen, z.B. auf paste2 x 3,0 GHz P4 HT4 GBU320 SCSI vader4 x 700 MHz PIII1 GBU160 SCSI nawab2 x 1,6 GHz AMD2 GBEIDE weather2 x 1,0 GHz PIII1 GBU160 SCSI Diese sind für euch zugänglich und nur für das Einloggen gedacht.
26 Christopher Oezbek, So geht's...
27 Christopher Oezbek, So, jetzt sind wir da und was machen wir jetzt? Erstmal umschauen, wo wir sind (PrintWorkDirectory): und anschauen, was es da so gibt (list): Und schon nach 2 Befehlen merkt ihr, dass man sich ziemlich viele Begriffe merken muss und alles in Englisch ist. Sorry! Linux lernen ist wie eine neue Sprache lernen. Man muss Vokabeln pauken! (aber nur ein paar Hundert)
28 Christopher Oezbek, Wie bewegt man sich im Dateisystem Angenommen ihr seid im Verzeichnis brueckenkurs. Wie kommt man nach alt ? cd alt Wie kommt man nach alp1 ? cd uebungsblaetter cd alp1 oder cd uebungsblaetter/alp1 Wie kommt man von alt nach brueckenkurs ? cd.. Wie kommt man von alp1 nach alt ? cd../../alt (alternativ auch cd../../alt/../alt ) brueckenkurs alt uebungsblaetter alp1alp2
29 Christopher Oezbek, anlegen Gestern hatten wir das ja gehabt. Wollt ihr eure weiterleiten dann verwendet.forward Wir sind jetzt unter Linux nach dem Einloggen genau dort, wo wir diese Datei hinlegen müssen. cd - In das Heimatverzeichnis gehen. joe.forward - Texteditor joe auf Datei.forward anwenden Ziel- addresse eingeben. STRG+K X zum Speichern. Achtung: Zur Sicherheit vorher immer alle abholen, es könnte sein, dass ihr sonst welche verliert.
30 Christopher Oezbek, Die Shell wechseln Standardmäßig ist auf den Accounts die csh (Cee-Shell) für euch ausgewählt. Das kann man aber ändern (deshalb auch einige Fehler auf dem Übungsblatt): joe.cshrc Ändere die Zeile #setenv LIEBLINGSSHELL tcsh zu setenv LIEBLINGSSHELL bash Beim nächsten Einloggen habt ihr dann die Bash zur Verfügung! Das Übungsblatt ist für Bash gemacht und nicht mit Csh.
31 Christopher Oezbek, Die wichtigsten Befehle - Achtung mit man (manual) – Ruft die Hilfe zu einem Befehl auf z.B. Beispie: man rm apropos – Sucht nach einem Befehl, der den Begriff in der Beschreibung enthält. Beispiel: apropos remove Achtung: Da kommt oft zuviel zurück! Sucht ihr einen Befehl, funktioniert der Befehl apropos remove | grep '(1)' besser --help – Gibt oft eine Minimalhilfe zurück. cd (change directory) - Wechselt in ein Verzeichnis. cd.. – Wechselt ein Verzeichnis nach oben. Space!! cd – Wechselt in eurer Heimatverzeichnis.
32 Christopher Oezbek, Mehr Befehle exit – Loggt euch aus. rm (remove) – Löschen cp (copy) – Kopieren mv (move) – Bewegen Mit -r auch jeweils für Unterverzeichnisse. ls (list) – Listet Dateien im Verzeichnis auf. less – Zeigt eine Datei an (Beenden mit q). killall – Beendet alle laufenden Versionen des Befehls. tar -xvzf.tar.gz – Datei entpacken. tar -cvzf.tar.gz – Quelle packen. unzip.zip – Zip-Datei entpacken. zip.zip – Datei mit Zip-Packen.
33 Christopher Oezbek, Noch mehr mkdir (make directory) – Verzeichnis anlegen. rmdir (remove dir) – Verz. löschen. chmod (change permissions) – Zugriffsrechte auf Dateien ändern. quota -v – Freien Festplattenplatz anzeigen. sort – Sortiert die Eingabe. locate – Sucht eine Datei in der Dateidatenbank. find. -iname – Sucht eine Datei im aktuellen Verzeichnis und dessen Unterverzeichnissen. grep -r "Text" * – Sucht den Text in allen Dateien im aktuellen Verzeichnis und den Unterordnern.
34 Christopher Oezbek, Uff – Erst einmal verschnaufen! Keine Angst! Alle wichtigen Befehle stehen auf dem Linux-Spicker. Was kommt noch? Editoren Platzhalter, Jokerzeichen, Wildcards Weiterleitung von Dateien | Pipes Rechtevergabe Sicheres Kopieren zwischen Rechnern (SCP) Auflistung von früheren Befehlen (Historie) Wichtigste Tastenkürzel Sonderzeichen Seht die folgenden Themen auch als Nachschlagewerk an.
35 Christopher Oezbek, Text-Editoren Text-Editoren unter Linux sind für Windows-User oft ein Graus! Sie bestehen aus lauter Tastenkombinationen. joe – Öffnet einen einfachen Texteditor: Beenden STRG+C (funktioniert generell zum Abbrechen) Hilfe STRG+K H Speichern STRG+K X emacs – Der Über-Editor (kann Tetris) Beenden STRG-X C Abbrechen STRG-G (Achtung: STRG-C funktioniert nicht) Speichern STRG-X S vi – Der Unter-Editor Ohne Tutorial nicht zu bedienen. Sorry. Einstieg: man vim Beenden: ": q !" Speichern: ": x !"
36 Christopher Oezbek, Platzhalter Oft ist es umständlich, bei Befehlen alle Dateien einzeln zu benennen. Zur Vereinfachung dienen so genannte Wildcards. Aus DOS-Zeiten kennt man *.* = alle Dateien. Unter Linux geht dies einfach mit *. rm -rf * löscht alle Dateien ohne Fragen. Vorsicht! ;-) Was der Computer macht, ist, dass er * durch keins oder eine Reihe von beliebigen Zeichen ersetzt. Urlaub*.jpg – z.B. Urlaub01.jpg, aber auch Urlaub.jpg ? = genau ein beliebiges Zeichen z.B. hallo.??? löscht hallo.txt, hallo.zip aber nicht hallo.html
37 Christopher Oezbek, Pipes – Rohre für Daten Das ist schon ein fortgeschrittenes Konzept. Damit leitet man Daten zwischen Dateien und Programmen hin und her. date > jetzt.txt Schreibt die Ausgabe des Befehls date (für Datum) in die Datei jetzt.txt und überschreibt den bisherigen Inhalt. date >> jetzt.txt Hängt die Ausgabe an die Datei an. sort -r < jetzt.txt Verwendet den Inhalt von jetzt.txt als Eingabe für sort. find. -iname paper | less Sucht eine Datei mit names paper und leitet das Ergebnis an das Anzeigeprogramm less weiter.
38 Christopher Oezbek, Wer hat das Recht? Wie bekommt man unter Linux raus, wer auf eine Datei zugreifen darf? => ls -l Die wichtigen Informationen stehen ganz am Anfang. Ignoriert das erste Zeichen. Dann folgen 3 mal 3 Zeichen. 3 für den Benutzer, 3 für die Gruppe, 3 für alle anderen. Dabei steht r für Read, w für Write und x für eXecute, d.h. also lesen, schreiben, ausführen. Ändern könnt ihr das mittels des Befehls chmod chmod u+x = Für den Benutzer ausführbar machen u = User/Benutzer, g = group/Gruppe, o = other/Andere
39 Christopher Oezbek, Von Rechner zu Rechner Um von einem Rechner zum nächsten zu gehen: ssh -l Um Dateien einem anderen Benutzer zu kopieren: : :~/ziel/ Beides mal müsst ihr das Passwort des Benutzers eingeben. Achtung beim Kopieren! Es gibt keine Warnung beim Überschreiben
40 Christopher Oezbek, Historie – Was habe ich letztens so getan... Die Bash-Shell merkt sich alle eure Befehle. Anzeigen mit less ~/.bash_history Mit den Pfeiltasten hoch und runter könnt ihr auch direkt zum vorherigen/nächsten Befehl gehen. Praktisch, wenn man faul beim Tippen ist oder ein ziemlicher komplizierter Befehl einem nicht mehr einfällt. Mit STRG-R könnt ihr in der History suchen:
41 Christopher Oezbek, Die wichtigsten Tasten-Kombinationen (I) TAB = Versucht, eure Eingabe zu vervollständigen! ENTER = Ausführen BACKSPACE = Zeichen löschen STRG-D(elete) = nächstes Zeichen löschen (wie Entf) Auf leerer Zeile => ausloggen STRG-K(ill) = bis ans Ende der Zeile löschen STRG-A(nfang) = an den Anfang der Zeile gehen STRG-E(nde) = an das Ende der Zeile gehen STRG-S(croll) = Nicht scrollen STRG-Q(?) = Scrollen wieder anschalten SHIFT-Seite/Bild/Page = Hoch scrollen. SHIFT-Seite/Bild/Page = Runter scrollen
42 Christopher Oezbek, Tasten-Kombinationen (II) PFEIL HOCH = vorherigen Befehl anzeigen PFEIL RUNTER = nächsten Befehl anzeigen STRG-R(everse Search) = in der Befehls-Historie suchen STRG-ALT-BACKSPACE = Graphische Oberfläche (KDE, Gnome, X-Server ) abschießen STRG-C(ancel) = laufendes Programm abbrechen STRG-Z(zz) = Programm in den Hintergrund Zurückholen mit dem Befehl fg (=Foreground) STRG-Einfg = markierten Text aus der Shell kopieren SHIFT-Einfg = Text in die Shell kopieren
43 Christopher Oezbek, Die wichtigsten Sonderzeichen ~(Tilde) Wird ersetzt durch euer Heimatverzeichnis &(Ampersand) Programm im Hintergrund starten |Ausgabe eines Programms an anderes weiterleiten >Ausgabe wird in Datei geschrieben >>Ausgabe wird an Datei angehängt <Eingabe wird aus Datei gelesen ?Ein beliebiges Zeichen *Beliebig viele beliebige oder auch kein Zeichen $Durch Wert der Umgebungsvariable ersetzen ' 'Sonderzeichen nicht umwandeln /Trennzeichen zwischen Verzeichnissen (Linux) ;Führt Befehle nacheinander aus ( rm a.txt; rm b.txt ).Das aktuelle Verzeichnis (.. = das übergeordnete)
44 Christopher Oezbek, ARGL..... Zuviel auf einmal? Alles schon total durcheinander gewirbelt im Kopf? Tastenkürzel, Verzeichnisse, Abkürzung? Wie kann man sich das alles nur merken? ??? Immer locker bleiben. Linux lernt ihr sicher nicht an einem Tag. Aber mit Einsatz und Durchhaltevermögen ist es zu schaffen.
45 Christopher Oezbek, Die Übungen... Erstmal Mittagspause. War ja anstrengend genug. Die Übungsblätter sind zu zweit zu bearbeiten, d.h. Zusammenarbeiten! Paararbeit Abwechseln! Ich will keine Dominanz-Allüren oder Angebereien sehen. Jeder muss mal am Key-Board gewesen sein. Derjenige, der weniger weiß mehr! Mojgan bietet ein Intensiv-Tutorium an, für alle diejenigen, die sich noch sehr unsicher fühlen. K46 Wer keinen Account beantragen konnte bei mir vorbei- kommen.
46 Christopher Oezbek, Wissen und Unwissen Viel wird in der nächsten Zeit davon abhängen, wie viel ihr an neuem Wissen aufnehmen könnt. Dabei gibt es eine wichtige Überlegungen für euch: Wieviel von eurem Erfolg hier an der Uni bestimmt ihr selbst? Wieviel traut ihr euch zu? Aus Erfahrung unterschätzen sich die Damen und überschätzen sich die Herren bei letzterem. Und wichtig ist letztlich nur, dass man sich den Lernerfolg auf die eigene Kappe schreibt.
47 Christopher Oezbek, Danke!!
48 Christopher Oezbek, Lesestoff Am Anfang war die Kommandozeile... Von Neal Stephenson So ziemlich alles, was man so über Betriebssysteme von außen wissen braucht.