1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. In diesem Bereich findet ihr Tutorials und Reviews. Die Forenrechte zur Erstellung neuer Themen sind hier eingeschränkt, da Problemdiskussionen bitte in den übrigen Forenbereichen auf Apfeltalk zu führen sind. Wer ein Tutorial oder Review einstellen möchte, kann im Unterforum "Einreichung neuer Tutorials" ein neues Thema erstellen. Die Moderatoren verschieben den Beitrag dann in den passenden Bereich.
    Information ausblenden

[TUTORIAL] Terminal - Teil 6 (Schluss!)

Dieses Thema im Forum "Software-Tutorials" wurde erstellt von Hobbes_, 22.04.07.

  1. Hobbes_

    Hobbes_ Gast

    Dies ist Teil 6 eines Tutorials zu Terminal

    Inhalt
    Teil 1
    (0) Einleitung
    (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
    (9) Wie komme ich zu UNIX-Programmen? (Fortsetzung)

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


    ------

    (10) Einige Unterschiede zwischen Darwin und anderen UNICES

    (10.1) Theorie
    Ich denke, dass es keine Überraschung ist, dass die Unterschiede nicht grundsätzlich riesig gross sind. Wenn sie es wären, könnte der Vorteil – eben ein UNIX-System zu haben – nicht ausgenutzt werden.

    Grundsätzlich ist Darwin ein UNIX, das auf der Basis von BSD-Unix (BSD-daemon, Cal) jedoch mit einem modifizierten Mach-Kernel (Hybridkernel statt Mikrokernel) entstand. Darwin entspricht vollständig dem POSIX-Standard.

    Die Unterschiede zwischen Darwin und BSD hat Apple klar dokumentiert: Apple Developer Connection (ADC).

    Einie Besonderheiten zu anderen UNICES bestehen schon:
    • andere Verzeichnisstrukur (zusätzlich zur typischen UNIX-Ordner-Struktur noch Mac-spezifische Verzeichnisse; einige typische UNIX-Verzeichnisse fehlen dafür)
    • in Tiger zwar integrierte (jedoch standardmässig nicht aktivierte) und in Leopard dann standardmässig aktivierte Access Control Lists zur genaueren Rechte-Verteilung als im POSIX-Standard definiert.
    • MacOS-Programme speichern ihre Config-Daten in XML-Dateien ab (nur für Mac OS spezifische Programme relevant, da reine UNIX-Tools damit nichts anfangen.
    • Speicherung von User-Authentifizierungsdaten nicht in /etc, sondern NetInfo-DB (rsp. von LDAP-Server, anderen ’/etc’-Files)
      - Schnelle Beschränkung gewisser Userrechte durch den Admin via GUI (capabilities)
      - Keychain (klassische UNIX-Tools arbeiten nicht damit)
      - In Aqua eingebettete Verwendung von X-Windows-Applikationen, die für Darwin kompiliert sind
      EDIT: Seit 10.5.0 gibt es keine NetInfo mehr. Die lokalen Benutzer werden in /var/db/dslocal/nodes/Default gespeichert. Auch mehrere lokale DSLocal Stores sind möglich, müssen aber manuell zum Suchpfad für Authentifizierungen hinzugefügt werden. (Danke Pepi)

    Programme können insgesamt recht gut zwischen UNICES oder Linux ausgetauscht (insbesondere das andere *X auch POSIX-kompatibel ist) und nicht OS spezifische Elemente verwendet werden (im Mac zB. die oben erwähnten Keychain oder Aqua).

    Links zu diesen Informationen:
    http://www.oreilly.de/catalog/macxtigerunix/reviews.html
    http://www.thejemreport.com/mambo/content/view/215/
    http://isg.ee.ethz.ch/events/j2003/papers/mac_secyrity.pdf


    (10.2) Anpassungen innerhalb verschiedener Mac OS Versionen
    Im Vergleich zu den Vorversionen wurden einige Dateiverwaltungsprogramme für 10.4. angepasst. So können cp und mv nun auch mit dem Resource Fork umgehen (früher bestand ein Problem, dass leider nur der Datafork kopiert/verschoben wurde und der Resource Fork nicht berücksichtigt wurde).
    Bis zu 10.3 musste man dazu CpMac bzw. MvMac verwenden, die nur Teil der Developer Tools waren und weniger Optionen als die POSIX Originale haben. Alternativ konnte man damals zum Kopieren den Befehl ditto verwenden.


    (10.3) launchd der neue super daemon ab Mac OS 10.4 (Tiger)
    Zahlreiche wichtige Funktionen eines Systems werden von Hintergrund-Programmen ausgeführt, sogenannte daemons. Dazu gehören unter anderem Aufgaben des Systemstartes (init), Kontrolle von Netzwerkverbindungen (inetd), kontrolliertes Starten regelmässiger Aufgaben (cron), Protokollaufgaben (syslogd). Letztlich werden auch Mail-, File-, Druck- und Webserver (sendmail, smbd, cupsd, httpd) oft als deamons ausgeführt.

    Speziell sind in diesem Kontext Programme, welche benutzt werden zur Initialisierung des Systems, Starten von System-Scripts und daemons, insgesamt zur Vorbereitung des Systems auf ein problemloses Funktionieren. Für diese zahlreichen Aufgaben gab es in UNIX einige Programme, die den Start dieser Dienste übernahmen und kontrollierten(init, mach_init, rc, cron, xinetd, SystemStarter). So war init traditionell der erste Prozess auf einem UNIX-System.

    Ab Mac OS 10.4 (Tiger) übernimmt ein neuer einzelner daemon Manager(launchd, "system wide and per-user daemon/agent manager") die meisten Funktionen dieser Programme - obwohl diese aus Kompatibilitätsgründen noch praktisch vollständig mit dabei sind.

    Die Zusammenfassung der Aufgaben der verschiedenen Programme in eines bietet den Vorteil, dass die Strukturen wesentlich einfacher reguliert werden kann. So kann launchd zentral via launchctl gesteuert werden. Dazu gehören noch andere Features wie dynamisches Aus- und Einschalten nicht bzw. erneut benötigter Hintergrundprogramme, so dass auch Ressourcen des Computers geschont werden können. Obwohl der Startprozess so insbesondere eines Einzelplatzcomputers deutlich beschleunigt werden könne bleibt scheinbar als Kritik die Schwierigkeit eines solchen eintzigen Starters in komplizierten Netzwerkumgebungen (Ref).

    Dieser neue daemon launchd ist ein deutlicher Unterschied zu anderen UNICES bzw. Linux. Auf Details kann ich im Moment (u.a. aus Platzgründen) in diesem Tutorial nicht eingehen; deshalb auch die zahlreichen Links ( :) ). Gute Informationen finden sich wie gewohnt bei Apple selbst (in Englisch), im Internet (zB. hier von RealMacMark) und selbstverständlich in unseren vertrauten man pages :). Deshalb die gewohnte Empfehlung:
    $ man launchd
    $ man launchctl


    bzw. für Leute, dies gern direkt als PDF mögen (das pman Alias wird in Teil 3 erläutert)
    $ pman launchd
    $ pman launchctl



    (10.4) Spezifische Programme nur für Mac OS
    Daneben gibt es auch ein paar Programme, die es nur für MacOS gibt. Eine „kurze“ Liste findet sich beispielsweise hier. Auf einzelne gehe ich kurz ein:

    open
    Dieses Programm öffnet eine Datei, ein Verzeichnis oder gar eine URL wie wenn sie/es vom Finder aus mittels Doppelklick geöffnet hätte. Automatisch wird anhand der Dateistruktur beispielsweise das passende Programm gestartet. Für Detailinformationen empfehle ich wie immer
    $ man open :)

    Die Suchfunktion in man bzw. less zeigt uns rasch ein paar Beispiele:
    /examples​

    mdfind
    Die Spotlight-Suche innerhalb der Shell.

    ditto
    Dieses Kopierprogramm bietet einige Mac-spezifische Optionen im Vergleich zu cp. Nebenbei: Ab 10.4 kann cp jedoch korrekt mit den Mac-spezifischen Dateielementen umgehen (siehe oben).

    pbcopy und pbpaste
    Erlauben es, die Zwischenablage zu benutzen. Es bestehen einige Optionen. Wie immer:
    $ man pbcopy
    $ man pbpaste


    Beispiele:
    $ pbpaste | gzip > ~/zwischenspeicher.gz
    $ pbpaste | less
    $ pbpaste | grep "suchtext" | less


    Dieses Beispiel kann man weiterführen:
    $ pbpaste | grep "suchtext" | pbcopy

    grep kann auch durch non-interaktive Texteditoren (wie awk oder sed) ersetzt werden, so dass die Shell (oder ein Script) sehr konkret auf die Mac-Zwischenablage Einfluss nehmen kann.

    Information: Das ganze funktioniert nur lokal und innerhalb derselben Login-Session. Wenn Terminal via SSH mit einem entfernten Computer verbunden ist, so wird die Zwischenablage nicht hin- und herkopiert.

    Beispiel: Ein fixfertiges Shell-Clipboard-Tool für uns Apfeltalker (by pepi)
    Problem: Persönliche Mitteilungen können maximal 5000 zeichen lang sein.
    Lösung: Wie viele Zeichen sind schon geschrieben?
    - Text mittels apfel-a, gefolgt durch apfel-c ganzen Text ins Clipboard kopieren
    - in Terminal: $ pbpaste | wc -c

    say
    Aktuell noch ein praktischer Gag. Leider funktioniert das ganze bisher nur in Englisch so richtig...

    screencapture
    Auch in Terminal muss man also nicht den Fotoapparat hervornehmen, um einen PrintSCreen anzufertigen... :)

    $ screencapture ~/Desktop/bildname.png

    Optionen mit
    $ man screencapture

    Bild anschauen mit
    $ open ~/Desktop/bildname.png

    ---

    Als letztes noch zwei Programmtypen, welches nicht Mac-spezifisch ist, jedoch dennoch hilfreich sein könnten.

    curl
    curl holt Daten vom angegebenen Server. Es ist jedoch kein Webbrowser wie beispielsweise Lynx. Es wird nur der Quelltext einer Webseite geholt, was je nachdem jedoch für den Bau einer Suchmaschine nützlich sein kann. Auch ist curl nicht auf das http-Protokoll fixiert, sondern holt auch von

    Man könnte hier ergänzen, daß man lynx per fink installieren kann. Grundsätzlich wäre es empfehlenswert lynx-ssl zu nehmen, ohne SSL (https) Fähigkeiten geht es jedoch deutlich schneller. Ein deutlich besserer Terminal Browser als lynx ist elinks, den man ebenfalls per fink installieren kann

    lynx
    lynx ist der typische Textbrowser. Ein solcher kann insbesondere hilfreich sein, die eigene Webseite bezüglich Kompatibilität zu testen und dabei auch mal anzusehen, was die typischen robots der Suchmaschinen so "sehen". Lynx kann man ebenso mittels fink installieren. Dabei muss beachtet werden, dass die typischen Pakete (wenigstens aktuell) nur im unstable Bereich verfügbar sind (siehe Erklärungen bei fink). Im stable Bereich gibt es ein ähnliches älteres Paket, das sich jedoch links bzw. links-ssl nennt. Wir gehen im folgenden vom unstable Programmbereich aus:

    Wir holen uns wie gewohnt die Informationen bezüglich Paket mittels
    $ fink list lynx , bzw. für Details
    $ fink desc lynx

    Dabei kann eruiert werden, dass in Fink, das Paket lynx bereits die SSL-Verschlüsselungspakete (OpenSSL für https) beinhaltet, die sonst nur im Paket lynx-ssl beinhaltet sind.

    Eine Alternative zu lynx ist elinks, der noch etwas mehr Features mitbringt.

    Das ausgewählte Paket installieren wir unter Fink erneut wie gewohnt mittels
    $ fink install <paketname>

    Dabei gilt zu beachten, dass wir für diesen Befehl als Admin angemeldet sind, da fink ja von sudo Gebrauch macht (wir erinnern uns :) ). Deshalb ist auch ein Passwort notwendig.

    Informationen zum Programm gewinnen wir dann erneut (ich denke, Du weisst nun mittlerweile was nun kommt :) )
    $ man lynx
    $ man elinks


    oder für die ästhetischere Ansicht mittels
    $ pman lynx
    $ pman elinks

    (wenn Du die Shell-Funktion pman installiert hast, die wir im Kapitel 7.3.3, Teil 3 dieses Tutorials beschrieben haben...)


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


    So, das muss leider alles sein für heute.
    Das Tutorial hat jetzt einen ersten Abschluss gefunden. Als nächstes erfolgt nun ein Review zur Fehlerkorrektur und Ergänzung einiger nur teilweise ausgeführter Abschnitte (tcsh, perl/python). Fehler bitte gerne auch direkt mittels PM an mich. Danke!

    Wie bereits gesagt, richtet sich dieses Tutorial insbesondere an Personen, die noch gar keinen Kontakt mit Terminal hatten. Es beginnt auch ganz einfach. Ich gebe jedoch zu, dass es für Anfänger in Terminal gegen den Schluss schon etwas heavy sein kann, insbesondere wenn man rasch vorwärts geht. (?) Gewisse Dinge brauchen einfach etwas Zeit, bis sie sich setzen. Übung macht den Meister :)

    Für eine weiterführende Beschäftigung empfehle ich ein grundlegendes Buch (Buchhandlung Deines Vertrauens, links).

    Somit schlage ich nun vor, dass wir uns aus der Shell ausloggen mit
    $ exit

    Viel Erfolg!
    psc

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

    (11) Weitere Informationen / Referenzen / Links
    Obwohl dieser Text rein von mir geschrieben wurde und meine Erfahrung mit Shells widerspiegelt, habe ich mir selbstverständlich nicht einfach alles so aus den Fingern gesaugt. :) Auch ich habe eine Lernphase hinter - und auch vor mir. Dank Büchern und Internet kommt man heute ja schnell zu Informationen... So sollen zahlreiche gute Quellen aus dem Netz nicht unerwähnt bleiben. Auch versuche ich die guten Ideen der Posts auf dieses Tutorial in den Text einzubauen. Ich freue mich, neues zu lernen. Vielen Dank für die konstruktiven Vorschläge!

    (11.1) Apfeltalker
    Bereits in anderen Posts wurde auf Elemente des Terminals eingegangen. Anbei ein paar wichtige Referenzen. Andere mir nicht bekannte bitte kurz per PM an mich melden. Danke!

    (11.2) andere Links

    (11.3) Unterhaltung in Terminal

    Dank
    Vielen Dank an alle Apfeltalker, die mit ihren Verbesserungsvorschlägen zum Gelingen dieses Tutorials beitragen!

    Ein ganz besonders grosses Dankeschön geht dabei an pepi. Ohne seine zahlreichen ausserordentlich fundierten, detailreichen und pointierten Kommentare und Korrekturen hätte dieses Tutorial nicht die Qualität erreicht, die es heute hat. Vielen Dank an Tengu, für seinen Beitrag zu MacPorts. Ein weiterer Dank geht an quarx für die freundliche Durchsicht und Korrektur einiger Dinge im Kapitel zu fink.
     
    #1 Hobbes_, 22.04.07
    Zuletzt von einem Moderator bearbeitet: 04.11.09
    rakader gefällt das.
  2. Bier

    Bier Pomme au Mors

    Dabei seit:
    24.08.07
    Beiträge:
    867
    1 Person gefällt das.
  3. Bier

    Bier Pomme au Mors

    Dabei seit:
    24.08.07
    Beiträge:
    867
  4. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Seit 10.5.0 gibt es keine NetInfo mehr. Die lokalen Benutzer werden in /var/db/dslocal/nodes/Default gespeichert. Auch mehrere lokale DSLocal Stores sind möglich, müssen aber manuell zum Suchpfad für Authentifizierungen hinzugefügt werden. (Nichts was ein normaler User jemals bräuchte.)
    Gruß Pepi
     
  5. Bier

    Bier Pomme au Mors

    Dabei seit:
    24.08.07
    Beiträge:
    867
    Was braucht ein normaler User schon, ausser nem Touchpad?
     
  6. Cyberratchet

    Cyberratchet Luxemburger Triumph

    Dabei seit:
    31.10.07
    Beiträge:
    496
    Cooles Tut, werde mir das mal genauer ansehen.
    1+
     
  7. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Bitte ach Feedback geben und etwaige gefundene Fehler melden, damit es noch besser wird! :)
    Gruß Pepi
     
  8. alixnonitengu

    alixnonitengu Jonagold

    Dabei seit:
    10.04.08
    Beiträge:
    23
    Danke für das aufschlussreiche Tutorial. Für mich als Unix noob war das sehr interressant. Vor allem, da man ja hin und wieder über das eine oder andere Script stolpert, und mit diesem Tutorial diese auch ansatzweise Nachvollziehen kann.

    Die letzten beiden Kapitel habe ich zwar aus Desinterresse nur kurz überflogen, der Teil davor war allerdings sehr interressant.
     
  9. Mannheimer

    Mannheimer Boskop

    Dabei seit:
    10.10.11
    Beiträge:
    204
    Hat jemand das Tutorial als PDF?
     
  10. MacAlzenau

    MacAlzenau Golden Noble

    Dabei seit:
    26.12.05
    Beiträge:
    19.405
  11. Mannheimer

    Mannheimer Boskop

    Dabei seit:
    10.10.11
    Beiträge:
    204
    Würde es mir gerne als kleines Handbuch neben meinem Mac legen :)
     
  12. MacAlzenau

    MacAlzenau Golden Noble

    Dabei seit:
    26.12.05
    Beiträge:
    19.405
    Da mit dem Danebenlegen ist mir schon klar. Ich frage nur, warum jemand dir das als PDF zusammenstellen soll. Warum druckst du dir die Seiten nicht einfach aus? Oder kopierst dir die Tutoriumspassagen (ohne Kommentare, wenn die stören) in eine Textdatei und druckst die dann aus?
     

Diese Seite empfehlen