Aktuelle Zeit: Mi 22. Nov 2017, 23:01

 [Zurück]   Alle Zeiten sind UTC + 1 Stunde


 Menü 
 Anmelden 
Benutzername:


Passwort:

>> Passwort vergessen

Mich bei jedem Besuch automatisch anmelden

 Links
Energiespartipps
 Statistiken 
Beiträge insgesamt: 5379
Themen insgesamt: 828
Dateianhänge: 40

Themen pro Tag: 0
Beiträge pro Tag: 2
Benutzer pro Tag: 0
Themen pro Benutzer: 3
Beiträge pro Benutzer: 18
Beiträge pro Thema: 6

Mitglieder insgesamt: 299
Unser neuestes Mitglied: beetlejuice


 Seite 1 von 1
Bookmark and Share  
Autor Deine Nachricht
Die Linux Shell
Beitrag Nummer:#1  BeitragVerfasst: Di 13. Okt 2009, 20:38  BeitragZeige einzelnen Beitrag 
(Threadstarter)
In diesem Tutorial gibt es viel zu lesen.
Aber das ist etwas, was eine unumgängliche Tätigkeit bei Linux ist. Wer nicht lesen mag, der sollte Linux auch generell vermeiden :)

Hier ein Link zu diesem tutorial in simpler Form:
http://junemaster.ju.funpic.de/niff/linux-shell.php (Teil 1)
http://junemaster.ju.funpic.de/niff/linux-shell-2.php (Teil 2)

---

Einige von euch haben sicherlich schon mal mit dem Gedanken gespielt Linux auszuprobieren.
Ein Paar haben es vielleicht sogar schon getan, sind aber daran gescheitert, dass es "anders" ist als Windows... Man findet nicht mal die Systemsteuerung oder etwas ähnliches, und als ihr dann festgestellt habt, dass man für viele Systemeinstellungen die sogenannte "Shell" (oder Konsole oder Terminal) benötigt habt ihr aufgegeben, und seit wieder zu Windows gewechselt.
Die hartgesottenen unter euch, die nicht so schnell aufgegeben haben, haben das nutzen der Shell gelernt, und somit ihr Potential erkannt.

Hier möchte ich euch eine kleine Einführung in die Shell geben.
Wir werden ein paar Standardbefehle kennen lernen und ich werde euch zeigen, dass man mit der Shell ne menge interessanter Dinge machen kann.

Linux Distribution
Für die, die es noch nicht wissen, was eine Distribution ist:
http://de.wikipedia.org/wiki/Linux-Distribution
Im Prinzip ein gigantisches Sammelwerk an Software, welche alle zusammen arbeiten.

Als Distri (Kurzform von Distribution) habe ich Debian GNU/Linux gewählt. Die meisten hier im Tutorial verwendeten Befehle wird es auch auf den anderen Distributionen geben. Da Ubuntu von Debian abstammt, werden Ubuntuuser mit diesem Tutorial wahrscheinlich auch keinerlei Probleme haben. Ihr müsst also nicht extra die Distribution wechseln. Falls irgendwas nicht funktioniert, gebt mir in einem Beitrag bescheid und sagt welche Distri ihr nutzt.

Warum die Shell?
Eine Distribution ist, wie gesagt, ein Sammelwerk an Software.
Diese Software stammt nicht immer von den Entwicklern der Distribution, sondern von komplett anderen Entwicklern, die mit der Distri nicht direkt etwas zu tun haben. Die aktuelle Debian stable z.B. hat über 25.000 Software Pakete.
Das Prinzip der "Freien Software" (Frei wie in Freie Rede, nicht Freibier) erlaubt es den Debian Entwicklern Software Frei und ohne Grenzen zu nutzen. Die Debian Entwickler entscheiden lediglich welche software ins Projekt eingebunden wird und welche nicht.

Viele der Entwickler verzichten aus Perfomance gründen auf eine Grafische Benutzeroberfläche (so dass man das Programm mit der Maus bedienen kann), und geben stattdessen eine Reihe Möglichkeiten, das Programm über die Shell mithilfe von Parametern und Switches zu steuern.
Konfigurationen unter Linux werden in den allermeisten Fällen in simple Textdateien gespeichert. Sowas wie eine "Registry" gibt es unter Linux nicht.

Aus diesem Grund kann man die meisten Programme nur über die Shell bedienen.

Lasst uns als anfangen

---

Die Shell starten
Jede Distribution hat eine Shell. Je nach dem ob man eine Desktop Umgebung nutzt (GNOME, KDE, XFCE uvm.) hat man die Möglichkeit eine Shell über das Menü zu öffnen. Sucht nach Begriffen wie "Terminal" oder ähnliches. Unter Debian GNOME, befindet sich eine Shell standardmäßig unter:
Anwendungen -> Zubehör -> Terminal
So oder ähnliche könnte es dann ausschauen:

Bild

Ein bisschen Ähnlichkeit mit der Windows Eingabeaufforderung hat es schon (einige würde mich für dieses Statement wahrscheinlich erschlagen ^^).

Das was ihr dort lesen könnt ist folgendes:

Je nach Einstellung kann bei euch etwas anderes angezeigt werden.
Die Informationen die ich daraus lesen kann sind: Ich bin in der Shell angemeldet mit dem Benutzer "balmung", mein Rechnername ist "ikarus" und ich befinde mich momentan im Verzeichnis "~".
Die Tilde "~" ist eine Abkürzung für das "Home"-Verzeichnis des Benutzers Balmung (Ein Home-Verzeichnis ist vergleichbar mit dem Ordner "Eigene Dateien" unter Windows).
das Dollar Zeichen "$" signalisiert bei mir nur das Ende dieser kurzen Infos. dahinter befindet sich der Cursor, und ich kann meine Eingaben starten.

Um nicht immer Screenshots zu machen, werde ich einfach wie oben die Shell Befehle in code-Blöcken schreiben.

Der erste Befehl.
wie gesagt bedeutet die Tilde "~", dass ihr euch im Home-Verzeichnis es aktuell angemeldeten Benutzers befindet (wenn ihr das nicht dort stehen habt, ist es auch nicht so schlimm).
Um den exakten und absoluten Pfad zu ermitteln, zu dem Verzeichnis in dem ihr euch gerade befindet, gebt ihr den Befehl "pwd" ein:

pwd steht für "Print Working Directory" (zu Deutsch: Drucke Arbeitsverzeichnis). Es gibt mir also das Aktuelle Verzeichnis aus, in dem ich gerade mit der Shell "Arbeite".
Das Tilde-Symbol "~", ist also die Abkürzung für mein Home-Verzeichnis "/home/balmung".

Um zu gucken was für Dateien und Ordner ich in diesem Verzeichnis habe, nutzen wir den Befehl "ls", was wohl eine Art Abkürzung für "list" oder so ist.

Ein paar Sachen hab ich da schon aufzulisten. Ich habe jetzt nicht alles angezeigt, weil die Code-Blöcke sonst zu groß werden würden.
Es könnte sein dass bei die Dateien und Ordner in unterschiedlichen Farben angezeigt werden.
Um die Liste ein bisschen ausführlicher zu gestalten gibt es sogenannte "switches" für die meisten Programme.
So ein Switch besteht meistens aus einem Bindestrich und einem einzelnen Buchstaben, z.B "-a" Manchmal aber auch aus einem doppelten Bindestrich und einem Wort z.B. "--all".
Welche Switche es gibt, und wie diese Aufgebaut sind, hängt ganz vond em verwendeten Programm ab, und muss nicht immer genau das Format haben wie beschrieben.
Um die Dateiliste ausführlicher zu gestalten, gibt es den Switch "-l", für ein langes Listenformat.

Auch hier ist die Liste von mir etwas Verkürzt worden.
Bei euch werden wahrscheinlich nicht so viele Unterschiedliche Dateien vorhanden sein.
Wie ihr sichelrich schon bemerkt habt, stehen ganz links die Namen der Dateien und Ordner. Kurz davor ein Datum, welches man wahrscheinlich das Datum der letzten Veränderung (oder des Letzten Zugriffes, weiß ich jetzt nicht sooo genau ;-) ) ist.
Von Links angefangen stehen dort ne reihe buchstaben und Bindestriche:

Der erste Buchstabe ganz links gibt immer an um was für eine Art von Datei es sich dabei handelt.
das "d" steht für "Directory", es handelt sich dabei also um ein Verzeichnis. "Bilder" ganz oben in der Liste ist also ein Ordner. Wenn ein einfacher Binderstrich an der Stelle zu finden ist, handelt es sich dabei um eine Normale Datei. ein "l" (kleines L) ist ein "Link", wie ihr an zweiter Stelle sehen könnt. Der Name des Links ist "C" und verweist (sogar mit nem schicken Pfeil schön dargestellt) auf das Verzeichnis ".wine/drive_c/".
Ganz unten finden wir auch eine Datei vom typ "p", was für "Pipe" (Rohr) steht. Diese sind nützlich um zwei Unterschiedliche Programme miteinander kommunizieren zu lassen, das ist hier aber nicht so wichtig.
Die Datei "default.m3u" (eine Playlist) ist also eine Stinknormale Datei. Während "Bilder", "Desktop", "Dokumente" und "Download" Verzeichnisse sind.
Die nächsten 6 Buchstaben bestehen, wenn alle gesetzt sind, wie man beim Link sehen kann, üblicherweise aus "rwxrwxrwx".
Dies sind die Rechte der Datei. Es sind immer Drei Gruppen bestehend aus "rwx".
r = Read = Lesezugriff, wenn der Buchstabe gesetzt ist, darf man die Datei Lesen
w = Write = Schreibzugriff, wenn gesetzt, darf man die Datei verändern und Löschen
x = eXecute = Ausführen, wenn gesetzt, darf man die Datei ausführen. Die datei ist dann wahrscheinlich ein Programm, ein Script oder ein Ordner.

die linken Drei "rwx" geben an was der Besitzer der Datei darf.
Die mittleren Drei "rwx" geben an was die Gruppe, die dieser Datei zugeweisen wurde, mit der Datei anstellen darf.
die letzten Drei "rwx" geben an was alle anderen, die die datei nicht besitzen, und nicht in der zugewiesenen Gruppe sind, mit der Datei anstellen dürfen.

Um herauszufinden wer der Besitzer und die Gruppe zu einer Datei ist, schaut man sich die beiden Namen an, die an Dritter und Vierter Stelle stehen.
Bei mir steht meistens "balmung balmung", und einmal "root root".
Der erste Name ist der Besitzer, der zweite Name die Gruppe. Es kommt häufig vor, dass ein Benutzer auch eine eigene Gruppe mit dem selben Namen bekommt.
Die Datei menu.lst gehört dem Benutzer "root" (Systemadministrator).

Da ich als Benutzer "balmung" in der Gruppe "balmung" weder root bin noch in seiner Gruppe bin, muss ich mir also den letzten "rwx" Block ganz rechts anschauen, um zu sehen, was ich mit dieser Datei anstellen darf.
Dort steht nur "r--". d.h. ich habe nur die Rechte diese Datei zu lesen. Ich darf sie also nicht Beschreiben oder Löschen und auch nicht Ausführen.

Die Zahle zwischen den Dateirechten und dem Namen des Besitzers ist bei Dateien immer 1, und bei Verzeichnissen gibt sie an wieviele Unterverzeichnisse sie hat. Wobei es mindestens immer 2 sind, da "." und ".." mitgezählt werden (sich selbst, und das übergeordnete Verzeichnis).

Die relativ großen Zahlen nach dem Gruppennamen, geben die Dateigröße an, ja Auch Ordner belegen Speicher auf dem Datenräger. Irgendwo muss ja abgelegt sein welche Dateien in dem Ordner enthalten sind ;-)
Wenn euch die Zahlen zu unleserlich sind, könnt ihr noch einen zweiten Switch hinzufügen. ds "h" was für Human-readable (für Menschen lesbar) steht.
Ihr könnt die Switche entweder zusammenfassen "-lh", oder einzeln Angeben "-l -h".
Ganz am Anfang steht "insgesamt 14M", was dann natürlich die Gesamtgröße der Dateien und Ordner in diesem Verzeichnis darstellt.



Viele Programme geben Informationen darüber, was für Switches sie anbieten.
dazu reicht es oftmals "--help" als Switch anzugeben, oder die Manuals zu lesen mit dem Befehl "man", hier ein Beispel für das Programm "ls":

Ihr kommt aus den Manuals wieder raus in dem ihr "Q" drückt.

Verzeichniss wechseln
in der Shell kann man natürlich auch durch die Verzeichnisse navigieren um sich mit "ls" dann auch den Inhalt von andere Verzeichnissen anzeigen zu lassen.
Der Befehl dazu heißt "cd", was für Change Directory (Wechsel Verzeichnis) steht.
man gibt einfach "cd Ordnername" ein, um in das gewünschte Verzeichnis zu gelangen. Ihr müsst aber bedenken dass Linux "Case Sensitve" ist, das heißt, es unterscheidet zwischen Groß- und Kleinschreibung. Wie ihr in meiner Liste oben sehen könnt habe ich ein Verzeichnis Names "Dokumente". wenn ich also "cd dokumente" eingebe, würde ein Fehler ausgespuckt werden. "cd Dokumente" ist richtig.
Info: Wenn euer Verzeichnisname Leerfelder enthält, dann gibt den Namen in Anführungsstriche an.
z.B.

Ich Wechsel jetzt ins Verzeichnis "Dokumente":

Das was ihr sehen könnt ist, dass sich der Teil vor dem $-Zeichen bei mir verändert hat. Dort steht jetzt "~/Dokumente". (Es kann aber sein, dass bei euch der Pfad nicht angezeigt wird, das ist immer abhängig von der Distribution, und was dort eingestellt ist)
Und weil "~" für "/home/balmung" steht, müsste mein aktuelles Verzeichnis also "/home/balmung/Dokumente" sein.
Das prüfen wir mal nach:

:)
Wenn ihr wieder zurück ins übergeorndete Verzeichnis wechseln wollt, dann müsst ihr vom aktuellen Verzeichnis aus ins Verzeichnis ".." wechseln.


Ihr könnte auch mehrere Verzeichnisse auf einmal zurückwechseln, einfach mit einem "/" trennen.
Info: unter Windows nutzt man "\", unter Linux nutzt man "/" um Verzeichnisse zu trennen.

Jetzt bin ich im Verzeichnis "/". Dieses Verzeichniss ist das root-Verzeichnis. Als das Wurzel Verzeichnis, von dem aus man alle andere Verzeichniss erreichen kann.
Man kommt dort auch schneller hin in dem man einfach "cd /" eingibt.
Wenn man beim Befehl "cd" den Ordnernamen mit einem Führenden "/" angibt, dann wird IMMER von diesem root verzeichnis ausgegangen. d.h. um von IRGENDWO ins Heimverzeichnis zu wechseln, gibt man ein: "cd /home/balmung".
Der Befehle "pwd" gibt auch immer den kompletten Pfad von "/" Root-verzeichnis aus.
Info: in Home-Verzeichnis kommt man meistens schneller wenn man infach "cd ~" eingibt.

Wenn ihr im Root Verzeichnis "/" seid, und dort "ls" eingibt, findet ihr wahrscheinlich Verzeichnisse wie "dev", "etc", "bin", "mnt" usw.
Diese Verzeichnisse spielen alle in einem Linux system relevante Rollen.
Das Verzeichnis "/dev" z.B. enthält Schnittstellen zu sämtlichen angeschlossenen Devices (Geräte).
So zum Beispiel findet man seine Festplatte oft unter dem Dateinamen "/dev/hda" oder "/dev/sda". Und die Partitionen heißen dann "/dev/hda1" und "/dev/hda2" etc.
Unter Linux werden selbst Festplatten und andere Geräte wie Dateien behandelt. Man kann diese Dateien natürlich nicht mit jedem x-beliebigen Programm öffnen (sollte man auch nicht, wenn man nicht weiß was man tut).

Wir wechseln wieder ins Home-Verzeichnis:

(oder absoluter Pfad: "cd /home/balmung")

Man kann auch ein Verzeichnis ausgeben, wenn man sich nicht in diesem Befindet.
Einfach den Pfad zum Verzeichnis als letztes angeben:

oder mit absoluter Pfadangabe:

Mal ein anderes Verzeichnis:

Typ "b" ist ein block-device. hierbei handelt es sich um meine Festplatten und den darauf befindlichen Partitionen :)


Andere nützliche Befehle
Mit "echo" lässt sich Text direct auf der Shell ausgeben:


Mit "cat" lässt sich der Inhalt von Dateien (vorzugsweise Textdateien) auf die Shell ausgeben:

(Diese Datei schaut bei euch Wahrscheinlich anders aus).

Man kann die Ausgaben der Shell auch in Dateien umleiten mit dem Shell Parameter ">".

Sowas wie "ls -lh > dateiliste.txt" geht natürlich auch.

mit "grep" und einer sogenannten "unnamed pipe" (wir hatten vorhin schon was mit einer pipe kurz zu tun gehabt), kann man die Ausgabe der Shell filtern.
zum Beispiel möchte ich aus der /etc/hosts alle Zelien die "localhost" enthalten angezeigt bekommen:

Das Zeichen "|" ist die "unnamed pipe". Die Ausgabe des Programms "cat" wird umgeleitet in die Eingabe des Programms "grep".

Wenn man mit "ls" eine bestimmte Datei ausgegeben haben möchte, kann man das mit grep auch machen:


Da "grep" etwas ähnliches wie Reguläre Ausdrücke verwendet, kann man sich so auch alle Verzeichnisse oder normale Dateien auflsiten lassen:

das "^" signalisiert, dass das "d" bzw der Binderstrich am Anfang der Zeile stehen muss.

und Die Ausgabe von "grep" lassen wir dann durch noch eine unnamed pipe in das Programm "wc" mit dem switch "-l" ein, mit dem wir die Anzahl der Ausgegebenen Zeilen zählen können.

Ich weiß jetzt also dass ich 17 Ordner im aktuellen Verzeichnis habe.
as kann man natürlich auch mit Dateien und andere Dateiarten machen.


mit dem Befehl "su" könnt ihr Benutzer wechseln.
"su" steht für Switch User. Wenn "su" ohne einen Benutzer angegeben wird. wird versucht sich als Benutzer "root" anzumelden, wofür ihr natürlich ein Passwort benötigt.

Bei der Eingabe des Passwortes wird nichts erscheinen. Einfach eingeben und Enter drücken.
Bei Ubuntu muss ich euch (soweit ich weiß) leider enttäuschen. Der "root" Benutzer ist deaktiviert (kann man aber aktivieren, weiß nur nicht wie :P - Google hilft da sicherlich).
Wenn ihr unter Ubuntu einen Befehl als "root" ausführen wollt, müsst ihr einfach nur "sudo" vorne anstellen. z.B. "sudo ls", der fragt euch dann nach dem Passwort für euren normalen Benutzer.

Wir ihr sehen könnt hat ist bei der Shell der Benutzername balmung verschwunden. Jetzt steht dort nur noch der Computername (weil ich jetzt als Systemadministrator unterwegs bin), und der absolute Pfad zum home-Verzeichnis von balmung.

Um sich wieder auszuloggen einfach "exit" eingeben, dann solltet ihr wieder als euer Benutzer (also bei mir "balmung") unterwegs sein.


Dateien und Verzeichnisse kann man natürlich auch löschen.
Der Befehl "rm" wird dafür benutzt.
Dateien löscht man einfach in dem man den Dateinamen angibt:

Wenn das löschen erfolgreich war, gibts keine Fehlermeldung.
Ein Verzeichnis kann man nicht so einfach Löschen, da erst alle Dateien (und Unterverzeichnisse) in diesem Verzeichnis gelöscht werden müssen.
"rm Verzeichnis" würde also einen Fehler ausspucken, dass es sich dabei um ein Verzeichnis handelt.
Wenn ihr dieses effektvi löschen wollt gebt bei rm den switch "-r" an, für Rekursion. Bei einigen Programmen ist es ein kleines "r" (wie bei rm) bei anderen ein großes "R" (wie bei chmod oder ls).

Keine Fehler = Keine Probleme. Das Verzeichnis und ALLES was da drinne war, wird danach unwiderruflich! gelöscht sein.
Die Linux Löschalgorithmen sind "stärker" als die von Windows. generell kann man die Dateien nur mit sehr mühsamen Methoden wieder herstellen. Seid also vorsicht und passt auf was ihr da löscht.
Und traut niemandem der euch sagt man könne mit "rm -rf /" Die Festplatte optimieren. ;-)


Dateirechte
Die Dateirechte kann man natürlich auch verändern.
Für sowas gibt es die Befehle:
chmod - change mode - Ändert die Dateirechte (die Drei "rwx").
chown - change owner - Ändert den Besitzer der Datei
chgrp - change group - Ändert die Zugehörige Gruppe der Datei.

diese Befehle sind natürlich nur dann erfolgreich, wenn man die nötigen Rechte dazu hat.
Wenn man der Besitzer der Datei ist, sollte man die Rechte ohne Probleme verändern können.
Als "root" oder mit dem Befehl "sudo" vorangestellt, sollte es aber immer klappen.

Man kann die Rechte einfach vergeben oder entziehen: in dem man -w +w oder ähnliches angibt.
"genauer" Geht es aber mit einer Oktalen Notation.
Man gibt Drei Zahlen an, die jeweils die Werte 0 bis 7 enthalten können.
0 Bedeutet dabei keine von den drei "rwx" rechten, 7 steht für alle Drei.
Bsp.:

Jeder der Drei Zahlen steht für eien rwx Block. Um das mal zu verdeutlichen, setze ich die letzten beiden auf 0:

oder so:


um jetzt die Unterschiedlichen Buchstaben einzeln setzen zu können, muss man nur ein bisschen Mathe beherrschen.
in jedem der "rwx" Block stehen die Buchstaben für jeweils einen Zahlenwert:
r = 4
w = 2
x = 1
Und um jetzt einen Bestimmten Modus zu setzen, muss man den einfach hinzuaddieren.
Möchte man nur "r" (lesen) für den owner setzen, setzt man den Modus "400"
möchte man auch noch dass die Gruppe lesen darf setzt man die Mittlere Zahl auch auf 4: 440
usw. Möchte man jetzt dass der Besitzer auch noch Schreiben darf ("w"), dann addiert man die 2 einfach hinzu. der der Komplette Modus lautet also: 640

Mit den Zahlen 1, 2 und 4 kann man sämtliche Zahlen von 1 bis 7 durch addieren Berechnen. d.h. es gibt keine Kombination die man mit den drei Buchstaben nicht darstellen kann :)

Bei chmod brauch man gelegentlich "root" Rechte um den Befehl auszuführen.
Also muss man manchmal entweder mit "su" wechseln, oder vor chmod "sudo" voranstellen.

chown und chgrp sind auch recht simpel:


Tipp: Man sollte auf gar keinen Fall Die Rechte sämtlicher Dateien auf dem System verändern.
sowas wie folgendes:

Wobei der Switch "-R" für "rekursion" steht (Auch unterverzeichnisse einbeziehen), würde dazu führen, dass jede einzelne Datei und jedes einzelen Verzeichnis auf dem gesamten system von jedem lesbar, schreib- und löschbar und ausführbar ist... Was natürlich ein erhebliches Sicherheitsrisiko darstellt. Beim verändern der Attribute also sicherheit geboten.
Wenn mal eine Datei den zugriff verweigert, dann lieber als root anmelden (mit "su"), oder die gewünschten Befehle mit "sudo" ausführen.

--------------------------------

Das wars erstma von menier Seite aus. Ich werde vll später noch mehr solcher kleinen Tutorials schreiben. Unter anderem fürs "mounten", oder die netten Befehle "dd", "df" und "du".

Ich hoffe es hat euch gefallen und war hilfreich. Wenn ihr Fragen habt, nur her damit. Stellt diese am besten einfach hier im Thread.

mfg Balmung

Dateien:
http://img.xrmb2.net/?imgID=145206


Zuletzt geändert von Balmung am Mi 14. Okt 2009, 12:39, insgesamt 2-mal geändert.


Balmungs PC
  
Up 
Bot
Bot
 
Online  
PC Kenner
Re: Die Linux Shell
Beitrag Nummer:#2  BeitragVerfasst: Di 13. Okt 2009, 21:12  BeitragZeige einzelnen Beitrag 
PC Kenner

Registriert: Di 8. Sep 2009, 13:50
Beiträge: 304
Themen: 9
Danke abgegeben: 1 mal
Danke erhalten: 0 mal
Mein Mitadmin will mich ja schon lange zu einem Umstieg auf Linux nötigen, bin dazu bisher aber einfach zu faul :D
Wenn ich dann mal irgendwann umsteig, wird das bestimmt hilfreich, wenn ich denk "verdammt, wie mach ich das jetzt" und mein Mitadmin nicht on ist :P
Dann les ich das Tutorial auch *g*
*Thread unter ausführliche, auf den ersten Blick qualitative Tutorials ableg*




Skript ist neutrum. Also das/dieses Skript!
nicht der Skript!

Bild
Offline
 Profil  
Up 
Re: Die Linux Shell
Beitrag Nummer:#3  BeitragVerfasst: Mi 14. Okt 2009, 09:36  BeitragZeige einzelnen Beitrag 
Danke, super Tutorial!!
Ich hoffe, jetzt kann ich mich auch mal an Linux & die Shell wagen xD
Grüße,
DHMH



DHMHs PC
  
Up 
Profi User
Re: Die Linux Shell
Beitrag Nummer:#4  BeitragVerfasst: Mi 14. Okt 2009, 12:23  BeitragZeige einzelnen Beitrag 
Profi User
Benutzeravatar

Registriert: Mo 10. Aug 2009, 15:28
Beiträge: 653
Bilder: 7
Themen: 83
Wohnort: Pirmasens
Danke abgegeben: 2 mal
Danke erhalten: 1 mal
Nett gemacht Balmung! Somit wird die Shell zu kapieren noch einfacher ^^.

PS: Eine Installroutine als Tut wäre auch nicht schlecht weil das schreckt noch mehr Leute ab als die Shell. Denn kein Schwein der Welt kapiert wie man Programme ohne den Paketmanager drauf bekommt!




Bild

SirZimts PC
Offline
 Profil Persönliches Album  
Up 
Die Linux Shell - Teil 2
Beitrag Nummer:#5  BeitragVerfasst: Mi 14. Okt 2009, 12:38  BeitragZeige einzelnen Beitrag 
(Threadstarter)
Ich hab auch den zweiten Link im ersten Beitrag eingefügt.
Viel spaß beim lesen und ausprobieren :)

-----------------

Im letzten Teil haben wir einige Grundlegende Dinge über die Shell gelernt.
Wir wissen wie man den Inhalt eines Verzeichnisses ausgibt, wie man das Verzeichnis wechselt. Wir wissen wie man Dateien und Verzeichnisse löscht und wie man die Dateirechte verändern kann, dazu mussten wir auch lernen wie man den Benutzer wechselt.
Außerdem wurden kurz "unnamed pipes" angesprochen, wie man damit Ausgaben filtern/weiterverwenden kann.

Speicheranzeige
Manchmal möchte man auch gerne wissen, wieviel Speicher man auf den Festplatten verbraucht hat, oder verfügbar ist.
Dafür gibt es den kurzen befehl "df".
Wie bei "ls" kann man hier den Switch "-h" für human-readable angeben. Würde man das nicht machen, bekommt man Anzeigen in Milliarden Bereichen bei Gigabyte Festplatten... Billionen Byte währen es bei Terabyte.
Hier einmal meine Anzeige:

Das ganze sieht ein bisschen unübersichtlich aus, weil bei einigen ein extra Zeilenumbruch mit drinne ist, damit man den kompletten Pfad des Geräts erkennen kann.
Ihr werdet wahrscheinlich eher solche Einträge wie folgendes haben:

Dass bei mir alle "Platten" unter dem Ordner "mapper" zu finden sind, und dort einige mit "_crypt" im Namen enden, liegt daran, weil ich diese Festplatten mit "cryptsetup" verschlüsselt habe.
Dazu zeige ich ein anderes mal vielleicht mehr :)

zu der Übersicht:
die beiden "tmpfs" und "udev" kann man ignorieren. Welche von den Einträgen wichtig sind, erkennt man unter anderem ganz rechts unter der Spalte "Eingehängt auf".
der erste Eintrag hat dort "/" stehen.
Meine (verschlüsselte) Festplatte ikarus-root ist unter "/" eingehängt, und dort sind 91% Speicher benutzt. D.h. meine System-Partition ist pappenvoll. Wenn man bedenkt dass es ne 80 Gigabyte (bzw 74 GiB werden hier ja nur angezeigt) Platte ist.
Wenn es nicht anders eingestellt ist, entspricht der Speicherverbrauch des "/" Einhängepunktes auch dem Speicherverbrauch meines Home-Verzeichnisses.
Soll heißen, mein Home-Verzeichnis liegt auf der Partition ikraus-root (Was Partitionen sind wisst ihr doch noch?).
Man kann natürlich auch (sogar relativ leicht) das Home-Verzeichnis auf andere Partitionen verschieben.

Auch wichtig für mich sind die letzten beiden Einträge.
"hdb1_crypt" ist meine zweite Interne Festplatte von 160 GB, und "sda1_crypt" ist meine Externe 1 TB Festplatte.
Der Unterschied zwischen "h" und "s" bei den Festplatte liegt lediglich in der Bezeichnung.
Linux versucht automatisch zu erkennen um was für einen Datenträger es sich dabei handelt. "hdb1" steht für sowas wie "Harddisc Drive/Device B - Partition 1", während "sda1" für sowas wie "Special Device A - Partition 1" steht.
Special Devices sind es meistens dann, wenn sie per USB angeschlossen werden. Mir ist es aber auch schon untergekommen, dass intern angeschlossene Festplatten als "sda" etc. angezeigt wurden (was aber nicht wirklich schlimm ist).

Die beiden Partitionen sind an komplett anderen Orten Eingehängt.
Das Einhängen bzw auf englisch "mounting", ist etwas auf das ich auch gleich zurückkomme.

Wie die Informationen in der Übersicht oben zu Verstehen sind denke ich erkennt ihr selber (ist ja beschrieben).


Der nächste Befehl mit dem man Speicherverbrauch erkennen kann ist "du".
mit "du" kann man die Summe der Größen aller Dateien und Verzeichnisse herausfinden.
Am einfachsten ist es einfach "du" in die Shell zu tippen, dann bekommt man aber von jedem einzelnen Verzeichnis die Summe der Dateien ausgegeben.
Um das bissel einfacher zu gestalten gibt man den Switch "-s" für "summe" und unseren bekannten Switch "-h" für human-readable an.
Zusätzlich können wir noch angeben von welchem Verzeichnis aus wir den Kompletten Verbrauch ermitteln wollen.
In meinem Beispiel möchte ich die Gesamtgröße sämtlicher Dateien aus dem Ordner (Unterordner nimmt "du" automatisch mit) "Bilder" wissen:

22 GiB Bilder ist schon ne ganze Ecke (zur Erleichterung für die Leser: es sind nicht alles Bilder ^^).

Was für weitere Optionen es gibt erfahrt ihr mit "du --help" oder "man du" für die Manpages (Manuals).


Mounting
Das Mounten (Einhängen, wie oben weiter schon erwähnt) ist eine der wichtigeren und interessanteren Dinge unter Linux.

Jede Festplatte/Partition in einem System muss "gemountet" werden, damit man auf das darauf liegende Dateisystem zugreifen kann.
Dateisysteme gibt es eine Reihe unterschiedlicher. Windows Usern sind vielleicht die Begriffe "FAT" (File Allocation Table, oft auch FAT32) oder "NTFS" (New Technology Filesystem), welches beide Windowstypische Dateisysteme sind. Unter Linux werden meistens Dateisysteme wie "ext3" oder "reiserfs" geuntzt.
Ext3 nutzt ich für alle meine Partitionen und ist auch das was von Debian und soweit ich weiß auch Ubuntu, standardmäßig genutzt wird.

Wie gesagt muss man, um auf das Dateisystem zugreifen zu können (und somit auch auf die Dateien und Ordner die sich auf der Partition befinden), die Partition mounten.
Windows "mountet" die Partitionen ebenfalls. zu finden sind sämtliche Partitionen bei Windows unterm Arbeitsplatz (oder neuerdings dem "Computer").
Auf die Partitionen kommt man dann über Pfade wie "C:\..." oder "D:\..."

Das besondere an Linus ist, dass es dort keinen "Arbeitsplatz" in dem Sinne gibt. Stattdessen gibt einem Linux die absolute freie Wahl, wo man die Dateisysteme mounten möchte. Und das kann nahezu jedes Verzeichnis überall auf dem System sein.

Wenn ihr Linux installiert habt dann sollte bei euch ja auch mindestens die System-Partition gemountet sein.
Nachschauen was alles gemountet ist könnt ihr einfach mit dem Befehle "mount" ohne igendwelche Argumente.
balmung@ikarus:~$ mount

Die Schreibweise ist im Prinzip immer:

Links steht dabei üblicherweise das "Gerät" und rechts wo dieses Gerät einghängt wurde.

Meine (verschlüsselten) Partitionen sind folgende:

Die ersten drei sind bekannt. Das letzte ist ein Sonderfall.
Dort habe ich Das Verzeichnis "/media/super" an den Ort "/home/balmung/Videos" eingehängt.
d.h. Wenn ich Dateien ins Verzeichnis "/home/balmung/Videos" schreibe, landen die automatisch im Verzeichnis "/media/super", und weil hinter "/media/super" Die verschlüsselte Partition sda1_crypt steckt, werden alle Daten auf meine Externe Platte geschrieben.
Kurz: Alles was ich ins Verzeichnis (natürlich auch Unterverzeichnisse) "/home/balmung/Video" Lege, landet direkt auf meiner Externen Festplatte sda1_crypt.
Dateien die ich direkt in "/home/balmung" lege, landen hingegen auf ikarus-root, da "/home/balmung" an der Stelle noch ein Unterverzeichnis von "/" ist.

Das Mounten von neuen Geräten übernehmen die meisten Linux Distributionen von selbst. d.h. wenn ihr einen USB-Stick anschließt, sollter dieser Automatisch, meistens unter /mnt oder /media, erscheinen.

Ein Gerät zu Mounten ist jetzt ein bisschen schwierig, wenn man keines zur Verfügung hat.
Wenn ihr aber eine Externe Festplatte, einen USB Stick oder eine interne Festplatte habt, welche ihr NICHT für das System benötigt, kann ich damit ein bisschen demonstrieren wie das Mounten in etwa funktioniert.

Als erstes solltet ihr den Device-Namen eures Datenträgers herausfinden (der unter /dev).
Wenn ihr einen Externen Datenträger über USB anschließt sollte es recht einfach mit dem "mount" Befehl nachweisbar sein.
In dem Fall ist es wahrscheinlich der letzte dort zu sehende Eintrag. Bei USB-Geräten ist es wie gesagt meistens eine Form von "/dev/sdxy" wobei das x ein buchstabe von a bis z sein kann und y eine Beliebige Zahl für die Partition.
Habt ihr einen internen Datenträger, müsst ihr wohl oder übel im Verzeichnis /dev nachschauen (mir ist momentan keine schnellere Methode bekannt), ob dort mehrere "/dev/hdx" oder "/dev/sdx" auftauchen. Wenn Die Festplatte bereits gemountet ist (ihr könnt auf die Daten der Festplatte zugreifen), dann sollte sie auch unter dem Befehl "mount" auftauchen.
Wichtig ist nur, dass ihr nicht die Partition nimmt, die unter "/" Eingehängt ist.

Geht sicher dass auf dem Datenträger ein Dateisystem installiert ist. Am besten eines von Linux (z.B. ext3). Wenn ihr einen USB-Stick zum rumprobieren habt, wäre dieser Ideal :)
Das Programm "gparted" (mit root-rechten starten) unterstütz eine nette Grafische Benutzeroberfläche um Datenträger zu formatieren.

Zu Testzwecken habe ich meinen 4 GiB USB-Stick Missbraucht, auf dem ohnehin nichts drauf war.
Manchmal kann man sich auch die letzten Hardware Meldungen mit dem Befehl "dmesg" ausgeben lassen.
Da ich meinen USB-Stick gerade erst angeschlossen habe, erwarte ich also irgendeine Reaktion:

stehen ein paar Zeilen von "sdb", Mein USB-Stick sollte also unter /dev/sdb erreichbar sein. Da ich ne "unknown partition table" habe, muss ich meinen Stick also selbst erstmal formatieren (gparted) ^^
Formatierung abgeschlossen und sdb und sdb1 mit ext3 sind jetzt unter /dev zu finden :)

Um die Dynamik des Mounting nochmal zu verdeutlichen schlage ich vor, wir erstellen uns erst ein Beliebiges Verzeichnis, wo wir den Inhalt unseres Datenträgers angezeigt haben wollen.
wir wechseln ganz normal ins Home Verzeichnis ("cd ~") und erstellen dort Ein neues Verzeichnis:

Keine Fehler = Keine Probleme.
Hineinwechseln wollen wir noch nicht, aber wir können uns ja mal den Inahtl des Verzeichnisses ausgeben lassen:

Keine Dateien und keine Verzeichnisse, genau so wie man es von einem gerade erst erstelltem Verzeichnis erwartet.

Jetzt kommt der wichtige Part.
Ihr habt herausgefunden unter welchem Namen euer Datenträger verfügbar ist? Und es befindet sich eine Partition mit einem Dateisystem drauf?
Meine USB-Stick-Partition ist "/dev/sdb1" mit dem Dateisystem ext3.

Der mount Befehl lautet auf die einfache Art wie folgt:

Wie wir feststellen kann nur root mounten. Also "sudo" voranstellen oder den Benutzer zu root wechseln.

Wieder gilt: Keine Fehler = Keine Probleme.
Wenn ihr FAT oder NTFS auf dem Datenträger habt, ist es gut möglich dass man noch zusätzlich den Typ des Dateisystems angeben muss.

Für FAT lautet der Befehl dann:

und NTFS:

Oder wenn ntfs-3g installiert ist:

Bei FAT und NTFS kann es gut angehen dass man zusätzliche Optionen beim mounten angeben muss um auf die Partitionen überhaupt lesen und schreiben zu können.
Bei ext3 und andere Linux Dateisysteme ist das nicht nötig, da man dort einfach die Dateirechte mit root ändern kann.
Info: Windows Dateisysteme haben eine eigene Rechteverwaltung, und sind deshalb generell nicht mit den Linux Befehle chmod, chown etc. kompatibel.
FAT hat, soweit ich weiß, überhaupt keine Rechtekontrolle.

Sollten keine weiteren Fehler aufgetreten sein, können wir ja mal versuchen den Inhalt vom Verzeichnis "myusb" erneut auszugeben:

Bei mir wird ein Verzeichnis angezeigt. Dieses Verzeichnis wird bei ext3 Dateisystemen Automatisch angelegt.
Sollten auf euren USB Stick irgendwelche Dateien sein, müssten die jetzt im Verzeichnis myusb angezeigt werden :)

"unmounten" also aushängen, könnt ihr mit dem Befehl "umount" (nicht "unmount"). Dieser Befehl muss natürlich auch mit root-rechten ausgeführt werden.
Als erstes Argument geht es oftmals am besten, wenn das Ziel, also der Ort an dem Der Datenträger eingehängt wurde angibt.

Manchmal tauchen Fehler auf wie "device is busy".
In dem Fall liegt es daran, dass noch irgendein Programm versucht auf den Inhalt des Datenträgers zuzugreifen.
Manchmal helfen da Programme wie "lsof myusb" um zu erkennen welcher User und welches Programm auf das Verzeichnis zugreifen. Diese müssen dann einfach nur geschlossen werden.


Wer mal schnell eine komplette Verzeichnis Struktur an einem anderen Ort braucht, kann diese dort mit dem mount Befehl ohne Probleme einhängen.
Als Beispiel:
Ich habe lokal einen Webserver installiert, auf den man von Außen zugreifen kann.
Des Webverzeichnis befindet sich Beispielsweise unter "/home/balmung/www"
Nun möchte ich gerne ein paar mp3s zum Download freigeben. (natürlich sind diese mp3s Lizenzfrei).
Diese mp3s befinden sich aber unter diesem Verzeichnis:
/home/bamlung/Musik/Lieblings_Band

Ich hätte jetzt einige Möglichkeiten. Ich könnte ein zusätzliches Webverzeichnis (z.b. in dem ich eine subdomain erstelle) einrichten, oder ich könnte einfach sämtliche mp3s ind das Webverzeichnis kopieren.
Da das aber alles ziemlich mühsam und Zeitaufwendig ist, hab ich mich für die Dritte Methode entschieden: Ich Binde das Verzeichnis einfach in einem Unterordner des Webverzeichnisses ein.
ich erstelle mir erst einen passenden Ordner:

und Geben dann (mit root rechten) den Befehl ein:

Keine Fehler = Keine Probleme.
Ab sofort sollten alle Dateien aus "/home/balmung/Musik/Lieblings_Band" AUCH unter "/home/balmung/www/mp3s" erreichbar sein. Und das beste: Der Webserver bekommt davon nicht das geringste mit. Der denkt das ist ein stinknormales Verzeichnis wie jedes andere auch.


Auch interessant ist die "loop" option.
Mit der kann man Dateien mounten, die ein Dateisystem enthalten. Das beste Beispiel sind ISO-Dateien (also CD-Images).
Wenn du ein CD-iso-Datei hast, kannst du die einfach an einem Beliebigen Punkt einhängen.
Wir erstellen erst ein Verzeichnis:

Und binden dann dort die iso Datei direkt ein:

War der Befehl erfolgreich, findet ihr unter dem Verzeichnis jetzt den Inhalt des CD-Images.

Das gleiche gilt auch für andere Dateisystem innerhalb von Dateien.
Das ganze können wir auch recht leicht demonstrieren.

Als erstes erstellen wir eine Datei mit einer größe von, sagen wir 50 MiB.
Das sollte zum rumprobieren ausreichen.
Um die Datei zu erstellen benutzen wir das Programm "dd". Folgender Befehl sollte auch ohne root-Rechte funktionieren:

Dort steht was von "(52 MB)", aber wenn wir uns den Ordnerinhalt mit ls -lh anschauen sehen wir dass die größe stimmt:

Die Datei wurde mit 50 Megabyte aus "/dev/zero" erstelt. /dev/zero ist kein wirkliches Gerät sondern nur virtuell, und gibt nur "null-bytes" aus. Die Datei ist also mit 50 Megabyte Nullen gefüllt.
Um in diese DAtei jetzt ein Dateisystem zu quetschen, benutzen wir den Befehl "mkfs" (make filesystem), und geben mit einem Punktgetrennt den Typ des Dateisystems an (mit root-Rechte):

Fertig. Das Dateisystem sollte jetzt in der Datei enthalten sein.
Um das nutzen zu können erstellen wir wieder ein Verzeichnis:

Und dort wollen wir das neue Dateisystem einhängen:

Wenn keine Fehler auftreten, sollte jetzt im Verzeichnis "mein_dateisystem" der Ordner "lost+found" liegen, welche bei ext3 System ja automatisch erstellt wird.

Alles was jetzt ins Verzeichnis "mein_dateisystem" gelegt wird, landet direkt in der Datei "dateisystem".
Beim Befehl "df" könnt ihr jetzt auch den "Datenträger" erkennen.
schaut wahrscheinlich etwa so aus:


mit "umount mein_dateisystem" könnt ihr es wieder entfernen.


--------------------------------

Das wars erstma wieder von menier Seite aus. Ich hoffe der zweite hat euch geholfen. Mal schauen was ich als nächstes nehme. Vielleicht was mit Verschlüsselung? ;)

---

Fragen? Kritik? Verbesserungsvorschläge?
Dann Kontakt aufnehmen unter:
Jabber: chaozzbubi [at] jabber.hot-chilli.net (bevorzugt)
Mail: lars.peter.sondergaard [at] gmx [dot] net

---

mfg Balmung



Balmungs PC
  
Up 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
 Seite 1 von 1
« Vorheriges Thema | Nächstes Thema »
Gehe zu:  

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

Ähnliche Themen
Betreff der Nachricht Forum Autor Antworten 
DS Linux Fragen GNU/Linux    SirZimt  7
Liste mit Distributionen & Informationen zu Linux GNU/Linux    Anonymous  13
Linux Sinvoll oder nicht?? GNU/Linux    timgustaw  13
Ähnliches wie Sandra Lite für Linux - Ubuntu 9.10? Software    L_u_k_a_s  7
Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.
cron