• 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.
  • Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[TUTORIAL] Terminal - Teil 6 (Schluss!)

  • Ersteller Hobbes_
  • Erstellt am

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.
 
Zuletzt bearbeitet von einem Moderator:
  • Like
Reaktionen: rakader

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Speicherung von User-Authentifizierungsdaten nicht in /etc, sondern NetInfo-DB (rsp. von LDAP-Server, anderen ’/etc’-Files)
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
 

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
Was braucht ein normaler User schon, ausser nem Touchpad?
 

alixnonitengu

Jonagold
Registriert
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.
 

Mannheimer

Rheinischer Krummstiel
Registriert
10.10.11
Beiträge
376
Würde es mir gerne als kleines Handbuch neben meinem Mac legen :)
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.497
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?