UNIX - LINUX. Struktur und Größe von Dateien. Dateiarten unter Unix. Unix Dateihierarchie System. Unix-Directories im Detail

Struktur und Größe von Dateien • Unix-Dateien haben keine Struktur - „featureless byte stream“ • Interpretation hängt von den Programmen ab • Speicher...
Author: Lioba Pohl
2 downloads 0 Views 464KB Size
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