2. Lizenz
Lizenz
Dieser Text steht unter einer Creative Commons Attribution-Share Alike 3.0 Germany
Lizenz, siehe http://creativecommons.org/licenses/by-sa/3.0/de/
5. Teil I
Einführung
1 Unix, Linux, . . .
Unix, Linux und Verwandte
• zahlreiche “verwandte” Systeme: Unix, Linux, BSD, . . .
• viele Gemeinsamkeiten in der Anwendung
• Kurs fokussiert auf Linux
• das meiste ist übertragbar
2 Linux Grundlagen
2.1 Multi-User System
Multi-User System
• gleichzeitig von mehreren nutzbar
• getrennte Bereiche (Einstellungen, Anwendungsdaten etc.)
• strikte Trennung von Anwendung und Administration
2.2 Verzeichnisbaum
Verzeichnisbaum
• keine Laufwerksbuchstaben
• Wurzel (root) ist oben, Verzeichnis /
• Verzeichnis in Pfadangaben durch / getrennt: /home/alice/linuxkurs
/
/bin
/boot
/dev
/etc
/home
•
/home/alice
/home/bob
/home/bob/linuxkurs
/home/carol
/lib
...
4
6. Verzeichnisbaum II
• jeder user hat eigenes Homeverzeichnis
– i.d.R. /home/<username>, z.B. /home/alice
– eigene Dateien und Einstellungen
• externe Geräte (z.B. USB-Sticks, externe Festplatten)
– werden in Verzeichnisbaum eingehängt (mount)
– benutzbar wie andere Verzeichnisse
• root bezeichnet
– das Wurzelverzeichnis /,
– den Administrations-Account,
– das Homeverzeichnis des Administrations-Accounts (oft /root)
2.3 Komponenten eines Linux-Systems
Komponenten
• Betriebssystem (Operating System, OS)
– Kernel (Hardwareverwaltung)
– System- und Dienstprogramme (Hardwarenahe Konfiguration,. . . )
• Schnittstelle (User Interface, UI)
– GUI (Graphical User Interface, grafische Oberfläche)
– CLI (Command Line Interface, Kommandozeile, Shell)
• Anwendungen
– grafisch
– kommandozeilenbasiert
• strikte Trennung zwischen OS und UI
Shell
• Schnittstelle zum Betriebssystem
• Vielzahl von shells existiert, z.B.
– sh Bourne Shell
– bash Bourne Again Shell (im Kurs verwendet)
– csh, tcsh,. . .
• eingetippte Befehle werden sofort ausgeführt
– Anwendungen ausführen/starten
– shell-eigene Befehle
– shell-eigene Programmiersprache
5
7. Philosophie
Für jede Aufgabe das passende Programm
• kleine, spezialisierte Tools statt riesiger rundum-sorglos-Programme
• flexibel kombinierbar
3 Warum die Kommandozeile nutzen?
Warum die Kommandozeile nutzen?
• keine grafische Oberfläche nutzbar
– nicht installiert (z.B. Server)
– nicht benutzbar (abgestürzt, kaputtkonfiguriert,. . . )
• Anwendung existiert “nur” für Kommandozeile
• Anwendungen interaktiv kombinieren
• Ressourcen schonen, Bootvorgang verkürzen
• Effizienz und Arbeitsersparnis
– Beispiel: kopiere aus einem Verzeichnis mit 1000 Dateien diejenigen, deren
Name “salzburg” enthält
6
8. Teil II
Erste Schritte
4 Wie komme ich auf die Kommandozeile?
Auf die Kommandozeile wechseln
Aus GUI heraus
• Terminal bzw. Konsole starten
• zusätzliche Sitzung ohne GUI starten
– STRG+ALT+F1
– weitere Sitzungen mit STRG+ALT+F2, STRG+ALT+F3,. . .
– zurück zur grafischen Sitzung: STRG+ALT+F7
Schon da?
• Eingabeaufforderung (Prompt) erscheint, z.B.kpuschke@localhost:˜
• ggf. in die bash wechseln
5 Erste Befehle
Vorsicht
Achtung
Groß- und Kleinschreibung sowie Leerzeichen sind relevant!
Erste Befehle
• whoami - Wer bin ich? Mit welchem username bin ich eingeloggt?
• hostname - Auf welchem Rechner befinde ich mich?
• pwd - In welchem Verzeichnis bin ich? (print working directory)
Aufgaben
Erste Schritte
pwd, whoami, hostname
7
9. Teil III
Dateien und Verzeichnisse verwalten
6 Unterwegs im Verzeichnisbaum
6.1 Verzeichnis wechseln
Navigation im Verzeichnisbaum
Verzeichnis wechseln
cd VERZEICHNIS - change directory
Aufgaben
Verzeichnis wechseln
cd, Pfadangaben
Verzeichnis wechseln
• cd VERZEICHNIS wechselt in Verzeichnis <Verzeichnis>
• cd wechselt ins eigene Homeverzeichnis
• cd - wechselt ins vorher benutzte Verzeichnis
6.2 Pfadangaben
Pfadangaben
• absoluter Pfad
– beginnt im Rootverzeichnis /
– Beispiel: /home/alice/linuxkurs/aufgaben
• relativer Pfad
– relativ zum aktuellen Verzeichnis
– beginnt ohne “/”
– aktuelles Verzeichnis: .
– nächsthöheres Verzeichnis: ..
Pfadangaben - Beispiele
Ausgehend von /home/alice/linuxkurs/ entsprechen sich jeweils
aufgaben
./aufgaben
/home/alice/linuxkurs/aufgaben
8
10. ../mysqlkurs/aufgaben
/home/alice/mysqlkurs/aufgaben
../../bob/linuxkurs
/home/bob/linuxkurs
6.3 Verzeichnisinhalt ausgeben
Verzeichnisinhalt
Verzeichnisinhalt ausgeben
ls VERZEICHNIS list directory contents (historisch: list segment)
Aufgaben
Verzeichnisinhalt ausgeben
ls
Verzeichnisinhalt
• ls VERZEICHNIS Inhalt von <Verzeichnis>
• ls Inhalt des aktuellen Verzeichnisses
• ls - -all VERZEICHNIS
ls -a <Verzeichnis>
auch versteckte Dateien anzeigen
(Dateiname beginnt mit .)
• ls -l VERZEICHNIS
ls - -format=long <Verzeichnis>
long format, mehr Infos
Verzeichnisinhalt - ls -l
-rw-r- -r- - 1 alice users 2472 2009-03-14 17:54 kurs.txt
drwxr-xr-x 2 alice users 4096 2009-05-23 10:06 Videos
• Rechte
• Anzahl hard links (Datei) oder Unterverzeichnisse (Verzeichnis)
• owner
• group
• Grösse in Bytes
• letzte Änderung
• Name
9
12. Teil IV
Arbeiten mit der Shell
8 Befehlssyntax - Argumente und Optionen
Argumente
• Befehle können auf Argumente wirken
• manche Befehle verarbeiten keine Argumentez.B. pwd
• manche Argumente sind zwingend z.B. Verzeichnisname bei mkdir
• manche Argumente sind optional z.B. Verzeichnis bei cd oder zweiter Verzeich-
nisname bei mkdir
• ggf. mehrere Argumente erforderlichz.B. Quelle und Ziel bei mv
Optionen
• Verändern die Wirkung von Befehlen
rm -r
• Syntax uneinheitlich, gängig sind
– einzelner Buchstabe mit minus davor rm -r kurs
– Wort mit doppeltem minus rm - -recursive kurs
– Key-Value mit = rm - -interactive=always
• teilweise auch nur mit einfachem minus
• Optionen können z.T. kombiniert werden
– oft kann dann abgekürzt werden ls -al statt ls -a -l
Aufgaben
Befehlssyntax und Arbeitsweisen
Befehle, Optionen und Argumente, praktische Tips
9 Unterstützung bei der Arbeit
9.1 Arbeitserleichterungen
Arbeitserleichterungen
• Blättern mit Shift+PageUp/Down
• Befehlshistorie mit Cursortasten
• Vervollständigung mit Tab
• Copy & Paste:
– Markieren & per mittlerer Maustaste einfügen
– im Terminal oft: STRG+Shift+C, STRG+Shift+V
11
13. 9.2 Hilfe finden
Hilfe
• Befehlssyntax abfragen:Optionen -h oder - -help
• manpage man befehl
• info befehl
• perldoc, texdoc,...
• ...
• Notation: Angaben in eckigen Klammern sind optional
9.3 Wildcards und Klammererweiterung
Klammererweiterung
• Ausdruck in geschweiften Klammern wird zu mehreren Dateinamen erweitert
• cp /home/alice/{foo,bar} neuerordner entspricht
cp /home/alice/foo /home/alice/bar neuerordner
Wildcards
• Platzhalter für Dateioperationen
• Beispielanwendung: Lösche alle Dateien, deren Name mit linux beginnt
• je nach shell: ˜ expandiert zum eigenen Homeverzeichnis
˜ /linuxkurs entspricht /home/<mein_username>/linuxkurs
• ? - genau ein beliebiges Zeichen
• * - beliebig viele beliebige Zeichen
• ! - Verneinung
• [] - Characterclass (“oder”)
• versteckte Dateien werden ggf. ignoriert
Wildcards Beispiele
• * - alle Dateien, die nicht versteckt sind
• .* - alle versteckten Dateien
• f* - alle Dateien, deren Name mit f beginnt
• f?o - z.B. foo,flo,f.o
• f[ol]o - foo und flo
• f[!l]o - foo, fio,... aber nicht flo
• [0-9]* - Dateiname beginnt mit Ziffer
12
14. Aufgaben
Arbeitserleichterungen und Hilfe/Doku
Wildcards, Klammererweiterung, manpages
Wildcards Gefahren
Welche Dateien werden gelöscht?
rm -rf .*
Vorsicht!
In Kombination mit -r paßt .* auf ../*, d.h. auch auf höhergelegende Verzeichnis-
se!
10 Programme steuern
Programme steuern Starten und Beenden
• Programm starten mit zugehörigem Befehl emacs
– Programm im Vordergrund (Shell “blockiert”)
• Programm im Hintergrund starten mit &
emacs &
– Shell nicht “blockiert”
• Programm beenden
– mit programm-eigenem Befehl
– STRG+C
Programme steuern
• Programm im Vordergrund anhalten/unterbrechen
STRG+Z
• im Vordergrund weiterlaufen lassen
fg
• im Hintergrund weiterlaufen lassen
bg
• was läuft im Hintergrund?
jobs
Programme steuern
Hinweis
Die Darstellung der Programmsteuerung ist sehr vereinfacht. Wer mehr wissen möchte,
sollte sich über Prozesse und Threads informieren.
Aufgaben
Programme steuern
Aufrufen, Unterbrechen, Beenden, Vorder- und Hintergrund
13
15. Teil V
Inhalt von Textdateien
11 Inhalte ausgeben
Textdatei ausgeben
• cat gibt Inhalt der Datei aus
• less oder more zum Durchblättern (pager)
• head gibt Anfang der Datei aus
• tail gibt Ende der Datei aus
• sort sortierte Ausgabe
• wc word count - Zeichen, Zeilen oder Wörter zählen
12 Inhalte bearbeiten
Textdatei bearbeiten
• klein und einfach: nano, pico
• mittelklasse: joe, jed
• komplex, aber mächtig: emacs, vim
• auf lange Sicht lohnend, einen mächtigen Editor zu beherrschen
13 Inhalte durchsuchen - Reguläre Ausdrücke
Reguläre Ausdrücke Zur Suche in Text
• Platzhalter
– . - ein beliebiges Zeichen
f.o passt auf foo,flo,f9o aber nicht fouo
– [mehrereZeichen] - eines der genannten Zeichen
f[aei]o passt auf fao, feo, fio aber nicht faeo
• Wiederholungen
– * - beliebig oft (oder gar nicht)
fo* passt auf foo, fooo, f, fooooooo
– ? - einmal oder gar nicht
fo?a passt auf fa, foa, aber nicht fooa
14
16. Dateien durchsuchen grep
Dateien durchsuchen
grep SUCHMUSTER DATEI(EN)
Beispiel
grep bash kursmaterial.txt
grep ’alice and bob’ /home/alice
grep ali.* bob.txt
Aufgaben
Textdateien
Inhalte von Textdateien ausgeben und ändern, Textdateien durchsuchen, Reguläre Aus-
drücke
15
17. Teil VI
Ein- und Ausgabe
14 Ein- und Ausgabe
14.1 Tastatureingabe
Tastatureingabe Statt Datei einzulesen
• statt Dateinamen - verwendet (je nach Befehl)
sort -
• Dateinamen weggelassen (je nach Befehl)
wc
• shell erwartet nun Tastatureingabe
• STRG+d entspricht Dateiende
14.2 Ein- und Ausgabe umleiten
Ein- und Ausgabe umleiten
• > - Ausgabe in Datei schreiben
– ls /home/alice/ > alicekram.txt
– vorhandene Datei wird überschrieben
• >> - Ausgabe an Datei anhängen
• | - Pipe: Ausgabe eines Kommandos als Eingabe eines weiteren Kommandos
– ls /home/alice | grep bob
• < - Eingabe aus Datei lesen
– sort < foo.txt
– mysql < dump.sql
• nach /dev/null geleitet: unwiderbringlich verschwunden
14.3 Deskriptoren
Datenströme mit Deskriptoren umleiten
Datenkanäle
Kanal Deskriptor default
Standardeingabe (stin) 0 Tastatur
Standardausgabe (stdout) 1 Bildschirm
Standardfehlerausgabe (stderr) 2 Bildschirm
• Kanal umleiten: n>
mv foo bar 2>error.err
16
18. • Kanäle bündeln: n>m&
sort foo 2> bar.txt 1>2&
• erst umleiten, dann bündeln
Aufgaben
Ein- und Ausgabe
Ein- und Ausgabe umleiten, Deskriptoren
17
19. Teil VII
Dateien und Verzeichnisse verwalten II
15 Rechteverwaltung
Dateirechte Was für Rechte gibt es
• Dateien
– r - lesen (read)
– w - schreiben (write)
– x - ausführen (execute)
• Verzeichnisse
– r - Verzeichnisinhalt auslesen
– w - ins Vezeichnis schreiben
– x - ins Verzeichnis wechseln
Dateirechte Wer hat Rechte?
• user sind in Gruppen groups organisiert
• jede Datei hat einen user als owner
• zu jeder Datei gehört eine Gruppe
• unterschiedliche Rechte für
– user (u) (d.h. owner)
– group (g)
– others (o)
Dateirechte Notation
• nacheinander für owner, group, others
• - bedeutet: Recht nicht gegeben
• Beispiel: rwxr-xr-x
owner darf r, w und x, group und others nur r und x
Dateirechte ändern
Rechte ändern
chmod MODUS DATEI(EN)
• Wer (ugo) bekommt/verliert (+-) welche Rechte (rwx)?
– chmod ug+r foo.txt
user und group erhalten Leserechte
– chmod o-w bar.txt
others verlieren Schreibrechte
18
20. Aufgaben
Dateirechte
Dateirechte verwalten
16 Links
Links hard links und sym links
• hard link: mehrere Namen für eine Datei
– viele Stolperfallen
• symbolic link, sym link, soft link: Pointer auf einen Namen
– verlinkte Datei/Verzeichnis verschoben/gelöscht: kein update des links
– sym link kann andere Rechte haben als verlinkte Datei/Verzeichnis
– sehr praktisch im Alltag
Sym Links
sym link anlegen
ln -s ZIEL LINKNAME
sym link entfernen
rm LINKNAME
Aufgaben
Links
Symlinks
19