+ Antworten
Seite 1 von 4 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 38

Thema: [TUTORIAL] Terminal - Teil 1

  1. #1
    Hobbes_
    Inaktiv

    [TUTORIAL] Terminal - Teil 1

    Hallo zusammen,

    Wie ich in der Liste gesehen habe, wurde noch ein Tutorial zu Terminal gesucht...

    (0) Einleitung
    Für den Alltag eines üblichen Mac-Users braucht es das Programm Terminal eigentlich nicht. Da geniesst man die aufgeräumte Benutzeroberfläche. Ein direkter Zugriff auf den UNIX-Unterbau des Mac OS X – Darwin – kann in verschiedenen Fragestellungen nützlich sein (Benutzung von Compilern ohne Integration ins IDE, Netzwerkaufgaben, Benutzung von Spezialprogrammen, Definition von Skripten / Cron-Jobs,...). Da sehr viele Web-Server übrigens Linux-Server sind (LAMP), helfen diese Kenntnisse gleichzeitig auch, einen solchen Web-Server besser zu verstehen.

    Dieses Tutorial richtet sich in erster Linie an Mac-User, welche noch keinen Kontakt mit Terminal hatten (es ist bewusst sehr einfach gehalten und erklärt einige Details bewusst noch nicht). Aus Platzgründen wird das Tutorial auf verschiedene Posts verteilt.

    Wer übrigens bereits Kontakt mit einer Linux- oder einer UNIX-Distribution hatte, kann dieses Tutorial wohl getrost überspringen. Daneben empfiehlt sich bei ernsthafter weiterer Benutzung zumindestens ein kleines Buch über UNIX.

    Selbstverständlich ist dieses Tutorial erweiterungsfähig. So bin ich froh um konstruktive Kritik (Fehlermeldungen / Erweiterungsvorschläge).

    Viel Erfolg!
    psc


    Inhalt
    Teil 1
    (1) Das Programm
    (2) Unix als System
    (3) man
    (4) Einige Befehle

    Teil 2
    (5) I/O-Redirection / Pipes und Wildcards / Regular Expressions
    (6) Editoren vi/vim, Emacs und nano
    (7) "Pimp my Terminal"

    Teil 3
    (7) "Pimp my Terminal" (Fortsetzung)
    (8) User / Admin / Superuser

    Teil 4
    (8) User / Admin / Superuser (Fortsetzung)
    (9) Wie komme ich zu UNIX-Programmen?

    Teil 5
    (10) Einige Unterschiede zwischen Darwin und anderen UNICES
    (11) Weitere Informationen / Referenzen / Links
    Dank

    Einige spezielle Zeichen
    Im Verlauf dieses Tutorials werden einige spezielle Zeichen notwendig werden: ~ # [ ] { } / | \ < >
    Wer diese noch nicht benutzt hat, kann sie am einfachsten hier nachschlagen:
    Apfel --> Systemeinstellungen --> Landeseinstellungen --> Tastaturübersicht


    (1) Das Programm
    Das Einfachste zuerst: Das Programm Terminal findet sich im Verzeichnis
    /Programme/Dienstprogramme
    Damit wird ab Panther (10.3) in einem neuen Fenster standardmässig bash angezeigt. bash ist kurz gesagt ein Interpreter, welcher die eingegebenen Kommandos ans System weitergibt. Diese Form der Benutzerumgebung wird auch Shell genannt (siehe bash / Shell). So arbeitete man früher mit allen Computern bevor die heute üblichen grafischen Benutzeroberflächen Standard wurden.
    Eine Shell erlaubt neben direkten Benutzereingaben auch das Ausführen von Skripten (Unix war ursprünglich spezialisiert darauf, möglichst viele Funktionen mit kompakten Programmen zu ermöglichen, welche mittels solcher Skripte verbunden waren) sowie eine gewisse Editierbarkeit der Befehle.

    So sieht bash beim Start aus. Eine freundliche Begrüssung durch Darwin:

    Last login: Fri Apr 6 16:42:04 on console
    Welcome to Darwin!
    MacXYZ:~ Benutzername$


    Die unterste Zeile ist der sogenannte Prompt, hinter welchem die Befehle eingegeben werden. MacXYZ ist der Name des Computers. Dann folgt das aktuelle Verzeichnis. Dabei muss man wissen, dass die Tilde ~ ein Verweis auf das eigene Benutzerverzeichnis ist. Standardmässig beginnt bash im Benutzerverzeichnis. Dahinter folgt der Benutzername. Das Dollarzeichen $ dahinter zeigt, dass bash im Benutzermodus betrieben wird, in dem einige Befehle nicht möglich sind. Ein Gartenzaun # würde zeigen, dass man sich als Superuser (root) angemeldet hat mit vollem Zugriff (siehe unten)...

    Ich benutze diese Zeichen in diesem Tutorial auch, um den Prompt am Anfang verkürzt zu symbolisieren.

    Zitat Zitat von Goldene Regel
    Es ist wichtig, dass Du in der Shell nur Befehle ausführst, von denen Du weisst, was sie machen. Benutze also kein Programm und keine Option, wenn Dir nicht klar ist, was passiert, wenn Du dann auf RETURN drückst!
    Geben wir einen ersten Befehl ein (darauf hast Du ja sicher gewartet ):
    Als erstes benutzen wir ein Programm, das uns eine Auflistung des Verzeichnisses gibt (ls = list directory contents). Gib mal ls ein (also LS kleingeschreiben) und betätige den Zeilenvorschub.

    Gratulation! Damit siehst Du eine Auflistung der Verzeichnisse und Dateien des aktuellen Verzeichnisses ~ (Dein persönliches Benutzerverzeichnis). Unten zeigt sich ein erneuter Prompt für den nächsten Befehl. Erklärungen folgen weiter unten im Tutorial

    Die Shell wird mit dem Befehl exit beendet.


    (2) Unix als System
    Die Benutzung des Terminals setzt die Kenntnis einiger grundsätzlicher Elemente eines UNIX-Systems voraus. Es ist extrem logisch aufgebaut (das Design gefällt mir immer wieder).
    UNIX (bzw. initial UNICS) wurde als Multiuser-System konzipiert (sehr interessant: UNIX, Geschichte). Zumindest gerüchtehalber wurde es initial nur entworfen, um ein bestimmtes Spiel (Space Travel) auch auf einem anderen Computern betreiben zu können. Daneben ist die Geschichte von UNIX nur schon durch dessen Hauptautoren eng mit der Entwicklung der Programmiersprache C verknüpft.

    (2.1) Rechte in Unix
    Ein Multiuser-System setzt eine strikte Rechteverwaltung voraus. Rechte werden für jede Datei vergeben bezüglich
    • lesen (R für read)
    • schreiben (W für write)
    • ausführen (X für execute)

    Diese Rechte werden separat angegeben für
    • Benutzer (sozusagen der Besitzer der Datei)
    • Gruppe (Listen aus verschiedenen Benutzern)
    • Alle
    Ein weiteres Flag definiert spezielles (zB ein Verzeichnis oder einen Link auf eine Datei)

    So kann beispielsweise definiert werden, dass nur der Besitzer eine Datei lesen und schreiben darf, eine definierte Benutzergruppe die Datei lesen kann, jedoch andere Computerbenutzer die Datei nicht einmal lesen dürfen.

    Spezielles | Benutzer-Flags (rwx) | Gruppen-Flags (rwx) | Alle-Benutzer-Flags (rwx)

    Beispiel:
    drwx------ 5 User User - 170 Jul 3 2006 Music

    Klar ein Verzeichnis (d am Anfang), der Benutzer ‚User’ darf das Verzeichnis sehen, darf schreiben und darf es öffnen (Das Ausführen eines Verzeichnisses (x) bedeutet es zu öffnen). Diese Rechte werden allen anderen Benutzern des Computers verweigert.

    -rw-r----- 1 User GruppeA - 557 Jul 27 2006 beispiel.txt

    Die Datei beispiel.txt darf vom Benutzer gelesen und beschrieben werden. Benutzer, die Miglieder der Gruppe GruppeA sind, dürfen die Datei lesen. Andere Benutzer des Computers dürfen die Datei nicht einmal lesen. Die Datei hat keine Berechtigung ausgeführt zu werden. Das ist gut so: Die Datei ist ja auch kein Programm.

    Probier es selbst mal aus. Benutze mal folgendes Kommando
    $ ls –l

    Info: Der Befehl ls steht für ‚list directory content’. Die Buchstabenkürzel hinter dem Gedankenstrich sind Optionen (werden weiter unten erklärt).

    Resultat: Du siehst die Rechteverteilung aller Dokumente Deines Verzeichnisses.

    Ergänzend zu diesen klassischen POSIX-konformen Dateirechten erlaubt Mac OSX ab 10.4 (Tiger) auch eine genauere Rechteverteilung mittels Access Control Lists (Granularität, siehe Kapitel 10)

    (2.2) User / Admin / Superuser
    UNIX basiert auf einem hierarchischen Rechte-System, in dem definiert ist, was ein bestimmter User machen darf. Grundsätzlich wird in UNIX-Systemen zwischen einem Superuser (meist ‚root’ genannt) und gewöhnlichen Benutzern mit klar eingeschränkten Rechten unterschieden. Der Superuser hat alle Rechte auf dem System. Damit besteht jedoch auch das Risiko, dass sich Fehler negativ auf das ganze System auswirken.
    Oftmals legt man neben dem eigentlichen Superuser root weitere User mit Administrationsrechten an, welche gezielt auf einzelne Elemente des Systems Einfluss nehmen können (heutzutage übliche "Rollenbasierte Administration", die auch in Darwin konsequent umgesetzt ist).
    Nebenbei: Darwin ist in dieser Hinsicht speziell, dass der in Benutzereinstellungen mit Administrator-Rechten ausgestattete Benutzer dieser Zwischenform entspricht und nicht etwa 'root'. Wenn man sich unbedingt als root einloggen können möchte, dann muss man das im Netinfo Manager speziell aktivieren. Dies ist jedoch nichts für uns Einsteiger Es ist auch nicht notwendig (siehe Kapitel 8 in Teil 3).

    Das oben erwähnte Benutzerverzeichnis ~ des aktuellen Benutzers ist übrigens im Verzeichnis /Users/Benutzername/ abgelegt. Wir gehen das gleich mal anschauen...

    Dazu kurz eine Info über einige definierte Verzeichnisse:
    / Basisverzeichnis des Systems (root)
    ~ Benutzerverzeichnis des aktuellen Benutzers
    ~name Benutzerverzeichnis des Users name
    . aktuelles Verzeichnis
    .. Verzeichnis oberhalb des aktuellen in der Verzeichnishierarchie

    Wichtig: Zwischen dem Basisverzeichnis / (root) und dem Superuser (ebenso meist root genannt; hat UID 0) muss klar unterschieden werden.

    Die Daten sind ausserordentlich gut geordnet. Anbei eine kurze Zusammenstellung der typischen Verzeichnisse eines UNIX bzw. Linux Systems. Mac OS unterscheidet sich in einigen Punkten jedoch grundsätzlich (siehe Kapitel 10).

    Relative und absolute Verzeichnisbezeichnungen
    • Ein absolute Verzeichnisbezeichnung definiert sich immer ab dem
      Basisverzeichnis / . Beispiele:
      /Users/psc/.Trash
      /Users/psc/Testdateien/anderes/dummy.txt
    • Eine relative Verzeichnisbezeichnung definiert sich immer ab dem aktuellen Verzeichnis. Daran muss insbesondere gedacht werden, wenn ein Befehl wiederholt wird, wenn zwischenzeitlich das Verzeichnis gewechselt wurde. Beispiele:
      psc/.Trash
      ../dummy.txt
    Zum Wechseln des Verzeichnisses benutzen wir den Befehl cd (change directory)

    Also: Wir sind ja jetzt immer noch in unserem heimatlichen Benutzerverzeichnis ~, nicht wahr?

    Gehen wir also mal ein Verzeichnis nach oben:
    $ cd ..

    Wir sehen am Prompt, dass das Verzeichnis gewechselt hat. Es ist jetzt /Users
    MacXYZ:/Users Benutzername$


    Weil es so schön war, nochmals

    $ cd ..

    Jetzt sind wir im Baisisverzeichnis, also in root. Das aktuelle Verzeichnis wird im Prompt auch mit / angegeben.

    MacXYZ:/ Benutzername$

    Jetzt schauen wir mal, was es da so hat:
    $ ls –l (die Option ist ein kleines L)

    Wir sehen vor allem eine Liste von Verzeichnissen (d am Anfang der Flags), die verschiedenen Benutzern gehören und verschiedenen Gruppen den Zugriff ermöglichen. Wir sehen auch das Verzeichnis Users, in dem letztlich alle Benutzerverzeichniss sind.

    Gehen wir nochmals dorthin zurück. Wir benutzen
    $ cd Users/Benutzername

    Einfacher geht es auch mit folgendem Befehl. Er führt immer zurück ins eigene User-Verzeichnis:

    $ cd ~

    Mit cd und ls können wir also das ganze System mal ausloten und uns eine Information holen, was wo so gespeichert ist. Der Finder ist da natürlich wesentlich schneller und attraktiver. Jedoch sehen wir dort nie direkt so viele Details wie im Terminal.

    (2.3) Präzision im System
    Im Gegensatz zu den Shells anderer Betriebssysteme ist UNIX nicht tolerant. Da kommt es auf jedes Leerzeichen, sowie auf Gross- und Kleinschreibung an. Die Shell nimmt einen absolut beim Wort und tut, was man sie beauftragte zu tun. Das muss nicht zwingend das sein, was man selbst beabsichtigte zu tun. Diese verlangte Disziplin ist zu Beginn mühsam; hilft dann später, dass man sich wirklich klar sein kann, was passiert.

    Ach ja: Im Finder gibt es die Möglichkeiten auch Dateien mit Leerzeichen im Dateinamen zu haben. Pfade zu solchen Dateien müssen mit Anführungs- und Schlussstrichen gekennzeichnet werden. Sonst werden fälschlicherweise mehrere Parameter angenommen:

    $ less "~/irgend ein Verzeichnis/noch ein Verzeichnis/irgend eine Datei.txt"


    (3) man
    Als nächsten Befehl lege ich man (kurz für Manual = Bedienungsanleitung) ans Herz. Dieser ist einer der hilfreichsten Befehle, der zu jedem Befehl eine kurze Bedienungsanleitung enthält. Wichtig ist insbesondere Erklärung der Optionen (jeweils hinter dem Gedankenstrich angeführt) und anderer Parameter (zB. die bereits benutzten Verzeichnisnamen).

    Schauen wir mal, was ls so für Optionen bietet:
    $ man ls

    Eine ganze Menge, nicht wahr . Dabei findet man auch, was die Option -l bedeutet, die wir oben für ls benutzt haben.

    Das ganze ist (leider) in Englisch gehalten. Gerade für Arbeiten auf Systemebene oder zum Schreiben von Programmen lohnt es sich, Englisch zu lernen (selbstverständlich gibt es auch andere Gründe )...
    Anbei ein Link mit einem Online-man mit deutschen Texten (leider unvollständig): man in Deutsch

    man basiert im aktuellen OSX auf dem Programm less (früher more), welches man allgemein zum Anschauen von Textdateien benutzen kann. Entsprechend können alle Optionen benutzt werden. Nur die wichtigsten kurz zusammengefasst:
    h --> Hilfeseite (wird dann wieder mit q verlassen)
    q --> Programm beenden

    Pfeiltasten --> zeilenweise nach oben oder unten
    w --> ganze Seite nach oben
    z oder Leertaste --> Ganze Seite nach unten
    g --> an den Anfang des Dokuments
    G --> an den Schluss des Dokuments

    /test --> Suche nach dem Wort test (man kann auch reguläre Ausdrücke verwenden)
    n --> nächste Fundstelle vorwärts
    N --> vorgängige Fundstelle rückwärts
    Wir sehen: UNIX-Programme bieten ausserordentlich viele Optionen...

    Dabei lege ich insbesondere die Suchfunktion ans Herz, da man so rasch die Bedeutung der Optionen anzeigen lassen kann. Beispiel:
    $ man ls
    Eingabe: /-l
    n bzw. N nach Bedarf
    Auch cd und man selbst haben einiges zu bieten:
    $ man cd

    bzw.

    $man man

    Auch bash hat selbstverständlich seine eigene manpage:
    $man bash


    Eine kurze Hilfe bieten auch oft die Programme selbst. Einige haben eine Option -h bzw. --h, mit denen sie die wichtigsten Parameter angeben. Den Schlüssel zum Erfolg bringt jedoch meist man.

    (4) Einige Befehle
    Mit der Shell kann man sich selbstverständlich nicht nur das Verzeichnis anzeigen lassen. Der Schlüssel zum Erfolg ist die genaue Kenntnis der vorhandenen Befehle (teilweise Elemente der Shell, teilweise Programme, teilweise Scripts). Zu Beginn ist man erstaunt, wie viele Probleme in UNIX nicht durch Programme, sondern durch Scripts gelöst werden, welche auf basalste Programme zurückgreifen.
    Um nicht einfach eine Liste wiederholen zu müssen, verweise ich auf eine externe Quelle. Wichtig ist, dass ein Befehl genau verstanden wird, bevor er eingegeben wird. Bereits als User kann man schon einige Dinge löschen, als Admin/Superuser kann man mit wenigen Tasten das System unbrauchbar machen. So lohnt es sich, einen Befehl gerade bei kritischen Befehlen zu prüfen, bevor man ihn mittels der Eingabetaste zur Ausführung bringt...
    Diese Informationen können durch das integrierte Hilfesystem leicht erhalten werden. Ein man <irgendeinBefehl> lohnt sich wohl vor jeder ersten Anwendung. Ich empfehle deshalb, sich nun auch etwas Zeit zu nehmen und sich die wichtigen Befehle zB. aus dieser Liste in man oder online anzusehen. (Nebenbei: Es hilft zu wissen, dass Darwin ein Derivat des BSD-UNIX ist mit POSIX-Kompatibilität)

    Da sich nur wenige Leute schon zu Beginn alle Optionen der Befehle locker merken können , sind Übersichtskarten mit typischen Befehlen (Beispiel [PDF]) praktisch.

    (4.1) Wisse, was Du tust!
    Aufgrund der sehr kompakt gehaltenen Befehle können teilweise bereits einzelne falsch eingegebene Buchstaben aus einem problemlosen Kommando ein Problem grösserer Tragweite produzieren. Dabei gilt es insbesondere auch zu beachten, dass UNIX strikt zwischen Gross- und Kleinschreibung unterscheidet. Dies ist insbesondere wichtig, da es einige Buchstaben gibt, die als unterschiedliche Optionen verwendet werden, je nachdem ob gross- oder kleingeschrieben.
    Dies soll nicht Angst machen, das System zu benutzen. Eine Wachsamkeit ist vor Betätigung der Return-Taste jedoch immer angebracht...

    Einige wichtige Befehle, die sich als erstes nachzuschlagen lohnen
    • Dateien: ls (list, Dateien listen), cp (copy, kopieren), mv (move, verschieben), rm (remove, löschen), touch (Datei berühren), open (Mac spezifisch)
    • Verzeichnisse: pwd (aktuelles Verzeichnis anzeigen), cd (change dir, Verzeichnis wechseln), mkdir (make dir, neues Verzeichnis erstellen), rmdir (remove dir, leeres Verzeichnis löschen).

    Diese Befehle stellen zahlreichste Optionen zur Verfügung, welche man am besten in den man pages nachsieht. Dazu gehören so mächtige Optionen wie rekursive Anwendung (zB. Kopieren ganzer Unterverzeichnisse - jedoch auch Löschen ganzer Dateibäume mit allen Dateien...). Daneben gibt es Sicherheitsoptionen, welche es ermöglichen, eine Sicherheitsfrage aufzurufen. Wir werden weiter unten noch sehen, wie solche Sicherheitsoptionen mittels alias direkt standardmässig "aktiviert" werden können.

    (4.2) Von offenen und versteckten Dingen
    Neben normal sichtbaren Dateien gibt es auch versteckte Dateien. Diese haben meistens einen Bezug zum System, so dass Manipulationen erst recht sorgfältig vorgenommen werden müssen (gewisse Dinge kann man nicht oft genug sagen ). Versteckte Dateien haben einen Punkt (.) am Anfang des Namens. Schauen wir uns mal die versteckten Dateien unseres Benutzerverzeichnisses an.

    $ cd ~
    $ ls -lA


    Wir sehen eine neue Option -A für ls. Dabei gilt, dass ls -l -A gleichwertig zu ls -lA ist.

    Als Übung empfehle ich mal mittels man nachzuschauen, was der Unterschied zwischen ls -la und ls -lA ist.

    Daneben können wir uns ja mal anschauen, was wir so im Abfalleimer haben:
    $ ls -l ~/.Trash

    (hoffentlich gut aufgeräumt...)


    (4.3) Abkürzungen durch den Wald
    Bis jetzt haben wir nur einzelne Beispiele von Shell-Befehlen angeschaut. Allgemein ist ein Befehl folgendermassen aufgebaut
    $ Programm [-Optionen] [-evtl.andereOptionen] [Parameter] [evtl.andereParameter]

    Beispiel - Vorbereitung:
    $ cd ~
    $ mkdir tutorial_test
    $ touch test.txt
    $ cp -i test.txt tutorial_test/test_april07.txt


    Beispiel:
    $ cp -i test.txt tutorial_test/test_april07.txt

    Erklärung: Wir wechseln in unser Benutzerverzeichnis. Wir erstellen ein Verzeichnis tutorial_test. Dann generieren wir eine Datei test.txt (bzw. aktualisieren das letzte Lesedatum, wenn sie bereits existieren sollte). Diese Datei test.txt wird dann nach tutorial_test/test_april07.txt kopiert. Wenn die Zieldatei bereits bestehen sollte, wird aufgrund der Option -i wird erst gefragt, bevor die Zieldatei überschrieben wird. Wir werden diese Sicherheitsoption noch häufiger nutzen...

    Daneben sehen wir, dass wir jetzt zweimal denselben Befehl hintereinander eingegeben haben. Das müsste sicher auch einfacher gehen... Richtig: Nun kommen einige der Vorteile der Shell zum tragen. Die Shell merkt sich die letzten Befehle.
    Wenn wir die Pfeiltaste nach oben benutzen, wird jeweils der letzte Befehl vorgegeben, der direkt ausgeführt oder auch zuerst modifiziert werden kann. Dies kann mehrfach wiederholt werden, so dass wir rasch einen der letzten Befehle erneut ausführen können.

    Wir können auch die ganze Liste ansehen:
    $ history

    Wir sehen eine durchnummerierte Liste mit allen vorgängigen Befehlen. Selbstverständlich haben diese Nummern ebenso eine Bedeutung

    Nehmen wir die Nummer des obenstehenden Befehls mit cp. Wir können ihn auch ausführen, indem wir einfach dessen Nummer benutzen. Wenn wir annehmen, dass er Nr 12 wäre, so geben wir ein
    $ !12

    That's it! Das ist schon recht praktisch, nicht wahr.

    Nur so aus Interesse: Wo speichert bash seine History? Schauen wir sie uns mal an.
    $ less ~/.bash_history
    Es ist also eine einfache versteckte Datei in unserem persönlichen Verzeichnis.

    Weitere Editierbefehle schauen wir uns später an: Kapitel 7, Teil 3).


    Link: Fortsetzung Teil 2
    Geändert von Nathea (04.11.2009 um 19:56 Uhr) Grund: Ergänzungen / Typos...

  2. #2
    inaktiv Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte
    Registriert
    12.2003
    Beiträge
    5.468
    Cool!

    Was ich mir auch als Naechstes wuenschen wuerde, ist u.a.

    - wie ich meinen Prompt aendern kann

    - wie ich (wahrscheinlich mit alias?) Kuerzel fuer Befehle und Befehlsketten anlegen kann

    - wie ich meine Befehlshistory bearbeiten kann, so dass mit Pfeil rauf bzw. Pfeil runter die Duplikate herausgefiltert werden etc. etc.


    Ich bin ganz neugierig auf Weiteres ... hab' frueher auf dem NeXT mal bissl in der Shell "gespielt" und wuerde jetzt gerne wieder bissl tiefer einsteigen.

  3. #3
    KayHH
    Inaktiv
    „~/.bash_profile“ anlegen und z.B. „alias ll='ls -la'“ hinein schreiben. Gruss KayHH

  4. #4
    inaktiv Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte
    Registriert
    12.2003
    Beiträge
    5.468
    OK, danke, hier laeuft die TCSH (voreingestellt), ich habe inzwischen auch /usr/share/tcsh/examples/ gefunden ... das wird mich eine Weile beschaeftigen


    Interessant waere auch bissl Info zu den verschiedenen Shells, warum diese, warum nicht jene etc., auch wenn das vielfach einfach Geschmackssache ist. Soweit ich weiss, unterscheiden sich die Shells durchaus in Sachen Komfort.

  5. #5
    Hobbes_
    Inaktiv
    Vielen Dank f&#252;r all die zahlreichen positiven Feedbacks. Dies motiviert enorm! Die angebrachten W&#252;nsche werde ich im Verlauf einbauen (siehe ge&#228;ndertes Outline).

    Ich hoffe, dass sich dieses Tutorial wirklich in einen einfachen und sicheren Einstieg in Darwins Welt entwickelt. Selbstverst&#228;ndlich freue ich mich weiter &#252;ber konstruktive Vorschl&#228;ge entweder per PM oder als Post.

    Dieses Tutorial soll &#252;brigens niemandem die geniale Benutzeroberfl&#228;che des Macs abspenstig machen. Gerade diese einfachste Bedienbarkeit des Computers ist dessen unangefochtene St&#228;rke. Die UNIX-Grundlage er&#246;ffnet jedoch einfach Optionen f&#252;r weitere Zusatzprogramme...

    Viel Vergn&#252;gen!
    psc

  6. #6
    Cellini pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich Avatar von pepi
    Registriert
    09.2005
    Beiträge
    8.739

    Pfeil

    Bei dem Thema kann ich mich natürlich nicht zurückhalten und muß auch meinen Senf dazugeben. Vorweg, herzlichen Dank an psc für die Arbeit.

    Man kann auch hier im Forum bequem auf lokale Pfade am Computer verlinken, so beispielsweise um das Auffinden des Terminals zu vereinfachen: Terminal (Dies funktioniert auch bei unterschiedlichen Lokalisierungen von Mac OS X.) Wenn das Terminal schon läuft wird es in den Vordergrund geholt, läuft es noch nicht, so wird es im Finder angezeigt (nicht gestartet, denn das wäre eine böse Sicherheitslücke).


    Ad "Einige spezielle Zeichen":
    Deine Angaben beziehen sich auf ein bestimmtes, nicht genanntes Tastaturlayout. Dies muß nicht zwangsläufig mit dem des Benutzers übereinstimmen. Ich persönlich verwende eine (physisch) deutsche Tastatur mit einem (logischen) österreichischen Layout. Dort ist beispielsweise das von Dir genannte Zeichen # (Hashmark, Doppelkreuz, Raute, Gartenzaun) nicht per alt-3 zu erreichen sondern hat eine eigenen Taste. (Auf alt-3 bekommt man dafür das Absatzzeichen.)

    Ein Blick in die (? > Systemeinstellungen > Landeseinstellungen >) Tastaturübersicht sollte es jedem ermöglichen bei seinem eigenen verwendeten Tastaturlayout die korrekten Tasten für Sonderzeichen zu finden.


    Ad (1):
    Die Shell bash ist seit 10.3 (Panther) die Standardshell von Mac OS X. Davor war es die tcsh, so wie es bei BSD nahen Unices üblich ist. Mit Panther hat sich Apple entschlossen die Standard-Shell auf bash zu ändern, diese ist bei Linux Systemen üblich.
    Selbstverständlich kann man auch unter Mac OS X andere Shells wie die csh, ksh oder auch die zsh verwenden.

    Es ist meiner Ansicht nach durchaus sinnvoll sich in diesem Tutorial auf die bash zu konzentrieren da für die Einsteiger die Unterschiede kaum relevant sein dürften und diese bei allen "aktuellen" Mac OS X Versionen die Standard-Shell ist.


    Ad 2.2 "User / Admin / Superuser"
    Der Superuser muß nicht zwingend root heissen. Tatsächlich ist es erlaubt (und in manchen Unix Varianten sogar gebräuchlich), daß dieser User einen anderen Namen (und Kurznamen) trägt. Bei Mac OS X hieß der System Administrator mit Kurznamen immer root. Bei anderen BSD Systemen gibt auch Superuser die avatar, baron oder toor heissen.
    Allen Superusern gemein ist bisweilen, daß sie die User ID 0 (Null) haben und alle wheel Bits gesetzt haben. Also im Single-User und im Multi-User Betrieb alle Rechte an Filesystem Objekten besitzen.

    Korrektur:
    Der root User wird in Mac OS X nicht wie von Dir beschrieben in den Systemeinstellungen aktiviert, sondern entweder im Netinfo Manager oder im Terminal mittels sudo passwd root (als Admin User). Dies ist jedoch definitiv nicht notwendig und sei auch nicht empfohlen! (Schon garnicht für Einsteiger.)

    Vorschlag:
    Um Verwirrungen hintanzuhalten fände ich es durchaus sinnvoll noch etwas deutlicher auf den Unterschied zwischen root User (UID 0) und root Directory (/) hinzuweisen.


    Korrektur:
    Superuser hat alle Rechte auf dem System (wie der Name schon sagt ist er prinzipiell der einzige der auf das ganze System, symbolisiert durch das Verzeichnis / = root zugreifen darf).
    Das ist inkorrekt. Es ist ein Unterschied zwischen dem ganzen System und dem Filesystem. Auf Das root Verzeichnis muß sogar jeder Benutzer zumindest lesend (r-x) zugreifen dürfen, sonst ist dieses System nicht für User/Prozesse benutzbar die nicht dem root User gehören. Unter Mac OS X haben alle Admin User Schreibrechte in /. (Was meiner Ansicht nach ein Bug in Mac OS X ist und wohl ein Tribut and Mac OS 9 Unsitten.)


    Ergänzung:
    Oftmals legt man neben dem eigentlichen Superuser root weitere User mit Administrationsrechten an, welche gezielt auf einzelne Elemente des Systems Einfluss nehmen können.
    Dies ist heutzutage üblich und wird "Rollenbasierte Administration" genannt. In Bereichen mit hochsensiblen Daten ist es zwingend notwendig so zu arbeiten. Mac OS X verwendet dieses moderne Konzept.


    Ad (2.1) Rechte in Unix
    Du beschreibst die sogenannten klassischen Zugriffsrechte, sog. POSIX Rechte. Es gibt darüber hinaus noch sogenannte Access Control Lists die auf den POSIX Rechten aufsetzen und weitaus genauere Einteilung (Granularität) von Rechten erlauben. ACLs sind seit Mac OS X 10.4 (Tiger) optional, mit Mac OS X 10.5 (Leopard) werden sie als Standard aktiv sein. ACLs können per ls -e angezeigt werden. Für den Einsteiger ist nur wichtig, daß die einen so heissen und, daß es die anderen auch gibt.


    Korrektur:
    Man kann sich im Dokument zB. mit den Pfeiltasten bewegen. Das Programm man hat übrigens eine eingebaute Hilfefunktion, die mit der Taste H aufgerufen wird. Das Programm wird mit Q beendet.
    Es sind die Tasten h und q (Kleinbuchstaben), Unix unterscheidet sehr genau zwischen Groß- und Kleinbuchstaben (Case sensitive). (Beispielsweise ist ein großer Unterschied zwischen ls -r und ls -R. Welcher Unterschied besteht, läßt sich bequem über die man page von ls herausfinden. Im speziellen Fall von ls kann man es auch gefahrlos ausprobieren.)


    Ergänzung:
    Mir geht das wichtige Thema Trennzeichen ab. Die Shell nimmt einen absolut beim Wort und tut was man ihr angeschafft hat. Das muß nicht zwingend das sein was man tun wollte.
    Die üblichen Trennzeichen sind das Leerzeichen, der (horizontale) Tabulator sowie ein Return Zeichen (Zeilenvorschub). Ein Trennzeichen trennt ein Kommando (zB ls) von dessen Optionen/Parametern (zB -A) und auch einzelne Argumente (zB ..). Es ist also ein Unterschied ob ich ls -a oder ls-a eingebe. Ersteres wird mir den Inhalt des aktuellen Verzeichnisses auflisten, so mir das erlaubt ist. Letzteres wird in -bash: ls-a: command not found resultieren, da es kein Kommando gibt welches literal ls-a heißt.
    Unter (MS-)DOS ist man hier nicht so exakt. Beispielsweise wird dort cd .. und cd.. ident behandelt. Eine Unix Shell ist hier (zum Glück) genauer und unterscheidet.


    Ergänzung:
    Beim Link "Unix Referenz-Karte (Christof Böckler)" sollte man ergänzen, daß es sich um einen direkten Link zu einer PDF Datei handelt.


    Erweiterungsvorschläge:
    Wie man eine man page liest, Hilfe zur Selbsthilfe.

    Einfache Steuersequenzen (^C, ^D, ^E, ^A, ^K, ^S, ^Q, esc-b, esc-f)

    Wildcards und einfache Regular Expressions (*, ?, [01234], etc.)

    Wo finde ich commands und die Unix Verzeichnisstruktur (/bin, /sbin, /etc, /var, /usr)

    Plumbing (Pipes (5)) ist ja schon geplant. Hier wird man den praktischen Nutzen der Shell und die sehr intelligente Verbindung von vielen kleinen spezialisierten Tools deutlich sehen können.

    Interaktive Texteditoren in der Shell (vim/vi, emacs, nano/pico) und warum es sinnvoll ist vi/vim (zumindest grundlegend) bedienen zu können.

    Das Environment und seine Variablen.


    Man verzeihe mir bitte das etwas überlange Posting.
    Gruß Pepi

  7. #7
    inaktiv Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte Bonobo erkennt, bewahrt und verstärkt die Werte
    Registriert
    12.2003
    Beiträge
    5.468
    Zitat Zitat von pepi Beitrag anzeigen
    [..]

    Man kann auch hier im Forum bequem auf lokale Pfade am Computer verlinken, so beispielsweise um das Auffinden des Terminals zu vereinfachen: Terminal (Dies funktioniert auch bei unterschiedlichen Lokalisierungen von Mac OS X.) Wenn das Terminal schon läuft wird es in den Vordergrund geholt, läuft es noch nicht, so wird es im Finder angezeigt (nicht gestartet, denn das wäre eine böse Sicherheitslücke).
    Bei mir geschieht keines von Beiden, das Terminal laeuft bei mir in letzter Zeit immer im Hintergrund, da ich ab und zu "zprint load_file_server" eingebe, um die Anzahl der aktuellen Elemente (? offenen Dateien?) beobachte, auf Hinweis in einem anderen Forum, um zu sehen, wann bestimmte Probleme auftreten, die allerdings seit 10.4.9 nicht mehr aufgetreten sind ...


    [..]

    Ad (1):
    Die Shell bash ist seit 10.3 (Panther) die Standardshell von Mac OS X. Davor war es die tcsh, so wie es bei BSD nahen Unices üblich ist. Mit Panther hat sich Apple entschlossen die Standard-Shell auf bash zu ändern, diese ist bei Linux Systemen üblich.
    Selbstverständlich kann man auch unter Mac OS X andere Shells wie die csh, ksh oder auch die zsh verwenden.

    Es ist meiner Ansicht nach durchaus sinnvoll sich in diesem Tutorial auf die bash zu konzentrieren da für die Einsteiger die Unterschiede kaum relevant sein dürften und diese bei allen "aktuellen" Mac OS X Versionen die Standard-Shell ist.

    [..]
    Oh, dann hab ich's wohl irgendwann einmal auf tcsh gestellt ... mir waere z.B. die Komfortabilitaet einer Shell wichtig, wobei ich natuerlich kaum weiss, was "komfortabel" ist und was nicht. Aber zum Beispiel wuerde ich mir eine intelligente Befehlshistorie wuenschen, die automatisch Dubletten rausschmeisst ...





    Man verzeihe mir bitte das etwas überlange Posting.
    Hahahahaha, alles verziehen

  8. #8
    Cellini pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich pepi hat die Güte in sich Avatar von pepi
    Registriert
    09.2005
    Beiträge
    8.739

    Pfeil

    Erg&#228;nzend hier noch ein Screenshot des ASCII Movie Players:


    Der Ausschnitt entstammt dem Spot "Security" aus Apple's aktueller "Get a Mac" Werbekampagne. Ein Bild in voller Aufl&#246;sung ist verlinked.


    @Bonobo
    Wenn Du Dein System von 10.2 auf 10.3, 10.4 upgedatet hast, anstatt komplett clean zu installieren ist Dir die eingestellte Shell als tcsh erhalten geblieben. Ich bezog mich auf frische Installationen, bzw. solche die vom Werk aus aufgespielt waren.

    Die Verlinkung von lokalen Files hat manchmal Probleme wenn man diverse Browser Plug-Ins installiert hat. (zB Saft in Safari). Ich gehe davon aus, da&#223; User die sowas verwenden soweit fortgeschritten sind, da&#223; sie das Terminal von selbst finden. (Auch wenn diese Annahme nicht immer zul&#228;ssig ist. )
    Gru&#223; Pepi
    Geändert von pepi (09.04.2007 um 16:36 Uhr) Grund: Default Shell Info für Bonobo ergänzt.

  9. #9
    Hobbes_
    Inaktiv
    Zitat Zitat von pepi Beitrag anzeigen
    Bei dem Thema kann ich mich nat&#252;rlich nicht zur&#252;ckhalten und mu&#223; auch meinen Senf dazugeben. Vorweg, herzlichen Dank an psc f&#252;r die Arbeit.

    (...)

    Man verzeihe mir bitte das etwas &#252;berlange Posting.
    Gru&#223; Pepi

    Hallo Pepi,

    Vielen Dank f&#252;r das lange (nicht &#252;berlange ) Posting.

    Schon mit der Konzeption dieses "kleinen" Tutorials war mir bewusst, dass es ein letztlich endloses Thema werden wird. Ich weiss, es gibt noch einiges zu tun (work in progress). Deshalb bin ich um Input / Korrekturen / Verbesserungsvorschl&#228;ge froh. Danke!

    Ich bin mir bewusst, dass es sehr viele Experten (zB. Dich) zu diesem Thema im Apfeltalk gibt. Sie m&#246;gen mir verzeihen, dass ich der Einfachheit halber einige f&#252;r sie sehr differenziert klare Dinge klar vereinfacht habe, da sich dieses Tutorial in erster Linie an die Personen richtet, die das erste mal an Terminal / UNIX schnuppern. Sozusagen ein Beginners-Tutorial, auf das man dann aufbauen kann.

    Die genannten Verbesserungsvorschl&#228;ge werde ich gerne ber&#252;cksichtigen!

    Bez&#252;glich Gross-/Kleinschreibung: UNIX unterscheidet ganz klar zwischen gross und klein. Dies kann insbesondere bei Optionen verh&#228;ngnisvoll werden. Eine Erfahrung, die ich auch von Programmiersprachen machen musste... Dies ist ein Punkt, auf den ich noch eingehen wollte.
    Ein Unterschied, der mir bisher jedoch im gegensatz zu Linux aufgefallen ist, dass Darwin zB. f&#252;r Verzeichniswechsel wenigstens in der von mir benutzten Shell [FONT="Courier New"]bash[/FONT] case-insensitive ist, dh. es wird nicht zwischen /Users oder /users unterschieden. Ich nehme an, dass dies ein Kompromiss an das Verhalten im t&#228;glichen Gebrauch mit der GUI Aqua ist, so dass das Verhalten zu fr&#252;heren OS-Versionen (Classic: auf 68k und PPC) konsistent gehalten werden kann. (?)
    Ja, [FONT="Courier New"]man[/FONT] bzw. [FONT="Courier New"]less[/FONT] wird v.a. mit h bzw q gesteuert (auch von mir). Sie akzeptieren jedoch gerne auch H und Q

    Das Ziel bleibt eine Einf&#252;hrung, so dass man dann auch die im speziellen Forum diskutierten Punkte nachvollziehen und nutzen kann. Es bleibt letztlich klar, dass sich der Anwender auf Shell-Ebene detailliert mit dem System auseinandersetzen muss, da das Potential einiger Kommandos sehr weitreichend ist und man sich sehr klar bewusst sein muss, was man da so tut...

    Vielleicht weckt ein einfaches Tutorial jedoch die Lust auf mehr!
    psc
    Geändert von Hobbes_ (09.04.2007 um 17:55 Uhr) Grund: Typos

  10. #10
    inaktiv Tengu ist ein Lichtstreif am Horizont Tengu ist ein Lichtstreif am Horizont Tengu ist ein Lichtstreif am Horizont Tengu ist ein Lichtstreif am Horizont Tengu ist ein Lichtstreif am Horizont Tengu ist ein Lichtstreif am Horizont Tengu ist ein Lichtstreif am Horizont Tengu ist ein Lichtstreif am Horizont Tengu ist ein Lichtstreif am Horizont
    Registriert
    02.2007
    Ort
    Darwinports
    Beiträge
    724
    Nen interessantes Thema k&#246;nnten noch init Systeme sein. Da besch&#228;ftige ich mich grade eingehender mit. (wenn ich nicht grade mit seltsem .profile Fehlern oder mangelnder http Unterst&#252;tzung grunds&#228;tzlich k&#228;mpfe )

    Zwar erscheint mir insbesonders die Integration vom "Terminal" sehr eigenwillig gel&#246;st bei MacOS, weil das als Teil des Interfaces l&#228;uft, aber das hat evtl. auch Vorteile.

    Ansonsten ist das Terminal ja auch nicht nur in BaSh nutzbar... Z Shell ist so grade mein zweites Thema technischer Weitbildung. Da kann man nett skripten.

    Naja... wenn das Tut so weit ist, schmei&#223; ich vielleicht noch eine kleine Anregung zu den Themen von oben rein.

    @Pepi: Der ASCII Movie Player ist ultrageil! Geekzone ist er&#246;ffnet!

    Man k&#246;nnte ja nen Terminal-Themen Chat machen dazu. Ich w&#228;r dabei.
    Geändert von Tengu (09.04.2007 um 19:08 Uhr)

+ Antworten
Seite 1 von 4 1 2 3 ... LetzteLetzte

Ähnliche Themen

  1. [TUTORIAL] Terminal - Teil 3
    Von Hobbes_ im Forum Software
    Posts: 4
    Letzter Beitrag: 08.05.2008, 20:01
  2. [TUTORIAL] Terminal - Teil 6 (Schluss!)
    Von Hobbes_ im Forum Software
    Posts: 7
    Letzter Beitrag: 10.04.2008, 22:03
  3. [TUTORIAL] Terminal - Teil 2
    Von Hobbes_ im Forum Software
    Posts: 12
    Letzter Beitrag: 15.02.2008, 15:05
  4. [TUTORIAL] Terminal - Teil 5
    Von Hobbes_ im Forum Software
    Posts: 0
    Letzter Beitrag: 17.04.2007, 00:32
  5. [TUTORIAL] Terminal - Teil 4
    Von Hobbes_ im Forum Software
    Posts: 2
    Letzter Beitrag: 12.04.2007, 21:15

Stichworte

Berechtigungen

  • Es ist dir nicht erlaubt, neue Themen zu verfassen.
  • Es ist dir nicht erlaubt, auf Beiträge zu antworten.
  • Es ist dir nicht erlaubt, Anhänge hochzuladen.
  • Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.