20
Grundlagen der Kommandozeile unter Unix/Linux Dr. Kerstin Puschke September 2009 1

Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Embed Size (px)

DESCRIPTION

Handout zum Workshop "Grundlagen der Kommandozeile unter Unix/Linux", September 2009

Citation preview

Page 1: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Grundlagen der Kommandozeile unterUnix/Linux

Dr. Kerstin Puschke

September 2009

1

Page 2: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Lizenz

LizenzDieser Text steht unter einer Creative Commons Attribution-Share Alike 3.0 GermanyLizenz, siehe http://creativecommons.org/licenses/by-sa/3.0/de/

Page 3: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Inhaltsverzeichnis

I Einführung 4

1 Unix, Linux, . . . 4

2 Linux Grundlagen 42.1 Multi-User System . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Verzeichnisbaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Komponenten eines Linux-Systems . . . . . . . . . . . . . . . . . . 5

3 Warum die Kommandozeile nutzen? 6

II Erste Schritte 7

4 Wie komme ich auf die Kommandozeile? 7

5 Erste Befehle 7

III Dateien und Verzeichnisse verwalten 8

6 Unterwegs im Verzeichnisbaum 86.1 Verzeichnis wechseln . . . . . . . . . . . . . . . . . . . . . . . . . . 86.2 Pfadangaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86.3 Verzeichnisinhalt ausgeben . . . . . . . . . . . . . . . . . . . . . . . 9

7 Anlegen, Entfernen, Verschieben, Kopieren 10

IV Arbeiten mit der Shell 11

8 Befehlssyntax - Argumente und Optionen 11

9 Unterstützung bei der Arbeit 119.1 Arbeitserleichterungen . . . . . . . . . . . . . . . . . . . . . . . . . 119.2 Hilfe finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129.3 Wildcards und Klammererweiterung . . . . . . . . . . . . . . . . . . 12

10 Programme steuern 13

V Inhalt von Textdateien 14

11 Inhalte ausgeben 14

12 Inhalte bearbeiten 14

13 Inhalte durchsuchen - Reguläre Ausdrücke 14

2

Page 4: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

VI Ein- und Ausgabe 16

14 Ein- und Ausgabe 1614.1 Tastatureingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1614.2 Ein- und Ausgabe umleiten . . . . . . . . . . . . . . . . . . . . . . . 1614.3 Deskriptoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

VII Dateien und Verzeichnisse verwalten II 18

15 Rechteverwaltung 18

16 Links 19

3

Page 5: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Teil I

Einführung1 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 SystemMulti-User System

• gleichzeitig von mehreren nutzbar

• getrennte Bereiche (Einstellungen, Anwendungsdaten etc.)

• strikte Trennung von Anwendung und Administration

2.2 VerzeichnisbaumVerzeichnisbaum

• 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

Page 6: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

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-SystemsKomponenten

• 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

Page 7: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

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, derenName “salzburg” enthält

6

Page 8: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Teil II

Erste Schritte4 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 BefehleVorsicht

AchtungGroß- 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 Schrittepwd, whoami, hostname

7

Page 9: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Teil III

Dateien und Verzeichnisse verwalten6 Unterwegs im Verzeichnisbaum

6.1 Verzeichnis wechselnNavigation im Verzeichnisbaum

Verzeichnis wechselncd VERZEICHNIS - change directory

Aufgaben

Verzeichnis wechselncd, Pfadangaben

Verzeichnis wechseln

• cd VERZEICHNIS wechselt in Verzeichnis <Verzeichnis>

• cd wechselt ins eigene Homeverzeichnis

• cd - wechselt ins vorher benutzte Verzeichnis

6.2 PfadangabenPfadangaben

• 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 - BeispieleAusgehend von /home/alice/linuxkurs/ entsprechen sich jeweils

aufgaben./aufgaben/home/alice/linuxkurs/aufgaben

8

Page 10: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

../mysqlkurs/aufgaben/home/alice/mysqlkurs/aufgaben

../../bob/linuxkurs/home/bob/linuxkurs

6.3 Verzeichnisinhalt ausgebenVerzeichnisinhalt

Verzeichnisinhalt ausgebenls VERZEICHNIS list directory contents (historisch: list segment)

Aufgaben

Verzeichnisinhalt ausgebenls

Verzeichnisinhalt

• ls VERZEICHNIS Inhalt von <Verzeichnis>

• ls Inhalt des aktuellen Verzeichnisses

• ls --all VERZEICHNISls -a <Verzeichnis>auch versteckte Dateien anzeigen(Dateiname beginnt mit .)

• ls -l VERZEICHNISls --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

Page 11: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

7 Anlegen, Entfernen, Verschieben, KopierenAnlegen und Entfernen

Anlegen

• mkdir VERZEICHNIS make directory

• touch DATEI Datei anlegen (bei vorhandener Datei: timestamp setzen)

Entfernen

• rm DATEI remove

• rmdir VERZEICHNISremove directory (entfernt leeres Verzeichnis)

• rm -r VERZEICHNISentfernt Verzeichnis samt Inhalt

Kopieren, Verschieben, Umbenennen

Verschieben und Umbenennenmv QUELLDATEI ZIELDATEImv DATEI(EN) VERZEICHNISmv QUELLVERZEICHNIS ZIELVERZEICHNISmove

Kopierencp QUELLDATEI ZIELDATEIcp DATEI(EN) VERZEICHNIScp -r QUELLVERZEICHNIS ZIELVERZEICHNIScopy

Vorsicht

WarnungU.U. wird ohne Rückfrage gelöscht oder überschrieben!

Aufgaben

Dateien und VerzeichnisseAnlegen, Entfernen, Kopieren, Verschieben, Umbenennen

10

Page 12: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Teil IV

Arbeiten mit der Shell8 Befehlssyntax - Argumente und OptionenArgumente

• 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 Befehlenrm -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

AufgabenBefehlssyntax und ArbeitsweisenBefehle, Optionen und Argumente, praktische Tips

9 Unterstützung bei der Arbeit

9.1 ArbeitserleichterungenArbeitserleichterungen

• 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

Page 13: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

9.2 Hilfe findenHilfe

• Befehlssyntax abfragen:Optionen -h oder --help

• manpage man befehl

• info befehl

• perldoc, texdoc,...

• . . .

• Notation: Angaben in eckigen Klammern sind optional

9.3 Wildcards und KlammererweiterungKlammererweiterung

• Ausdruck in geschweiften Klammern wird zu mehreren Dateinamen erweitert

• cp /home/alice/{foo,bar} neuerordner entsprichtcp /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

Page 14: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

AufgabenArbeitserleichterungen und Hilfe/DokuWildcards, Klammererweiterung, manpages

Wildcards GefahrenWelche Dateien werden gelöscht?rm -rf .*

Vorsicht!In Kombination mit -r paßt .* auf ../*, d.h. auch auf höhergelegende Verzeichnis-se!

10 Programme steuernProgramme 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/unterbrechenSTRG+Z

• im Vordergrund weiterlaufen lassenfg

• im Hintergrund weiterlaufen lassenbg

• was läuft im Hintergrund?jobs

Programme steuernHinweisDie Darstellung der Programmsteuerung ist sehr vereinfacht. Wer mehr wissen möchte,sollte sich über Prozesse und Threads informieren.

AufgabenProgramme steuernAufrufen, Unterbrechen, Beenden, Vorder- und Hintergrund

13

Page 15: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Teil V

Inhalt von Textdateien11 Inhalte ausgebenTextdatei 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 bearbeitenTextdatei 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ückeReguläre Ausdrücke Zur Suche in Text

• Platzhalter

– . - ein beliebiges Zeichenf.o passt auf foo,flo,f9o aber nicht fouo

– [mehrereZeichen] - eines der genannten Zeichenf[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 nichtfo?a passt auf fa, foa, aber nicht fooa

14

Page 16: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Dateien durchsuchen grep

Dateien durchsuchengrep SUCHMUSTER DATEI(EN)

Beispielgrep bash kursmaterial.txtgrep ’alice and bob’ /home/alicegrep ali.* bob.txt

Aufgaben

TextdateienInhalte von Textdateien ausgeben und ändern, Textdateien durchsuchen, Reguläre Aus-drücke

15

Page 17: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Teil VI

Ein- und Ausgabe14 Ein- und Ausgabe

14.1 TastatureingabeTastatureingabe 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 umleitenEin- 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 DeskriptorenDatenströme mit Deskriptoren umleiten

DatenkanäleKanal Deskriptor defaultStandardeingabe (stin) 0 TastaturStandardausgabe (stdout) 1 BildschirmStandardfehlerausgabe (stderr) 2 Bildschirm

• Kanal umleiten: n>mv foo bar 2>error.err

16

Page 18: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

• Kanäle bündeln: n>m&sort foo 2> bar.txt 1>2&

• erst umleiten, dann bündeln

Aufgaben

Ein- und AusgabeEin- und Ausgabe umleiten, Deskriptoren

17

Page 19: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Teil VII

Dateien und Verzeichnisse verwalten II15 RechteverwaltungDateirechte 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-xowner darf r, w und x, group und others nur r und x

Dateirechte ändern

Rechte ändernchmod MODUS DATEI(EN)

• Wer (ugo) bekommt/verliert (+-) welche Rechte (rwx)?

– chmod ug+r foo.txtuser und group erhalten Leserechte

– chmod o-w bar.txtothers verlieren Schreibrechte

18

Page 20: Grundlagen der Kommandozeile unter Unix/Linux (Handout)

Aufgaben

DateirechteDateirechte verwalten

16 LinksLinks 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 anlegenln -s ZIEL LINKNAME

sym link entfernenrm LINKNAME

Aufgaben

LinksSymlinks

19