UNIX - LINUX
Transcription
UNIX - LINUX
Struktur und Größe von Dateien • Unix-Dateien haben keine Struktur - „featureless byte stream“ • Interpretation hängt von den Programmen ab • Speicherung in festen Blöcken von Bytes ( z.B. 512, 1024, 4096) UNIX - LINUX – Anzeige des Dateisystemzustandes mit df teilweise in Blocks – Verschnitt!: Auch kleine Dateien verbrauchen einen ganzen Block • Dateinamen sind unstrukturiert • Länge der Dateinamen 255 Zeichen oder größer Dr. Michael Höding Unix-Linux Dateisystem 1 Dateiarten unter Unix Dr. Michael Höding Unix-Linux Dateisystem 2 Unix Dateihierarchie System / (root) • • Ordinary File: reguläre Dateien, einfache Dateien, gewöhnliche Dateien Special Files: spezielle Dateien, insbesondere Gerätedateien – z. B.: /dev/hda oder /dev/hda1 – Gleicher Mechanismus zum Lesen und Schreiben wie bei ordinary files – Unterscheidung zwischen Byte-weisem und Block-weisem Zugriff – Anlegen mit mknod, löschen mit rm • • bin unix cat dev lp – Kommunikation, Synchronisation – „löschendes Lesen“ Unix-Linux Dateisystem 3 Unix-Directories im Detail home lib ron lena knut mail plan Hello.c tmp usr ls Directory: Dateiverzeichnis, Dateikatalog Named Pipes: benannte Datenröhren Dr. Michael Höding etc Dr. Michael Höding tty Unix-Linux Dateisystem 4 Unix-Directories im Detail • /sbin: system binaries Systemprogramme und Systemkommandos für die Systeminitialisierung und Systemverwaltung durch den Administrator, z.B. Anlegen von Nutzern, Drucker einrichten – Init, yas, shutdown • /dev: Gerätedateien, teilweise in Unterverzeichnissen • /etc: Konfigurationsdateien, • /usr: (unix system resources) – – – – /usr/bin: weitere ausführbare Programme und Kommandos /usr/sbin: weitere Systemkommandos /usr/include: C-Header Dateien /usr/share: gemeinsame Ressourcen, z. B. Dokumentation, man-Pages – /usr/lib: Konfigurationsdateien und Bibliotheken für die Programmentwicklung – z.B. passwd • /opt: für eigene Anwendungssoftware – z. B. Oracle-DBMS • /bin: ausführbare Programme und Kommandos Dr. Michael Höding Unix-Linux Dateisystem 5 Dr. Michael Höding Unix-Linux Dateisystem 6 1 Unix-Directories im Detail Directories im Detail: spez. Linux • /bin: elementare Linux-Kommandos • /boot: Dateien des LILO-Bootmanagers und evtl. alternative Kernel • /mnt: externe Dateisysteme (z.B. DOS, Windows) • /export: exportierte Teile des Dateisystems • /home: Home-Directories der „echten“ Nutzer • /proc: Pseudo-Dateien des speziellen ProzessDateisystems • /var: veränderliche Systemdateien – – – – – Oft aber /windows oder /cdrom • • • • • • /var/adm: Protokolle der Systemadministration /var/spool: Warteschlangen des Drucksystems /var/log: Sonstige Logdateien /var/mail: Mailboxen • /tmp: temporäre Dateien (Achtung: teilweise Automatisches Löschen) Dr. Michael Höding Unix-Linux Dateisystem 7 Dateisystem: Begriffe Dr. Michael Höding Unix-Linux Dateisystem 8 Dateisystem: Begriffe (2) • Root-Directory „/“: Spitze oder Wurzel • working directory oder current directory: momentaner „Aufenthaltspunkt“ im Dateibaum • login directory: Aufenthaltspunkt nach dem einloggen (siehe /etc/passwd) • home directory: eindeutiger und eigener Platz für jeden Benutzer – – – – /root: Home des root-Nutzers /tmp -> /var/tmp /usr/X11: X11-System /usr/scr: Linux-Quellen /usr/man: Manual-Pages /usr/spool: link auf /var/spool • Pfadname: – Absoluter Pfadname: Vollständiger Name beginned von Root / – Relativer Pfadname: beginnend vom working directory • . (Punkt): das Verzeichnis selbst • .. (zwei Punkte): das übergeordnete Verzeichnis • z. B.: ../../var/log/httpd/access.log • Dateinamen: Dateinamen ohne Pfad Umgebungsvariable: HOME Mit cd (ohne Argument) kommt man ins HOME ~ bezeichnet das eigene home directory ~schmidt bezeichnet das home directory von schmidt Dr. Michael Höding Unix-Linux Dateisystem 9 absolute vs. relative Pfadnamen Dr. Michael Höding Unix-Linux Dateisystem 10 Zugriffsrechte / (root) /home/lena/plan unix cat bin dev etc home lib • Benutzerklassen tmp usr ls lp • Softwareentwickler • Studenten, Professoren • Gruppen werden vom Systemadministrator verwaltet tty ron lena knut mail plan Hello.c – Others: aller Benutzer, d.h. der „Rest“ der Welt – All: Alle Benutzerklassen zusammen ../../bin/ls Dr. Michael Höding Unix-Linux – User: Eigentümer, Benutzer, die eine Datei einrichten bzw. nachträglich als Eigentümer eingetragen werden – Group: Gruppe, jeder Benutzer gehört (mindestens) einer Gruppe an Dateisystem 11 Dr. Michael Höding Unix-Linux Dateisystem 12 2 Zugriffsrechte Dateien erstellen und editieren • Arten: Datei Editieren – Read: lesender Zugriff • Directory darf man anzeigen, auflisten auf dem Bildschirm touch neue.Datei – Write: schreibender Zugriff • Im Directory darf man schreiben – Execute: Ausführen Datei Editieren • In das Directory darf man wechseln/navigieren vi beispiel.wetter pico beispiel.wetter emacs beispiel.wetter Dr. Michael Höding Unix-Linux Dateisystem 13 Wichtige Dateikommandos: ls – ls /var : liste Inhalt von /var auf – ls p* : Listet Inhalt aller Directories beginnend mit p auf – zahlreiche Optionen -d: Directory statt Inhalt -t: zeitlich geordnet -r: rekursiv geordnet -a: alle Dateien, auch Punkt-Dateien -s: Size in Blöcken -h: Human readable Dr. Michael Höding Unix-Linux Dateisystem 14 • mkdir (make directory): Anlegen eines Verzeichnis • rmdir (remove directory):Löschen eines Verzeichnis – Verzeichnis muss leer sein – Wildcards (*) möglich • rm (remove): Datei löschen – Auch Verzeichnisse mit Inhalt löschbar • rm –r testVerzeichnis: löscht ganzen Dateibaum • -f : „force“ Löschen ohne Nachfragen • -i : „interactive“ Nachfragen vor dem Löschen Dateisystem 15 Wichtige Dateikommandos: cat, cp, ... Dr. Michael Höding Unix-Linux Dateisystem 16 Wichtige Dateikommandos: ln • ln (link files): „Linken“ von Dateien zur Abspeicherung unter verschiedenen Namen bzw. an verschiedenen Orten • cat (concatenate): Anzeigen von Dateien • cp (copy): Kopieren von Dateien – – – – Unix-Linux Wichtige Dateikommandos: mkdir,... • ls: List contents of directory • • • • • • Dr. Michael Höding cp Datei1 Datei2 cp Datei1 Verzeichnis -r: rekursives Kopieren ganzer Dateibäume -i: Rückfrage vor dem Überschreiben einer Zieldatei – Beispiel: Kaffeekasse – Vorteil: kein langer Pfadname – Beispiel: Versionsverwaltung, alternative Versionen – ln datei1 datei2 • mv (move files): Umbenennen einer Datei, Verschieben von Dateien – mv datei1 datei2 – mv datei(en) verzeichnis • Hard-Links vs. Soft-Links: Symbolische Links – Soft-Links erlauben Verweise auf Verzeichnisse – Links über „Plattengrenzen“ möglich – ln –s verzeichnis1 verzeichnis2 • Zugriffsrechte werden überprüft Dr. Michael Höding Unix-Linux Dateisystem 17 Dr. Michael Höding Unix-Linux Dateisystem 18 3 Wichtige Dateikommandos: chmod Wichtige Dateikommandos: chmod • chmod (change mode): Ändern der Zugriffsrechte • Zwei Modi: absolut vs. symbolisch – chmod 700 nurIch.txt – chmod u+wxr,go= nurIch.txt • Symbolischer Mode: chmod [ugoa]operator[rwxslt] datei(en) • Benutzerklassen – – – – • Beispiel für absolute Modus – – – – 0400: Lesen für Eigentümer 0200: Schreiben für Eigentümer 0100: Ausführen für Eigentümer 4000: set-user-id – beim Ausführen bekommt der Benutzer die Eigentümerrechte – 0777: Alle dürfen Alles Dr. Michael Höding Unix-Linux • Option –R : rekursive Rechtevergabe – su hoeding : Anmelden als hoeding ohne Ausführen des login – su – hoeding: mit Ausführen des Login Dateisystem 21 Wichtige Dateikommandos: Drucken Dr. Michael Höding Unix-Linux Dateisystem 22 Wichtige Dateikommandos: wc, tail, diff • Ausgabe von Dateien auf den Drucker: lpr Dateiname • Anschauen der Warteschlange: lpq • Löschen von Druckaufträgen: lprm • hoeding@fwil588:~ > lpq no entries hoeding@fwil588:~ > lpr hcclogo_v6.jpg hoeding@fwil588:~ > lpq lp is ready and printing Rank Owner Job Files Total Size active hoeding 29 hcclogo_v6.jpg 33331 bytes hoeding@fwil588:~ > lprm 29 dfA029fwil588 dequeued cfA029fwil588 dequeued Unix-Linux Dateisystem 20 – Nur der Alt-Eigentümer kann Neu-Eigentümer setzen – chmod u=rwxs,g=rx,o=r datei – (wie chmod 4754 datei) Dr. Michael Höding Unix-Linux • chgrp = change group: Setzen der Gruppe Bsp: chgrp users testDatei • Wichtige Option: -R für rekursives Setzen • umask : Anzeigen/Setzen der Dateikreierungsmaske • su = set user : Ändern der Identität • Beispiel: Unix-Linux Dr. Michael Höding • chown = change owner: Setzen des Dateieigentümers chown nameNeu:gruppeNeu Dateiname(n) Bsp: chown hoeding:users testDatei r : Leserecht w: Schreibrecht x: Ausführungsrecht s: set-user-bit l: für exklusives Lesen- und/oder Schreiben Dr. Michael Höding – + : Recht hinzufügen – - : Recht entziehen – =: Recht absolut setzen Wichtige Dateikommandos: chown,... • Rechte – – – – – • Operatoren Dateisystem 19 Wichtige Dateikommandos: chmod u = user, Eigentümer g = Gruppe o = others, Alle a = alle Benutzerklassen Dateisystem 23 • wc = Wordcount: Zählen von Zeichen, Wörtern und Zeilen einer Datei (mehrerer Dateien) • tail = Ausgabe des Dateiendes (10 Zeilen) – Nützlich für die Analyse von Zugriffsstatiken, Log-Dateien – nützlich für Log-Dateien, laufende Kontrolle z.B. Web -Server – Option –f (follow) zeigt angehängte Daten beim Dateiwachstum – Option –n spezifiziert anzuzeigende Zeilenzahl • • head = Anfang einer Datei (seltener notwenig) diff = Differenz: Vergleich zweier Dateien – nützlich um unterschiedliche Versionen einer Datei zu erkennen – primär für Textdateien • cmp = Compare: Binärer (Byte-weiser) Vergleich Dr. Michael Höding Unix-Linux Dateisystem 24 4 Wichtige Dateikommandos in Analogie zu Datenbanken Wichtige Dateikommandos: sort • Operationen relationaler Datenbanken: – – – – – – Selektion: Auswahl von Zeilen Projektion: Auswahl von Spalten Sortierung Verbund – Join Vermischung: Union Aggregationsoperationen: sum, count, avg, min, max • Beispielanfrage select Wettertyp, Wetterwert, Einheit from Wetter where Ort= `Brandenburg‘ and Datum like `%-09-2001‘ order by Wettertyp; Dr. Michael Höding Unix-Linux Dateisystem 25 Wichtige Dateikommandos: sort Unix-Linux Dateisystem 27 Wichtige Dateikommandos: grep • • • • grep = get regular Expression Auswahl bestimmter Zeilen (DBS: Selektion) egrep, fgrep (-e bzw, –f) Syntax: grep [optionen] regulärer-ausdruck [datei(en)] Wichtige Optionen Einfache Beispiele – grep Brandenburg neues.wetter – grep Wind neues.wetter – grep Tempe neues.wetter > neues.temperatur Dr. Michael Höding Unix-Linux -d : lexikographisches Sortieren -f : Groß-/Kleinschreibung ignorieren -i : nicht druckbare Zeichen ignorieren -n: numerisch sortieren -r: (rekursiv) absteigend sortieren -tz : Trennzeichen z als Trenner zwischen den Feldern -o: Sortiert die Datei selbst, nicht die Ausgabe Dr. Michael Höding Unix-Linux Dateisystem 26 • Beispiele zur Wetterdatei: – Einfache Sortierung (nach erster Spalte, d.h. Ortsname) sort neues.wetter – Sortierung nach Wettertyp (4. Spalte), mit Trennzeichen | sort –t\| +3 –4 neues.wetter – Sortierung nach 1. Wettertyp und 2. Wert (numerisch) sort –t\| +3 –4 +4n –5 neues.wetter – Sortierung nach Datum (numerisch und bestimmte Zeichen) sort –t\| +1.3n –2.5 +1.1n –2.3 neues.wetter • hier ist das Jahr nicht berücksichtigt! – Rekursive Sortierung: neueste Werte am Anfang mit head sort –t\| +1.3nr –2.5 +1.1nr –2.3 neues.wetter | head –n3 – Sortieren der Datei selbst (nach Datums -String) sort –t\| +2 –o neues.wetter neues.wetter Dr. Michael Höding Unix-Linux Dateisystem 28 Exkurs: Reguläre Ausdrücke – -c = count : nur die Anzahl (nicht der Inhalt) der „ge-match-ten“ Dateien wird ausgegeben – -i = ignore: Groß- und Kleinschreibung wird ignoriert – -l : nur Namen der Dateien ausgeben, die Suchstring enthalten • – – – – – – – Wichtige Dateikommandos: sort • Sortierschlüssel definiert Spalten mit Optionen als Sortierkriterium • Syntax: +m[.n] Beginn des Sortierfelds beim n+1-ten Zeichen des m+1-ten Feldes -k[.l] Ende des Sortierfelds: l-te Zeichen des k-ten Feldes • Optionen für jeden Schlüsselteil anwendbar, z.B. r • Mehrere Schlüssel „kaskadierbar“ Dr. Michael Höding • sort : Sortierung von Textdateien in die Ausgabe sort [optionen] [sortierschlüssel] [datei(en)]• Optionen: Dateisystem 29 • Regulärer Ausdruck: Grammatik zur Bildung von Strings 1. Metazeichen mit Sonderbedeutung: . * + ? ( ) [ ] \ ^ $ 2. Einfacher regulärer Ausdruck: 1. Einfaches Zeichen, aber kein Metazeichen 2. Metazeichen \, um Sonderbedeutung auszuschalten, z.B. \* 3. ^ steht für den Anfang der Zeile, wenn am Anfang des reg. Ausdrucks 4. $ steht für das Ende der Zeile, wenn als letzte Zeichen des reg. Ausdrucks 5. . (Punkt/Dot) steht für jedes beliebige Zeichen außer Newline 6. Eine Klasse von Zeichen: z.B. [ABC] deckt eines der Zeichen ab, hier A, B oder C 7. Eine Klasse von Zeichen mit Abkürzungen: z.B. [a-z] deckt eines der Zeichen ab, hier alle Kleinbuchstaben 8. Eine Komplement-Klasse von Zeichen, z.B. [^0-9] deckt alle Zeichen außer Ziffern und Newline ab Dr. Michael Höding Unix-Linux Dateisystem 30 5 Exkurs: Reguläre Ausdrücke Exkurs: Reguläre Ausdrücke, egrep • 3. Operatoren um zusammengesetzte reguläre Ausdrücke aufzubauen – 1. Alternation: A|B deckt A oder B ab 2. Konkatenation: AB deckt A unmittelbar gefolgt von B ab 3. null-oder-beliebig-viele: A* deckt kein, ein oder mehrere A ab 4. ein-oder-beliebig-viele: A+ deckt ein oder mehrere A ab (wie AA*) 5. null-oder-eins: A? deckt kein oder ein A ab 6. runde Klammer: (r) deckt r ab, hebt Prioritäten auf • • Beispiele: – – • Reguläre Ausdrücke und Perl: – – Prioritäten: | Konkatenation (*+?) () Alle möglichen (?) Meiers egrep `M[ea][iy]e?r` namensliste Alle Angaben zu Wind in Berlin egrep `Berlin[a-zA-Z0-9\.\|\:]+Wind` neues.wetter Falsch: `egrep Berlin[.]*Wind` neues.wetter Aller Werte zum September egrep `[0-9]+\.09\.[12][0-9][0-9]+‘ neues.wette Matching mit „longest leftmost“ - Regel Zusätzlich Matching von Zeichenkettenteilen mit runden Klammern: Abbildung auf Variable $1, $2, .... Matching von Ort und September-Datum /([^\|])\|[0-9]+\.09\.[12][0-9][0-9]+‘/ für gefundene Zeilen ist $1 mit dem Ort initialisiert • Dr. Michael Höding Unix-Linux Dateisystem 31 Wichtige Dateikommandos: cut – -dz : Trennzeichen zwischen Feldern – -f felder : zu projizierende Felder – -c spalten: zu projezierende Spalte, hier sind Spalten die absoluten Positionen von Einzelzeichen in jeder Spalte – -s: Unterdrückung von Zeilen ohne Feldtrenner • Beispiele: – Nur Ort, Wert,Typ und Einheit cut –d\| -f 1,3-5 neues.wetter – Nur Temperaturdaten ausgeben cut –d\| -f 1-3,5,6 neues.temperatur > neues2.temperatur Unix-Linux Dateisystem 33 Wichtige Dateikommandos: find Unix-Linux Dateisystem 32 • • • find : Finden von Dateien entsprechend spezifiziertem Namen (DBS: Selektion auf Dateinamen als Attribut) find pfadname(n) bedingung(en) Bedingungen: – – – – – – – – – -print: immer erfüllt; gibt Namen der gefundenen Dateien aus -name: erfüllt wenn Datei mit Name gefunden ist -perm: Beachtung von Zugriffsrechten -user: Datei die einem Nutzer gehört (-nouser: invers) -group: Datei die einer Gruppe gehört (-nogroup invers) -atime n: Zugriff in den letzten n Tagen (selbstbeeinflussend) -mtime: Änderung in den letzten n Tagen (mit Vorzeichen!) -newer: Modifikation neuer als Vergleichsdatei -exec: Ausführen eines Kommandos, Argument ist gefundener Dateiname Dr. Michael Höding Unix-Linux Dateisystem 34 Wichtige Dateikommandos: join • Beispiel • Suche aller Dateien von root in /var find /var –user root –print • Suchen aller Dateien die Temperaturdaten enthalten find . –name `*temperatur*‘ –print • Auflisten aller Dateien find . –print • Durchsuchen aller Dateien mit find und grep – Beispiel: alles über Brandenburg find . –exec grep Brandenburg {} \; -print Dr. Michael Höding Unix-Linux Wichtige Dateikommandos: find • cut : remove sections from each line of files, d.h Auswahl von Spalten (DBS: Projektion) • Optionen: Dr. Michael Höding DBS: Selektion und Projektion Dr. Michael Höding Dateisystem 35 • Join: Zusammenfassen von Zeilen mit identischen Schlüsselfeldern (DBS: Verbund- oder Join-Operation) • Optionen – -j m : das m-te Feld wird in beiden Dateien als Schlüsselfeld genutzt – -j1 m: das m-te Feld wird in Datei 1 als Schlüsselfeld genutzt – -j2 m: analog j1 – a1: Zeilen aus Datei1 ausgeben, für die keine gemeinsamen Schlüssel existieren (DBS: ähnlich left outer join) – a2: analog (DBS: ähnlich right outer join) – -t: Trennzeichen – -o n.m; legt auszugebenen Felder fest (DBS: Projektion) Dr. Michael Höding Unix-Linux Dateisystem 36 6 Wichtige Dateikommandos: join Wichtige Dateikommandos: tr • Achtung: join entspricht nicht dem DBS-Join, hier „minimaler“ Join, erster Treffer • Beispiel: – Vollständige Ortsbeschreibung join –t\| messpunkte.wetter geografie – Datei neues.wetter enthält Wettertupel mit 1. Spalte Ort – Datei messpunkt.wetter enthält Beschreibung der Messpunkte mit 1. Spalte Ort – Wetterangaben mit detaillierten Angaben zu Messpunkten join –t\| -j 1 neues.wetter messpunkte.wetter – Entsprechend nur Ausgabe von Ort, Typ, Details „Was wird wo (wie hoch) gemessen?“ join –t\| -j 1 –o 1.1,1.4,2.2,2.3 neues.wetter messpunkte.wetter Dr. Michael Höding Unix-Linux Dateisystem 37 Wichtige Dateikommandos in Analogie zu Datenbanken – z.B. join anders implementiert • Wissen über interne Strukturen notwendig Unix-Linux Dateisystem 39 Dateisystem 38 • df = disk free: zeigt für angeschlossene Dateisysteme den freien Speicherplatz an • Optionen: – -h = human readable – -k : in kilobytes • du = disk used: zeigt den verbrauchten Speicherplatz beginnend vom current directory an • Optionen Dr. Michael Höding Unix-Linux Dateisystem 40 Wichtige Dateikommandos: pack, ... • mount : montieren eines Dateisystems • Packen bzw. Entpacken von Dateien – Nutzung der mount-Tabelle /etc/mtab – Mounten aller Dateisysteme mit mount –a – Montieren einer CDROM mount /dev/cdrom oder mount /cd [/dev/cdrom /cd iso9660 ro,user,noauto,unhide] – gzip, gunzip : GNU-Zip (auch unter DOS, Windows) – compress, uncompress, ab System V.4 – dazu zcat, zmore, zless • tar = Erstellung bzw. Nutzung von Archiven – Erstellen: tar –cvf archiv.tar * – Auspacken tar –xvf archiv.tar – Zusätzliche Option bei Linux: -z – Komprimierung mit gnuzip • umount = unmount: Abmontieren – Abmontieren aller (möglichen) Dateisysteme umount –a Unix-Linux Unix-Linux – -s = summarize: nur Zusammenfassung Wichtige Dateikommandos: mount Dr. Michael Höding Dr. Michael Höding Wichtige Dateikommandos: df, du • Beispielanfrage select Wettertyp, Wetterwert, Einheit from Wetter where Ort= `Brandenburg‘ and Datum like `%-09-2001‘ order by Wettertyp; • sieheTafel • Nutzung von Unix-Techniken eingeschränkt möglich Dr. Michael Höding • tr = translate character (Ersetzen von Zeichen) von Standardeingabe auf Standardausgabe • Beispiel: Ersetzung aller Kleinbuchstaben in Großbuchstaben tr [a-z] [A-Z] < neues.wetter Dateisystem 41 Dr. Michael Höding Unix-Linux Dateisystem 42 7 Wichtige Dateikommandos: mtools • mtools – Zugriff auf DOS-Disketten • mcopy: Kopieren von bzw. auf Diskette mcoypy neues.wetter a: • mdir: Anzeigen eines MSDOS-Directory • mcat: cat von DOS-Dateien • mdel: Löschen von DOS-Dateien • mformat: Formatieren einer MSDOS-Diskette Dr. Michael Höding Unix-Linux Dateisystem 43 8