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