05.02.2013 Aufrufe

Mac Os X Hacks

Mac Os X Hacks

Mac Os X Hacks

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Inhaltsverzeichnis<br />

<strong>Mac</strong> <strong>Os</strong> X <strong>Hacks</strong><br />

Nikolas Engelhard<br />

1. Februar 2009<br />

1 Terminal 3<br />

1.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.2 ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.3 cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.4 ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />

1.4.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . 4<br />

1.4.2 Anmelden ohne Passwort . . . . . . . . . . . . . . . . . 4<br />

1.4.3 ssh-Tunnel als Proxy . . . . . . . . . . . . . . . . . . . 5<br />

1.5 grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

1.6 sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

1.7 persönliche Einstellungen . . . . . . . . . . . . . . . . . . . . . 6<br />

1.7.1 alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.7.2 export . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.7.3 dauerhaftes Speichern . . . . . . . . . . . . . . . . . . 7<br />

1.8 zip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

1.9 IRB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2 Scripts 7<br />

2.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2.2 einseitige Synchonisation . . . . . . . . . . . . . . . . . . . . . 7<br />

2.3 Umlaute in html-Dateien . . . . . . . . . . . . . . . . . . . . . 8<br />

3 C++ 9<br />

3.1 kompilieren einer cpp-Datei . . . . . . . . . . . . . . . . . . . 9<br />

1


4 Software 9<br />

4.1 TinkerTool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

4.2 WhatSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

4.3 Smultron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

4.4 TeXShop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

5 Sonstiges: 10<br />

5.1 Latex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

5.1.1 neue Styles hinzufügen . . . . . . . . . . . . . . . . . . 10<br />

5.1.2 Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . 10<br />

5.2 GnuPlot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

5.2.1 Fehlerbalken . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

5.2.2 mehrere Graphen . . . . . . . . . . . . . . . . . . . . . 12<br />

2


1 Terminal<br />

1.1 Einleitung<br />

In diesem Dokument habe ich ein paar nützliche Befehle des Terminals aufgeschrieben,<br />

hauptsächlich, um schnell etwas nachschlagen zu können. Manche<br />

Anwendungen kann man wahrscheinlich noch deutlich schneller und schöner<br />

schreiben, aber die Programme tun was sie sollen (worauf ich natürlich keine<br />

Garantie geben kann). Alles wurde unter <strong>Mac</strong> OS 10.5 getestet, sollte aber<br />

auf allen UNIX-basierten Rechnern laufen können.<br />

1.2 ls<br />

Ein recht wichtiger Befehl ist ls (list segments), mit dem man sich die Dateien<br />

im aktuellen Ordner anzeigen lassen kann.<br />

Die wichtigsten Parameter sind:<br />

-a : Anzeige aller Dateien (insbesondere versteckter Dateien)<br />

-l : Anzeige umfangreicher Informationen über die Dateien, wie<br />

Zugriffsrechte oder Größe<br />

1.3 cd<br />

Ein anderer, sehr häufig benutzter Befehl ist cd (change Directory), mit dem<br />

man den aktuelle Arbeitsordner verändern kann.<br />

Beispiele:<br />

• cd<br />

Sprung in das Home-Verzeichnis<br />

• cd ..<br />

bewegt sich eine Ebene nach oben<br />

• cd UnterOrdner<br />

Bewegung in den Unterordnder ( cd Desktop )<br />

3


1.4 ssh<br />

1.4.1 Grundlagen<br />

ssh (Secure Shell) wird eingesetzt, um sich bei einem entfernten Rechner<br />

anzumelden. Die einfachste Version lautet ssh username@server<br />

Daraufhin wird der Server nach dem entsprechenden Passwort fragen, wie<br />

man diese Abfrage automatisieren kann, steht im nächsten Abschnitt.<br />

1.4.2 Anmelden ohne Passwort<br />

Um der ständigen Passwortabfrage zu entgehen, kann man ein public/private-<br />

Schlüsselpaar benutzen. Der private Schlüssel bleibt auf dem eigenen Rechner<br />

(und sollte gut geschützt sein), der öffentliche wird auf den Server gelegt.<br />

Per ssh-keygen -t dsa erstellt man ein solches Paar, wobei die Parameter<br />

die Protokolversion angeben. Den voreingestellten Speicherort muss man<br />

nicht ändern.<br />

Zur Passphrase: Diese Passphrase ist noch ein zusätzlicher Schutz für den<br />

privaten Schlüssel. Benutzt man eine solche Phrase, wird sie immer abgefragt,<br />

bevor der private Schlüssel zur Identifikation benutzt werden kann.<br />

Benutzt man keine, kann jeder den privaten Schlüssel benutzen, wenn er die<br />

passende Datei vom Rechner holen kann. Kann man sicherstellen, dass dies<br />

nicht passieren wird, kann man einfach eine leere Passphrase benutzen.<br />

Die beiden Schüssel wurden als id dsa und id dsa.pub in den .ssh-Unterordner<br />

des Homeverzeichnisses gelegt. Dort bringt der öffentliche Schlüssel allerdings<br />

noch nichts, er muss erstmal auf den Server gebracht werden.<br />

Der einfachste Weg, den Schlüssel sicher zu übertragen, ist scp. Dieses Programm<br />

basiert auf ssh und verschlüsselt die Datei vor der Übertragung. Der<br />

passende Befehl ist hier<br />

scp \Users\BenutzerName\.ssh\id dsa.pub BenutzerName2@server:<br />

Nur weiss der Server noch nicht, dass es sich bei dieser Datei um einen<br />

Schlüssel handelt. Man muss sich also ein letztes Mal per ssh auf dem Server<br />

anmelden und dabei sein Passwort eingeben. Falls auf dem Server noch keine<br />

Schüssel liegen, muss man noch ein passendes Verzeichnis anlegen: mkdir<br />

.ssh, dass aber von niemandem gelesen oder beschrieben werden darf, ausser<br />

dem Benutzer selbst: chmod 700 .ssh. Jetzt kann man die Datei in das<br />

.ssh-Verzeichnis legen und dabei noch umbenennen:<br />

mv id dsa.pub .ssh/authorized keys<br />

Wenn man auf dem Server mehrere Schlüssel lagern will, weil sich z.B. mehre-<br />

4


e Leute auf diesem Server anmelden wollen, sollte man den neuen Schlüssel<br />

einfach nur der authorized keys-Datei hinzufügen:<br />

cat id dsa.pub >> .ssh/authorized keys und das Original wieder löschen:<br />

rm id dsa.pub<br />

Von nun an wird man nicht weiter nach dem Passwort gefragt, sondern kann<br />

sich recht schnell auf dem Server anmelden. Wie man diesen Schritt noch<br />

weiter beschleunigen kann, steht im Abschnitt über persönliche Einstellungen.<br />

1.4.3 ssh-Tunnel als Proxy<br />

Todo<br />

1.5 grep<br />

Mit grep lassen sich Dateien einfach über reguläre Ausdrücke durchsuchen.<br />

Der einfachste RegExp ist wohl ein String, nach dem gesucht werden soll.<br />

grep hallo quelle.txt >> ziel.txt hängt alle Zeilen aus quelle.txt, die<br />

den string hallo beinhalten, hinten an ziel.txt an. Soll ziel.txt überschrieben<br />

werden, reicht es > an Stelle von >> benutzen.<br />

Die Option -v invertiert das Suchergebnis, grep -v welt foo.txt gibt alle<br />

Zeilen aus, die welt nicht enthalten.<br />

1.6 sed<br />

Mit sed (Stream EDitor) lassen sich unter anderem recht einfach Suchen/Ersetzen-<br />

Aktionen ausführen. Die Syntax:<br />

sed s/foo/bar/g datei.txt<br />

Hiermit würden alle vorkommen des Strings ”foo”durch ”bar” ersetzt werden<br />

und die geänderte Anzeige im Terminal angezeigt werden, die Datei selbst<br />

würde nicht verändert werden. Der Parameter -i hilft weiter.<br />

sed -i ’.backup’ s/foo/bar/g datei.txt kopiert zu erst den Inhalt von<br />

datei.txt in eine neue Datei namens datei.txt.backup, und führt dann die<br />

Ersetzung direkt in datei.txt aus. Für man den Befehl mehrmals aus, wird<br />

die Sicherungskopie überschrieben. Will man keine Kopie anlegen, gibt man<br />

nur sed -i ’’ s/foo/bar/g datei.txt ein.<br />

Diese Benutzung von sed ist wohl die einfachste Anwendung aber eine recht<br />

nützliche.<br />

5


1.7 persönliche Einstellungen<br />

Bei manchen Befehlen gewöhnt man es sich vielleicht an, immer bestimmte<br />

Parameter zu übergeben oder man will den langen Namen eines Servers nicht<br />

immer komplett tippen. Für beide Probleme gibt es recht einfache Lösungen:<br />

1.7.1 alias<br />

Mit dem alias-Befehl lassen sich recht einfach neue Befehle definieren, vergleichbar<br />

vielleicht mit dem newcommand in tex. Die Syntax ist recht einfach:<br />

alias neuerName=’Befehlssequenz’<br />

Beispiele:<br />

• alias ls=’ls -al’<br />

• alias login=’ssh username@server’<br />

Hat man wie oben beschrieben die manuelle Passwortaeingabe ausgeschaltet,<br />

lässt sich der ssh-Einlogvorgang somit auf das eintippen von ’login’ verkürzen.<br />

Alle gesetzten alias kann man sich per alias anzeigen lassen, eine Verknüpfung<br />

lässt sich per unalias name wieder löschen.<br />

Gesetzte alias sind nur in der aktuellen Sitzung gültig. Um sie dauerhaft einzurichten,<br />

muss man die passende config-Datei anpassen, aber dazu unten<br />

mehr.<br />

1.7.2 export<br />

Will man keine Befehle umbenennen, sondern z.B. für den langen Servernamen<br />

nur eine Abkürzung definieren, kann man export benutzen.<br />

Syntax: export name="langerString".<br />

Der Aufruf erfolgt dann mit vorgestelltem $: echo $name liefert dann langerString.<br />

Eine mögliche Anwendung wäre somit:<br />

export server="login.server.rz.informatik.uni.de"<br />

ssh username@$server<br />

Auch hier endet die Gültigkeit mit dem Schließen des Terminals. Die belegten<br />

Schlüssel-Wert-Paare kann man sich per export anschauen, was auch<br />

recht interessant ist.<br />

6


1.7.3 dauerhaftes Speichern<br />

Praktischerweise gibt es eine recht einfache Methode Befehle wie alias oder<br />

export automatisch beim Starten des Terminals ausführen zu lassen. Dafür<br />

legt man einfach eine Datei namens .bash profile im HomeVerzeichnis an<br />

und schreibt dort die Befehle genau wie im Terminal selbst hinein.<br />

1.8 zip<br />

Einzelne Datei: zip foo.zip Dateiname<br />

Ganzer Ordner: zip -r foo.zip Ordner<br />

1.9 IRB<br />

Interactive Ruby: Time.at(123,456)<br />

Konvertiert Zeit aus Sekunden, MilliSekunden in ein Lesbares Format<br />

2 Scripts<br />

2.1 Einleitung<br />

Hier sind einige shell-scripts, die einem so manche nervige Aufgabe abnehmen<br />

und das Leben mit einem Rechner etwas einfacher machen.<br />

2.2 einseitige Synchonisation<br />

Häufig bearbeitet man veröffentlichte Dateien nicht auf dem Server, sondern<br />

muss sie nach den Änderungen wieder auf den Server übertragen. Eine einfache<br />

Möglichkeit besteht in einem shell-Skript, dass auf rsync beruht. rsync<br />

überträgt nur die Änderungen und nicht die kompletten Datein, so dass der<br />

Netzwerklast nicht allzu groß wird. Der Code geht davon aus, dass kein Passwort<br />

manuell eingegeben werden muss, sondern dass die Authentifizierung<br />

über ein Schlüsselpaar ausgeführt wird<br />

#! /bin/bash<br />

# Alle Dateien aus diesem Ordner werden übertragen<br />

7


sourceFolder="/Users/nikolas/Documents/Uni/webSite/"<br />

# und auf diesen Server geschrieben<br />

address="nikolas@login.informatik.uni-freiburg.de"<br />

# und zwar in diesen Ordner:<br />

folder=".public_html/ "<br />

# -r (rekursiv): Alle Dateien im Ordner werden übertragen<br />

# -v (verbose): Ausgabe der Übertragenen Dateien<br />

rsync -rv $sourceFolder $address:$folder<br />

# Alle Dateien im ZielOrdner werden auf 755<br />

# (lesen und ausführen für alle) gesetzt<br />

# -R (resursiv), wie oben<br />

ssh $address ’chmod -R 755 .public_html’<br />

Für den Aufruf des Codes gibt es mehrere Möglichkeiten:<br />

a) Als ”transfer.sh” in ein beliebiges Verzeichnis legen und per ”sh transfer.sh”<br />

aufrufen<br />

b) unter <strong>Mac</strong>: den Code als ”transfer”nach /usr/bin/ legen, Zugriffsrechte<br />

auf 755 und von beliebiger Position einfach per ”transfer” aufrufen.<br />

2.3 Umlaute in html-Dateien<br />

Um nicht ständig anstatt ”Ä” ”&Auml;” eingeben zu müssen, kann man dieses<br />

Skript einsetzen, dass in allen html-Dateien im angegebenen Verzeichnis<br />

arbeitet:<br />

#! /bin/bash<br />

ordner="/Users/nikolas/Documents/Uni/webSite/"<br />

for file in ‘ls $ordner | grep .html$‘; do<br />

sed -i "" -e ’s/ä/\ä\;/g’ \<br />

-e ’s/ö/\ö\;/g’ \<br />

-e ’s/ü/\ü\;/g’ \<br />

-e ’s/Ä/\Ä\;/g’ \<br />

-e ’s/Ö/\Ö\;/g’ \<br />

-e ’s/Ü/\Ü\;/g’ \<br />

-e ’s/ß/\ß\;/g’ $ordner$file<br />

8


done<br />

3 C++<br />

3.1 kompilieren einer cpp-Datei<br />

c++ main.cpp -o foo ; ./foo ; rm foo<br />

Hier wird die main.cpp kompiliert, die Ausgabe nach foo geschrieben, foo<br />

gestartet und wieder gelöscht.<br />

4 Software<br />

4.1 TinkerTool<br />

Alle Dokumente deren Namen mit einem . beginnen, werden vom Finder<br />

standardmäßig nicht angezeigt. Auch das ls zeigt nichts an, so lange man<br />

nicht den -a Parameter benutzt.<br />

Ein praktisches Programm, mit dem man diese Dateien anzeigen kann und<br />

auf viele weitere Systemeigenschaften zugreifen kann, ist das TinkerTool.<br />

4.2 WhatSize<br />

Dieses Werkzeug ist in der Lage, die Größe von Ordnern und Dateien zu vermessen<br />

und anzuzeigen. Natürlich keine besonders gut versteckte Information,<br />

aber durch die Sortierung und die Farbcodierung je nach Größe können<br />

die Suche nach großen, aber eigentlich nicht benötigen Dateien deutlich vereinfachen.<br />

Die SharewareVersion kann nur 20GB an Daten vermessen, so<br />

dass man nicht den gesamten Rechner auf ein Mal durchschauen kann, aber<br />

praktisch ist es auf jeden Fall.<br />

4.3 Smultron<br />

Smultron ist ein einfacher Editor mit Syntaxhighlighting für die gängigsten<br />

Programmier- und Skriptsprachen. Besonders bei der html-Gestaltung ist das<br />

Smultron hilfreich. Tags können automatisch per Befehl geschlossen werden<br />

und auch ein html-Interpreter für die schnelle Kontrolle ist eingebaut.<br />

9


4.4 TeXShop<br />

Netter Tex-Editor.<br />

5 Sonstiges:<br />

5.1 Latex<br />

5.1.1 neue Styles hinzufügen<br />

Die .cls-Datei nach /usr/local/texlive/2007basic/texmf/tex kopieren<br />

und sudo texhash ausführen, damit der TexShop auch gesagt bekommt,<br />

dass neue Stile vorhanden sind.<br />

5.1.2 Literaturverzeichnis<br />

Ausgelagerte Inhaltsverzeichnisse, die man mehrmals verwenden kann, sind<br />

sicherlich recht praktisch, weswegen sie auch von Tex unterstützt werden:<br />

quellen.bib:<br />

@article{eins,<br />

author = {A.U. Thor},<br />

title = {Das Buch}<br />

}<br />

@article{zwei,<br />

author = {A.U. Thor},<br />

title = {und noch ein Buch}<br />

}<br />

In Aufsatz.txt:<br />

\begin{document}<br />

\nocite{*} % dieser Befehl führt dazu, dass auch nicht<br />

% zitierte Quellen im Literaturverzeichnis auftauchen<br />

\bibliographystyle{plain} % Darstellung der einzelnen Felder<br />

10


\cite{eins} \% Verweis in die Literatur<br />

\bibliography{quellen} \% legt den Ort des Verzeichnisses fest<br />

Damit das Literaturverzeichnis in das fertige Dokument aufgenommen wird,<br />

muss es erst eigentändig kompiliert werden. Im Texshop kann man unter<br />

SSetzen”BibTex ausführen, und danach mit Latex weitermachen (⇑+Apfel+B<br />

und ⇑+Apfel+L. Im Terminal auch als<br />

bibtex Aufsatz && pdflatex Aufsatz && open Aufsatz.pdf möglich.<br />

5.2 GnuPlot<br />

GnuPlot ist ein kostenloses Programm, mit dem man sich recht einfach schöne<br />

Funktionen plotten und fitten lassen kann. kleines Beipiel: Datei: werte<br />

1 1<br />

2 2.2<br />

3 3.4<br />

4 4<br />

5 5<br />

6 6<br />

7 7<br />

Darstellung in Gnuplot: > plot ”werte”<br />

Anlegen von Variablen und Funktionen:<br />

> m=1<br />

> c=-1<br />

> f(x) = m*x+c<br />

> plot f(x)<br />

> set xrange [0:5]<br />

> set yrange [1:5]<br />

> set xlabel "x-Achse"<br />

> replot<br />

Anpassen einer Funktion an die Daten:<br />

>fit f(x) "werte" using 1:2 via m,c<br />

Anpassen der Ausgabe:<br />

11


set style line 1 lt 1 pt 7<br />

> set style line 2 lt 2 lw 3<br />

> set size 0.6,0.6<br />

> set term postscript eps enhanced color<br />

> set output "exp.ps"<br />

> plot "werte" using 1:2 title "experiment" ls 1, \<br />

> f(x) title "fit" with line ls 2<br />

> set term x11 // wieder Ausgabe im Fenster<br />

Ausgabe als latex-Code:<br />

> set terminal latex<br />

Grafik zu pdf konvertieren und einbinden:<br />

y-Achse<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

experiment<br />

fit<br />

-1<br />

0 1 2 3 4 5<br />

x-Achse<br />

weitere Informationen:<br />

http://t16web.lanl.gov/Kawano/gnuplot/intro/plotfunc-e.html<br />

https://www.uni-hohenheim.de/ aurbach/gnuplot/gnuplot.html<br />

5.2.1 Fehlerbalken<br />

Symmetrisch in y-Richtung: (fehler: x y y fehler)<br />

plot ’’fehler’’ with errorbars ls 1 notitle, ’’fehler’’ title ’’TestGruppe’’<br />

asymetrisch: (fehler: x y ymin ymax)<br />

plot ’’fehler’’ using 1:2:($2-$3):($2+$3) with yerrorbars<br />

5.2.2 mehrere Graphen<br />

set multiplot<br />

set origin 0,0.5<br />

set size 0.5,0.5<br />

12


set title "erster Graph"<br />

plot x*x title "parabel"<br />

set origin 0.5,0.5<br />

set title "zweiter Graph"<br />

plot sin(x) title "sinus"<br />

set origin 0,0<br />

set title "dritter Graph"<br />

plot cos(x) title "cosinus"<br />

unset multiplot<br />

Alternativ: set multiplot layout 3,2 columnsfirst scale 1.1,0.9 nicht<br />

getestet, sollte ab gnu 4.2.4 funktionieren<br />

13

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!