View
1.382
Download
1
Category
Preview:
DESCRIPTION
Handout zum Workshop "Grundlagen der Kommandozeile unter Unix/Linux", September 2009
Citation preview
Grundlagen der Kommandozeile unterUnix/Linux
Dr. Kerstin Puschke
September 2009
1
Lizenz
LizenzDieser Text steht unter einer Creative Commons Attribution-Share Alike 3.0 GermanyLizenz, siehe http://creativecommons.org/licenses/by-sa/3.0/de/
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
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
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
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
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
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
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
../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
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
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
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
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
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
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
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
• 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
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
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
Recommended