nutzen? Unix, Linux und Verwandte zahlreiche “verwandte” Systeme: Unix, Linux, BSD, . . . viele Gemeinsamkeiten in der Anwendung Kurs fokussiert auf Linux das meiste ist übertragbar K. Puschke Kommandozeilengrundlagen
nutzen? Multi-User System Verzeichnisbaum Komponenten eines Linux-Systems Einführung 1 Unix, Linux, . . . 2 Linux Grundlagen Multi-User System Verzeichnisbaum Komponenten eines Linux-Systems 3 Warum die Kommandozeile nutzen? K. Puschke Kommandozeilengrundlagen
nutzen? Multi-User System Verzeichnisbaum Komponenten eines Linux-Systems Multi-User System gleichzeitig von mehreren nutzbar getrennte Bereiche (Einstellungen, Anwendungsdaten etc.) strikte Trennung von Anwendung und Administration K. Puschke Kommandozeilengrundlagen
nutzen? Multi-User System Verzeichnisbaum Komponenten eines Linux-Systems 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) K. Puschke Kommandozeilengrundlagen
nutzen? Multi-User System Verzeichnisbaum Komponenten eines Linux-Systems 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 K. Puschke Kommandozeilengrundlagen
nutzen? Multi-User System Verzeichnisbaum Komponenten eines Linux-Systems Philosophie Für jede Aufgabe das passende Programm kleine, spezialisierte Tools statt riesiger rundum-sorglos-Programme flexibel kombinierbar K. Puschke Kommandozeilengrundlagen
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 K. Puschke Kommandozeilengrundlagen
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 K. Puschke Kommandozeilengrundlagen
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) K. Puschke Kommandozeilengrundlagen
Verzeichnisinhalt ausgeben Verzeichnis wechseln cd VERZEICHNIS wechselt in Verzeichnis <Verzeichnis> cd wechselt ins eigene Homeverzeichnis cd - wechselt ins vorher benutzte Verzeichnis K. Puschke Kommandozeilengrundlagen
Verzeichnisinhalt ausgeben Verzeichnisinhalt Verzeichnisinhalt ausgeben ls VERZEICHNIS list directory contents (historisch: list segment) K. Puschke Kommandozeilengrundlagen
Verzeichnisinhalt ausgeben 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 K. Puschke Kommandozeilengrundlagen
Verzeichnisinhalt ausgeben 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 K. Puschke Kommandozeilengrundlagen
steuern Arbeiten mit der Shell 8 Befehlssyntax - Argumente und Optionen 9 Unterstützung bei der Arbeit 10 Programme steuern K. Puschke Kommandozeilengrundlagen
steuern Argumente Befehle können auf Argumente wirken manche Befehle verarbeiten keine Argumente z.B. pwd manche Argumente sind zwingend z.B. Verzeichnisname bei mkdir manche Argumente sind optional z.B. Verzeichnis bei cd oder zweiter Verzeichnisname bei mkdir ggf. mehrere Argumente erforderlich z.B. Quelle und Ziel bei mv K. Puschke Kommandozeilengrundlagen
steuern 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 K. Puschke Kommandozeilengrundlagen
steuern Arbeitserleichterungen Hilfe finden Wildcards und Klammererweiterung Arbeiten mit der Shell 8 Befehlssyntax - Argumente und Optionen 9 Unterstützung bei der Arbeit Arbeitserleichterungen Hilfe finden Wildcards und Klammererweiterung 10 Programme steuern K. Puschke Kommandozeilengrundlagen
steuern Arbeitserleichterungen Hilfe finden Wildcards und Klammererweiterung 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 K. Puschke Kommandozeilengrundlagen
steuern Arbeitserleichterungen Hilfe finden Wildcards und Klammererweiterung Hilfe Befehlssyntax abfragen: Optionen -h oder - -help manpage man befehl info befehl perldoc, texdoc,... . . . Notation: Angaben in eckigen Klammern sind optional K. Puschke Kommandozeilengrundlagen
steuern Arbeitserleichterungen Hilfe finden 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 K. Puschke Kommandozeilengrundlagen
steuern Arbeitserleichterungen Hilfe finden Wildcards und Klammererweiterung 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 K. Puschke Kommandozeilengrundlagen
steuern Arbeitserleichterungen Hilfe finden Wildcards und Klammererweiterung 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 K. Puschke Kommandozeilengrundlagen
steuern Arbeitserleichterungen Hilfe finden Wildcards und Klammererweiterung Aufgaben Arbeitserleichterungen und Hilfe/Doku Wildcards, Klammererweiterung, manpages K. Puschke Kommandozeilengrundlagen
steuern Arbeitserleichterungen Hilfe finden Wildcards und Klammererweiterung Wildcards Gefahren Welche Dateien werden gelöscht? rm -rf .* Vorsicht! In Kombination mit -r paßt .* auf ../*, d.h. auch auf höhergelegende Verzeichnisse! K. Puschke Kommandozeilengrundlagen
steuern Arbeiten mit der Shell 8 Befehlssyntax - Argumente und Optionen 9 Unterstützung bei der Arbeit 10 Programme steuern K. Puschke Kommandozeilengrundlagen
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 K. Puschke Kommandozeilengrundlagen
steuern 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 K. Puschke Kommandozeilengrundlagen
steuern Programme steuern Hinweis Die Darstellung der Programmsteuerung ist sehr vereinfacht. Wer mehr wissen möchte, sollte sich über Prozesse und Threads informieren. K. Puschke Kommandozeilengrundlagen
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 K. Puschke Kommandozeilengrundlagen
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 K. Puschke Kommandozeilengrundlagen
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 K. Puschke Kommandozeilengrundlagen
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 K. Puschke Kommandozeilengrundlagen
- lesen (read) w - schreiben (write) x - ausführen (execute) Verzeichnisse r - Verzeichnisinhalt auslesen w - ins Vezeichnis schreiben x - ins Verzeichnis wechseln K. Puschke Kommandozeilengrundlagen
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) K. Puschke Kommandozeilengrundlagen
(ugo) bekommt/verliert (+-) welche Rechte (rwx)? chmod ug+r foo.txt user und group erhalten Leserechte chmod o-w bar.txt others verlieren Schreibrechte K. Puschke Kommandozeilengrundlagen
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 K. Puschke Kommandozeilengrundlagen