Shell-Wikibook/Erste Schritte (1)

Aus Linupedia.org
Version vom 12. März 2011, 15:14 Uhr von Linuxjuser (Diskussion | Beiträge) (JETZT habe ich den Baustein entfernt:-))
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
Linux - Shell    Eine Einführung    (WIKIBOOK)   :    Grundlagen,    Anwendung    und    Skripting
Shell - Eine Einführung: 1. Grundlagen - 2. Erste Schritte (1) - 3. Erste Schritte (2) - 4. Fortgeschritten - 5. Reguläre Ausdrücke - 6. Skripting



Erste Schritte - Navigieren auf der Shell

Am System anmelden

Nach der Theorie wird es nun Zeit für einige Feldtests auf der Shell. Für KDE-/GNOME - Nutzer bietet es sich an das entsprechende grafische Programm (siehe Zugriff über grafische Programme) zu verwenden. Selbstverständlich spricht auch nichts dagegen TTY1-X zu verwenden.

Der Login-Bildschirm

Wenn der Zugriff auf die Shell über ein TTY-Terminal erfolgt, wird man zunächst mit dem Login-Bildschirm der verwendeten Linux-Distribution begrüßt.

Welcome to openSUSE 10.2 (i586) - Kernel 2.6.18.8-0.3-default (tty1)
rbe-linux login:

Die obige Begrüßungsmeldung zeigt den Namen der Distribution, Systemplattform, die verwendete Kernel-Version und Nummer des entsprechenden TTY-Terminals an. Hier kann man sich mit dem gewünschten Benutzernamen/Passwort anmelden (Achtung: Groß- und Kleinschreibung beachten ).

Nehmen wir an, Norbert (siehe letzte Seite des Wikibooks) möchte sich auf TTY1 anmelden

Hinweis: Das Passwort wird aus Sicherheitsgründen nicht auf dem Bildschirm dargestellt
Welcome to openSUSE 10.2 (i586) - Kernel 2.6.18.8-0.3-default (tty1)
rbe-linux login: norbert
Password:
Have a lot of Fun...
norbert@rbe-linux:~>

Norbert ist nun auf dem PC angemeldet. Betrachten wir die Ausgabe etwas genauer: rbe-Linux steht z.B. für den Hostnamen des Systems, Have a lot of Fun... hingegen ist eine Willkommensmeldung für den Benutzer (Message of the Day). Diese Nachricht kann man anpassen, dazu später aber mehr.

Die Zeile

norbert@rbe-linux:~>

besagt, dass der Benutzer norbert sich am System rbe-linux angemeldet hat. Interessant ist vor allem das Tilde-Zeichen "~". Hierbei sollte man sich zunächst einen Blick über die Verzeichnisstruktur von Linux verschafft haben. Das Zeichen "~" ist ein so genannter Platzhalter, also eine Abkürzung, für das Homeverzeichnis des Benutzers. Das Homeverzeichnis eines Benutzers kann man dabei als den Arbeitsbereich innerhalb des Systems ansehen. Normale Benutzer (also nicht Systemadministratoren) haben hier ihre Spielwiese und können ihre Dokumente, Dateien usw in diesem Verzeichnis ablegen.

Anmelden mit einem grafischen Programm

Im obigen Beispiel hat sich Norbert an TTY1 angemeldet. Wie eingangs erwähnt ist es aber natürlich auch möglich z.B. per KDE Konsole auf die Shell zuzugreifen. Dazu muss man ein Konsolenfenster öffnen. Das geschieht wahlweise durch das direkte Aufrufen per Tastenkürzel ALT F2 und dem zugehörigen Befehl konsole, oder direkt aus dem KDE-Menü heraus. Bei openSUSE ist die KDE Konsole unter Anwendungen -> System -> Terminals -> Terminal-Programm (Konsole) zu finden.

Anders als beim TTY1 wird man auf der KDE-Konsole direkt als Benutzer angemeldet. Das liegt daran, dass man sich bereits beim Start der grafischen Oberfläche als Benutzer am System angemeldet hat. Die KDE-Konsole vermutet also, dass man sich direkt als entsprechender Benutzer anmelden möchte. Auch die KDE-Konsole liefert dann auch analog zum TTY1 die Ausgabe:

norbert@rbe-linux:~>

Steuerung der Shell durch Eingabebefehle

Nachdem man sich angemeldet hat, kann man auf der Shell arbeiten. Das System wird dabei durch einzelne, kleine Befehle, die man auf der Kommandozeile eingibt, bedient. Diese Befehle sind in Wirklichkeit Programme, mit denen man gewisse Aufgaben erfüllen kann. Meistens sind diese Befehle Abkürzungen ihrer eigentlichen Bedeutung. Damit man auf der Shell zurecht kommt, muss man zumindest ein paar dieser Befehle kennen.


Grundlegende Shell-Befehle

Achtung: Viele Befehle unterliegen einer gewissen syntaktischen Norm. Sie können z.B. Eingabeparameter als Optionen verarbeiten. Die korrekte Einhaltung der syntaktischen Bedingungs- / Optionsreihenreihenfolge ist wichtig. Die syntakische Normalform sei daher hier stets angegeben.




pwd - Print working Directory

Syntaktische Normalform:
 pwd [OPTION]


Oben wurde bereits erwähnt, dass das Zeichen "~" stellvertretend für den Pfad des Homeverzeichnisses steht. Wie aber lautet denn nun der genaue Pfad zum Homeverzeichnis? Das können wir mit dem Befehl

pwd

herausfinden. Die Abkürzung pwd steht für Print working Directory. Als Ausgabe dieses Befehls erhält man stets die absolute Pfadangabe zum Verzeichnis, in dem man sich auf der Shell befindet. In diesem Beispiel probieren wir einmal aus, wie die absolute Pfadangabe zum Verzeichnis "~" von Norbert lautet.

norbert@rbe-linux:~> pwd
/home/norbert
norbert@rbe-linux:~>

Norberts Homeverzeichnis ist also /home/norbert/.




cd - Change Directory

Syntaktische Normalform:
cd [-L | -P] [directory]


Natürlich muss man auch auf der Shell, wie z.B. im Konqueror, durch Verzeichnisse navigieren könneren. Mit dem cd-Befehl (Change Directory) kann man das sich beliebig durch das System bewegen.


  • In ein Verzeichnis wechseln

Ein Verzeichnis namens Urlaubsfotos im Homeverzeichnis von Norbert sei gegeben. Mit

 cd /home/norbert/Urlaubsfotos/ 

gelangt man in das Verzeichnis (Wichtig: Groß- und Kleinschreibung beachten).


  • Eine Ebene tiefer in der Verzeichnisstruktur wandern

Im Verzeichnis befinden sich zusätzlich noch weitere Unterverzeichnisse. Norbert hat weitere Urlaubsbilder im Ordner "Mallorca".

Nun könnte man natürliche wieder mit

cd /home/norbert/Urlaubsfotos/Mallorca/

ins entsprechende Verzeichnis wechseln. Da man sich aber bereits in im Ordner Urlaubsfotos befindet kann man sich viel Tipparbeit sparen, indem man direkt in das Verzeichnis springt.

cd Mallorca


  • Eine Ebene höher in der Verzeichnisstruktur wandern

Norbert hat sich nun an seinen Mallorcabildern sattgesehen und möchte zurück in seine Urlaubsfotos, also in das vorherige Verzeichnis, wandern. Auch hier kann man sich wieder Tipparbeit sparen und muss nicht wieder

cd /home/norbert/Urlaubsfotos/

verwenden. Stattdessen kann man mit einer "relativen" Pfadangabe arbeiten. Mit Hilfe von

cd ..

kann dies erreicht werden. Die beiden Punkte stellen hierbei wieder einen Platzhalter dar. Dieser Platzhalter ist dabei stets ein Verweis auf das übergeordnete Verzeichnis in dem man sich befindet.

Noch ein Beispiel: Von Norberts Homeverzeichnis eine Ebene höher wandern:

norbert@rbe-linux:~> cd ..
norbert@rbe-linux:/home>

Wie man sieht befindet man sich anschließend in /home, also das Verzeichnis in dem standardmäßig alle Benutzerverzeichnisse enthalten sind.

Achtung: Windowsbenutzer sind den Befehl "cd.." ohne Leerzeichen gewohnt. Unter Linux muss jedoch unbedingt ein Leerzeichen zwischen cd und den Punkten stehen.


  • Direkt ins Homeverzeichnis des angemeldeten Benutzers springen

Möchte man direkt ins Homeverzeichnis springen so kann man dies durch

cd ~

oder einfach nur

cd

erreichen.


  • Direkt ins Wurzel-/Root-Verzeichnis springen

Um in das Root-Verzeichnis des Systems zu gelangen muss man

cd /

eingeben.


  • Ins vorherige Verzeichnis springen

In das vorherige Verzeichnis kann man mit

cd -

gelangen.


Anmerkung:

Hinweise zu relativer/absoluter Adressierung


  • Absolute Pfadangaben oder auch absolute Adressierung

Absolute Pfade beinhalten den kompletten Pfadnamen zum jeweiligen Ziel. Ein Beispiel für absolute Adressierung:

/etc/X11/xorg.conf

Ein Absoluter Pfad beginnt also immer bei der Wurzel des Dateisystemes!


  • Relative Pfadangaben oder auch relative Adressierung

Relative Pfade sind äußerst flexibel in der Handhabung. Durch die relativen Pfadangaben kann man viel Tipparbeit sparen. Aber das ist nicht der einzige Vorteil. Sie werden in verschiedensten Anwendungsfällen verwendet, z.B. auch bei der Entwicklung von Programmen / Webseiten / Shellscripts. Beispiel für eine relative Adresspfad:

norbert@rbe-linux:~/Urlaubsfotos> cd ../Dokumente/Korrespondenztexte/
norbert@rbe-linux:~/Dokumente/Korrespondenztexte>

Aus dem Ordner Urlaubsfotos ist man also über eine relative Pfadangabe in die Korrespondenztexte gesprungen.




ls - List Directory Contents

Syntaktische Normalform:
ls [OPTION]... [FILE]...


  • Normale Auflistung eines Verzeichnisses

Um sich den Inhalt eines Verzeichnisses auflisten zu lassen kann man den ls-Befehl verwenden. Beispiel:

norbert@rbe-linux:/> pwd
/
norbert@rbe-linux:/> ls
bin  boot  data2  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  sbin  srv  sys  tmp  usr  var
norbert@rbe-linux:/>

Hier wird der Inhalt des Wurzelverzeichnisses ausgegeben.


  • Versteckte Dateien mit anzeigen lassen

Um sich versteckte Dateien ausgeben zu lassen, muss man einen Optionsparameter von ls verwenden. Mir der Option "-a" (alle anzeigen) kann man zur gewünschten Ausgabe gelangen.

Hinweis: Versteckte Dateien beginnen unter Linux mit einem "." . Anders als unter Windows sind versteckte Dateien also nicht mit einem Dateiattribut versehen.
norbert@rbe-linux:~> ls
Dokumente  Urlaubsfotos
norbert@rbe-linux:~> ls -a
.  ..  Dokumente  Urlaubsfotos  .Versteckte-Datei
norbert@rbe-linux:~>

Zusätzlich werden die beiden relativen Adressen "." und ".." mit ausgegeben.


  • Detaillierte Auflistung erzwingen

Der Informationsgehalt der normalen Ausgabe von ls ist äußerst dürftig. Man erfährt nichts darüber, wem die Datei gehört, wann sie erstellt wurde und wie groß sie ist. Mehr Informationen kann man mit der Option "-l" (list) in Erfahrung bringen.

norbert@rbe-linux:/> ls -l
insgesamt 108
drwxr-xr-x   2 root root  4096 25. Mai 16:36 bin
drwxr-xr-x   3 root root  4096  4. Mai 11:02 boot
drwxr-xr-x   2 root root  4096 14. Jan 19:05 data2
drwxr-xr-x  11 root root  7400 12. Jul 15:51 dev
drwxr-xr-x  94 root root 12288 12. Jul 11:31 etc
drwxr-xr-x   5 root root  4096 12. Jul 14:02 home
drwxr-xr-x  12 root root  4096 16. Mai 20:38 lib
drwx------   2 root root 16384  7. Dez 2006  lost+found
drwxr-xr-x   9 root root  4096 12. Jul 11:31 media
drwxr-xr-x   2 root root  4096 10. Mai 22:50 mnt
drwxr-xr-x   4 root root  4096  7. Dez 2006  opt
dr-xr-xr-x 135 root root     0 12. Jul 13:30 proc
drwx------  24 root root  4096 12. Jul 12:59 root
drwxr-xr-x   3 root root 12288  4. Mai 10:49 sbin
drwxr-xr-x   4 root root  4096  7. Dez 2006  srv
drwxr-xr-x  11 root root     0 12. Jul 13:30 sys
drwxrwxrwt  29 root root 20480 12. Jul 18:00 tmp
drwxr-xr-x  14 root root  4096 11. Mär 17:33 usr
drwxr-xr-x  15 root root  4096 11. Mär 17:33 var
norbert@rbe-linux:/>

Wie man sieht, ist der Informationsgehalt deutlich höher als mit der Standardausgabe, aber auf dem ersten Blick wahrscheinlich auch verwirrender. Zur Verdeutlichung picken wir uns einfach mal eine Zeile heraus und analysieren die einzelnen Abschnitte.

drwxr-xr-x   5 root root  4096 12. Jul 14:02 home

Bedeutung der einzelnen Abschnitte


  • 1. Abschnitt: drwxr-xr-x


Das erste "d" steht für directory. Handelt es sich bei dem Listeneintrag um eine Datei, würde ein "-" angezeigt werden. Die weiteren Angaben geben Informationen über die Zugriffsrechte des Verzeichnisses / der Datei an.

Kleiner Exkurs zu den Zugriffsrechten



Das Linux Dateisystem basiert auf dem französischen Hugo, UGO.

UGO steht für

  • User (dem Eigentümer der Datei / des Verzeichnisses)
  • Group (Gruppenzugehörigkeit der Datei /des Verzeichnisses)
  • Other (alle anderen Benutzer / Gruppen auf dem System).

Jeder dieser drei Beteiligten hat drei unterschiedliche Grundrechte für den Datei / Verzeichniszugriff.

  • READ - Hat man Lesezugriff auf die Datei / Verzeichnis
  • WRITE - Darf man die Datei bearbeiten oder verändern / eine neue Datei im Verzeichnis anlegen
  • EXECUTE - Darf man in ein Verzeichnis wechseln / darf man eine Datei ausführen


drwxr-xr-x

Sag uns in diesem Fall, dass wir es mit einem Verzeichnis zu tun haben. Der Eigentümer der Datei hat Lese, Schreib und Ausführungsrechte. Jeder der zur Gruppenzugehörigkeit gehört hat Lese und Ausführrechte - genau wie alle weiteren Benutzer.

Weitere Informationen im Artikel Zugriffsrechte



  • 2. Abschnitt: 5

Diese Zahl repräsentiert die Anzahl der Hardlinks zur Datei / des Dateisystems. An dieser Stelle ist es aber für die Benutzung der Shell zunächst eher unbedeutend, daher soll das Thema Hardlinks an dieser Stelle nicht besprochen werden.


  • 3. Abschnitt: root root

An dieser Stelle erkennt man nun den Eigentümer und die Gruppenzugehörigkeit. In diesm Fall gehört das Verzeichnis dem Benutzer root und die Gruppenzugehörigkeit liegt bei der Systemgruppe root. An dieser Stelle könnte nun die Frage auftreten warum es zwei mal root au dem System gibt, aber das ist ganz leicht zu beantworten. Es gibt nicht nur den Benutzer root, sondern eben auch die Gruppe root. Beide sind prinzipiell erstmal völlig unabhängig voneinander, also zwei völlig verschiedene Dinge. Um die Sache zu verdeutlichen kann man sich folgendes Szenario vorstellen:

Es gibt auf dem PC einen Ordner Dokumente im Verzeichnis /daten (Anmerkung

norbert@rbe-linux:~> cd /daten/
norbert@rbe-linux:/daten/>ls -l
drwxr-x---  2 chef    chefetage 4096 12. Jul 20:31 dokumente

Hier sieht man, dass der Ordner dokumente dem User Chef gehört und dieser alle Rechte im Ordner hat. Alle Anderen Benutzer, die der Gruppe Chefetage angehören, dürfen den Ordner betreten und ansehen, aber eben keine Änderungen machen. Alle anderen Benutzer dürfen das Verzeichnis gar nicht erst betreten. Hier sieht man deutlich den Unterschied zwischen Benutzern und Gruppen.


  • 4. Abschnitt: 4096

Die 4096 stellt die Größe des Verzeichnisses in Byte dar. Jetzt kommen bestimmt die ersten Panikattacken und so mancher wird sich fragen, warum sein geliebtes MP3-Verzeichnis auf einmal so verschwindend klein geworden ist. An dieser Stelle kann ich erstmal eine Entwarnung geben. Linux verfolgt das Prinzip, dass alles eine Datei ist - auch Verzeichnisse. Ein Verzeichnis ist halt lediglich eine besondere Form der Datei, welche Informationen über in ihr liegende Dateien und Unterverzeichnisse liefert. Ein Verzeichnis ist also lediglich eine verschwindend kleine Datei, die lediglich auf andere Daten im Dateisystem zeigt und exakt diese Datei ist 4096 Byte groß. Wer mit der Byteanzahl nicht viel Anfangen kann, bzw. bei einer hohen Stellenanzahl den Überlick verliert, dem sei die Option "-h"ans Herz gelegt.

ls -lh
drwxr-xr-x   6 root root 4,0K 12. Jul 20:32 home

Nun werden die 4096 Byte als lesbare 4 Kilobyte angezeigt. Zudem verdeutlicht dieses Beispiel, wie schön man die einzelnen Parameteroptionen kombinieren kann.


  • 5. Abschnitt: 12. Jul 20:32 home

Das Datum stellt den Zeitpunkt der letzten Änderung dar. Anders als bei Windows wird bei Linux lediglich das Änderungsdatum eine Datei protokolliert, nicht aber wann sie erstellt wurde. Ein Umstand mit dem man leben muss.

Das home steht natürlich für den aufgelisteten Namen des Verzeichnisses.


Online-Hilfe auf der Shell

man - Manual / Programm zum Einsehen der Online-Manuale

Syntaktische Normalform:
 man [section] title

Bei diesen ganzen Befehlen, Optionen und Parametern kann man schon schnell den Überblick verlieren. Natürlich muss man nicht alle Shellkommandos im Kopf haben, sondern kann auf eine äußerst informative und umfangreiche Onlinehilfe zurückgreifen. Mit Hilfe der Manpages kann man sich zu nahezu jedem Shellkommando eine ausführliche Beschreibung ausgeben lassen. Konkrete Beispiele findet man in den Man-Pages allerdings nur selten. Getreu der Unix-Philosphie wird hier keine lange Einführung gegeben, sondern direkt eine Referenz über die Funktionalität des Kommandos. Erfahrenere Benutzer können so schnell die Informationen finden, die sie benötigen.

Keine Angst - Die Einführung wird hier im Wikibook gegeben, so dass bald hoffentlich jeder Nutzer in diesem Bereich ein erfahrener Benutzer ist  ;-).


Möchten wir z.B. für das vorangegangene Beispiel ls die Onlinehilfe aufrufen, so müssen wir folgenden Befehl verwenden:

man ls

Nun wird die Hilfe - auch manpage (manual page) genannt - zu ls auf dem Bildschirm angezeigt.

Hinweise zur Steuerung der Manpages

Man kann innerhalb der Manpage beliebig navigieren.

  • Pfeiltaste hoch / Pfeiltaste runter - Zeilenweise scrollen
  • Bild auf / Bild ab - Seitensweises blättern

Suchen innerhalb der Manpages

Der Befehl

/<suchbegriff>

ermögtlicht die Suche innerhalb der Manpage nach einem Suchbegriff

Mit der Taste n kann man zum nächsten Suchergebnis springen


Die Manpage verlassen

  • Mit der taste q kann man die Manpage verlassen


Aufteilung der Manpages in Sektionen

Syntaktische Normalform:
whatis [option] Schlüsselwort


Einigen Shellkommandos sind mehr als ein Hilfethema zugeordnet. Dass bedeutet, dass es zu einem Thema mehrere Hilfeseiten, die unterschiedliche Dinge behandeln, geben kann. Diese verschiedenen Hilfeseiten nennt man auch Sektionen (Abschnitte).

Ob einem Shellkomando mehrere Hilfethemen zugeordnet sind kann man mit dem Befehl

 whatis <suchegriff>

herausfinden.

An dieser Stelle kommen wir wieder auf Norbert zurück. Norbert möchte sich nun die verschiedenen Sektionen zum Thema ls ausgeben lassen.

norbert@rbe-linux:~> whatis ls
ls (1)               - list directory contents
ls (1p)              - list directory contents

Wie man sieht, sind ls 2 Hilfeseiten zugeordnet. Standardmäßig wird immer die erste (1) Hilfeseite aufgerufen. Möchte man sich aber die Hilfeseite zu LS zur Sektion (1p) anschauen, so kann man dies mit dem Befehl

man 1p ls

erreichen.


Schnelle Befehlsüersicht per --help Parameter

Zusätzlich zu den Manpages hat man oft auch die Möglichkeit auf eine Quickinfo von Befehlen zurückzugreifen. Während die Manpage relativ genau beschreibt was die einzelnen Optionen bewirken, gibt die Quickinfo eine einfache und schnelle Optionsübersicht aus. Hierbei sei aber gesagt, dass längst nicht alle Befehle über eine solche Quickinfo verfügen.

Betrachten wir uns einmal den Befehl whoami genauer.

norbert@rbe-linux:~> whoami
norbert
norbert@rbe-linux:~>

Whoami gibt also den Benutzernamen des angemeldeten Benutzers aus. Wahrscheinlich fragen sich nun einige wofür das gut ist, schließlich sieht man doch in der Kommandozeile stets den angemeldeten Benutzer. Die Tatsache, dass man unter openSUSE den angemeldeten Benutzer in der Shell sieht, heißt nicht, dass es standardmäßig für alle Abkömmlinge von Unix / Linux gelten muss. Diese Zeile ist hochgradig anpassbar, aber wir kommen in einem späteren Abschnitt noch auf dieses Thema zurück.

In diesem Beispiel verwenden wir whoami um den Umgang mit der Quickinfo zu erlernen. Die Quickinfo kann man meist mit dem Parameter --help aufrufen.

norbert@rbe-linux:~> whoami --help
Aufruf: whoami [OPTION]...
Den Benutzernamen ausgeben, der zu der aktuellen effektiven Benutzer-ID
gehört.  Dasselbe wie „id -un“.

      --help     diese Hilfe anzeigen und beenden
      --version  Versionsinformation anzeigen und beenden

Melden Sie Fehler (auf Englisch, mit LC_ALL=C) an <bug-coreutils@gnu.org>.
norbert@rbe-linux:~>

Wie man sieht werden die unterschiedlichen Parameteroptionen ausgegeben. Zugegeben, whoami liefert nun nicht die große Auswahl an Parametern, aber als kleines, anschauliches Beispiel führt es uns sehr gut vor, wie die --help-Parameteroption in den meisten Fällen arbeitet.


Zusammenfassung des ersten Kaptiels

Dieses erste praktische Kapitel stellt die Grundlagen für den Umgang mit der Shell dar. Es geht um Entschlüsselung der Angaben von Dateien und Verzeichnissen, Rechtevergabe sowie Änderungsangaben. Weiterer Schwerpunkt ist die Anmeldung im System und Navigation durch die Verzeichnisse. Ausserdem geht es um den Umgang mit Parametern der Shellkommandos sowie den Aufruf der Manpages und ihrer Sektionen.


Weiter geht's mit Shell-Wikibook/Erste Schritte (2)






Shell - Eine Einführung: 1. Grundlagen - 2. Erste Schritte (1) - 3. Erste Schritte (2) - 4. Fortgeschritten - 5. Reguläre Ausdrücke - 6. Skripting



==

Ebene 2 Überschrift

==