Permalink

iTerm 2 · DNS Lookup Issue

Als großer Fan von iTerm 2 bin ich gestern Abend etwas zusammengezuckt.

Über Twitter bin ich mehr oder weniger zufällig über einen Bug gestolpert, der seit Version 3.0.0 besteht und der es ziemlich in sich hat:

Bildschirmfoto 2017-09-20 um 15.07.00-minishadow_1300px

Kurzgesagt kann es mit den Standardeinstellungen von iTerm 2 per DNS Request passieren, dass persönliche Daten (inkl. Passwörter) im Klartext über den DNS-Server des ISP versendet werden. Ein mehr als übles Sicherheitsrisiko, das in den Einstellungen von iTerm 2 behoben werden kann:

iTerm 2 Einstellungen > Advanced > Perform DNS lookups to check if URLs are valid? > NO

Dazu muss der Haken bei folgender Option entfernt werden:

iTerm 2 Einstellungen > Pointer > CMD-Click Opens Filename/URL (Semantic History)

Bildschirmfoto 2017-09-20 um 15.07.25-minishadow_1300px

Mittlerweile haben die Entwickler von iTerm 2 aber auch reagiert und mit Version 3.1.1 eine gefixte Version zum Download bereitgestellt, die die Standardeinstellungen berichtigt.

Daher: Unbedingt das Update einspielen!!!

-> https://www.iterm2.com

iTerm2 added a feature in version 3.0.0 which would perform DNS requests on the text under the cursor to get a hint whether it was a clickable URL. This was a bad idea because DNS requests are not privacy-preserving. The feature has been disabled by default in 3.1.1 in commit e4eb1063529deb575b75b396138d41554428d522.

I don’t have an excuse: I just didn’t give this issue enough thought. I apologize for the oversight and promise to be more careful in the future. Your privacy will always be my highest priority.

Bildschirmfoto 2017-09-20 um 15.09.45-minishadow_1300px

Permalink

macOS Tipp: PATH Variable anzeigen und ändern

Gerade als Entwickler kann es vorkommen, dass man die $PATH Variable, eine Umgebungsvariable des Betriebssystems, die einen oder mehrere Pfade zu bestimmten Programmen oder Daten enthält, anpassen muss.

Um die aktuell gesetzten Werte dieser Variable auszulesen, genügt einer der beiden folgenden Terminalkommandos:

echo $PATH

printf "%s\n" $PATH

Bildschirmfoto 2017-08-29 um 09.23.57-minishadow_1300px

Im Ergebnis werden, durch Doppelpunkt getrennt, die gesetzten Pfade angezeigt:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin

Doch wie passt man diese Variable nun an? Hier gibt es verschiedene Möglichkeiten:

Variante 1

Die erste Variante besteht im Editieren der zur eingesetzten Shell passenden Konfigurationsdatei. Das hat den Vorteil, dass dieses Vorgehen nutzerbasiert und somit individuell ist. Da ich beim Editor auf Vim setze, kann das beispielsweise wie folgt aussehen:

vim ~/.bash_profile
vim ~/.profile
vim ~/.bashrc
vim ~/.zshrc

Anschließend kann man in der Konfigurationsdatei über das export Kommando die PATH Variable erweitern (abspeichern nicht vergessen):

export PATH=$PATH:/new/dir/location1

Um die Änderungen direkt nutzen zu können, muss das Terminal neu gestartet oder eine der beiden folgenden Terminalkommandos ausgeführt werden:

source ~/.zshrc
. ~/.zshrc

Abschließend überprüft man über eines der ganz am Anfang des Artikels erwähnten Kommandos, ob die PATH Variable auch tatsächlich geändert wurde.

Bildschirmfoto 2017-08-29 um 09.11.55-minishadow_1300px

Variante 2 (Admin-Rechte erforderlich)

In dieser Variante, in der Änderungen der PATH Variable für alle Nutzer gelten, sind die Pfade in einzelnen Dateien gruppiert. Dazu werden bzw. sind bereits Dateien mit den gewollten Pfadangaben im Verzeichnis /etc/paths.d angelegt. Um sich die existierenden Einträge anzusehen, benötigt man wieder ein Terminalkommando:

ls -l /etc/paths.d

Über das anschließende cat Kommando kann man sich den Inhalt der bereits existierenden Dateien ansehen:

cat /etc/paths.d/MacGPG2

Bildschirmfoto 2017-08-28 um 16.40.14-minishadow_1300px

Um jetzt die PATH Variable zu erweitern, muss man in /etc/paths.d eine neue Datei anlegen und diese mit dem gewünschten Pfad befüllen. Dafür benötigt ein Terminalkommando, für das man allerdings Admin-Rechte benötigt:

sudo -s 'echo "/new/dir/location1" > /etc/paths.d/location1'

Um die Veränderungen zu übernehmen, muss man das Terminal neu starten und man sollte, wie in Variante 1, überprüfen, ob die Veränderungen tatsächlich übernommen wurden.

Variante 3 (Admin-Rechte erforderlich)

Bei dieser letzten Variante handelt es sich um eine Abwandlung der Variante 2.

Anstatt einzelne Dateien anzulegen bzw. zu editieren, knöpft man sich die zentrale Datei /etc/paths vor und kann dort zeilenweise (untereinander) Pfade ändern, löschen oder hinzufügen:

sudo vim /etc/paths

Bildschirmfoto 2017-08-29 um 10.46.47-minishadow_1300px

Zur Info:
/etc ist ein symbolischer Link zum Verzeichnis /private/etc

Da beide den identischen Inhalt haben, können die Änderungen von Variante 2 und 3 auch in /private/etc erfolgen.

Bildschirmfoto 2017-08-29 um 10.59.01-minishadow_1300px

Permalink

macOS Tipp: 32-Bit Apps identifizieren

Was nächsten Monat mit iOS 11 für iPhone, iPad und iPod touch Realität wird, kommt spätestens in zwei Jahren auch auf den Mac zu: das Ende der 32-Bit Apps.

Wie Apple auf der diesjährigen Platforms State of the Union Keynote der WWDC verkündete, wird macOS 10.13 High Sierra das letzte Desktop-Betriebssystem sein, das 32-Bit Apps ohne Murren akzeptiert.

snipaste20170817_114103_1300px

Mit macOS 10.14 Mount Whitney wird es die von iOS 10 bekannten Warnungen geben; mit macOS 10.15 Riesenmammutbaum, das vermutlich Ende 2019 erscheinen wird, ist das Sterben der 32-Bit Apps besiegelt.

Wer jetzt schon mal neugierig ist, kann sich seine aktuell installierten 32-Bit Apps mit einem simplen Terminalbefehl in eine Textdatei (die dann auf dem Schreibtisch liegt) herausschreiben lassen.

system_profiler SPApplicationsDataType | grep -B 6 -A 2 "(Intel): No" > ~/Desktop/non64bit.txt

Ich war wirklich überrascht, welche Apps (inkl. Apples eigener Apps) bei mir betroffen sind. Wobei Apple in der gleichen Keynote auch ankündigte, dass bis spätestens Juni 2018 zumindest alle Apps im Mac App Store der 64-Bit Architektur entsprechen müssen.

Bildschirmfoto 2017-08-17 um 09.15.17_1300px

(via)

Permalink

iStats · Systemmonitor für das macOS Terminal

Möchte man die Daten seines Systems immer im Blick haben, hatten wir hier mit iStat Menus, iStat Mini, Monity, Monit, den Today Scripts oder dem guten alten GeekTool schon diverse Systemüberwachungstools für den Mac vorgestellt.

Lebt man allerdings mehr oder weniger in der Kommandozeile, kann iStats ganz interessant sein. Dabei handelt es sich um eines der ausführbaren RubyGems, die man in macOS auf verschiedene Art und Weisen installieren kann. Ich möchte nachfolgend die Variante über Homebrew zeigen.

rubygems

Ist Brew installiert, wird zunächst neue Version von Ruby benötigt.

Das ist insofern wichtig, als dass man sich so von der von macOS bereitgestellten Ruby-Version löst und somit zur Installation der Gems keine Admin-Rechte mehr benötigt.

brew install ruby

Anders als brew kann gem, ein Kommando, das zur Installation von RubyGems gebraucht wird, per default keine Aliase im Verzeichnis /usr/local/bin erzeugen. Genau das möchte ich aber, um das System einigermaßen ‘sauber’ zu halten.

Daher muss die PATH-Umgebungsvariable angepasst bzw., wenn nicht eh schon geschehen, um /usr/local/bin erweitert werden. Je nach eingesetzter Shell muss man nun die entsprechende Konfigurationsdatei editieren; in meinem Fall ZSH bzw. ~/.zshrc

vim .zshrc

Folgende Zeile muss eingefügt werden:

export PATH="/usr/local/bin:$PATH"

Bildschirmfoto 2017-04-28 um 13.45.23-minishadow_1300px

Nun folgt die Installation von iStats, welche jetzt durch das Setzen der Umgebungsvariable automatisch ein Alias in /usr/local/bin erzeugt und durch die anfangs separat installierte Version von Ruby auch ohne sudo-Kommando auskommt.

gem install iStats

Um sich nun die Daten seines Systems im Terminal anzeigen zu lassen, startet man iStats durch Eingabe des Befehls istats.

Bildschirmfoto 2017-04-26 um 22.13.17-minishadow

Ohne dem Hinzufügen zusätzlicher Optionen werden zunächst einmal nur die Temperatur der CPU und Angaben zu den Lüftern bzw. dem Akku angezeigt.

Mit istats scan kann aber unzählige weitere Sensoren des Macs auslesen und mit istats enable [key] der Anzeige hinzufügen. Eine genaue Übersicht dieser und weiterer Optionen gibts bei GitHub.

-> https://github.com/Chris911/iStats

Permalink

macOS Tipp: Bildschirmschoner als Hintergrundbild nutzen

Dieser Tipp gehört seit etlichen Jahren zu den Klassikern auf dem Mac und ist vermutlich bestens durch nachfolgendes GIF demonstriert:

2017-04-18 15_41_14

Man kann also mit einem einfachen Terminalkommando einen beliebigen Bildschirmschoner auf dem Desktop im Hintergrund laufen lassen.

/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -module "NAME DES SCREENSAVERS" -background &

Bildschirmfoto 2017-04-13 um 23.07.13_1300px_opt

Kurze Erklärung

Der lange String startet die mit macOS mitgelieferte ScreenSaverEngine App, die wiederum einen speziellen Bildschirmschoner startet und den dafür verantwortlichen Prozess in den Hintergrund schickt.

Hat man genug von dem Spaß, holt man diesen Prozess mit fg wieder in den Vordergrund und beendet ihn mit dem Shortcut Control-C.

Empfehlenswerte Bildschirmschoner für den Mac sind Aerial und Google Featured Photos.

(via)

Permalink

Howto: iTerm2 · Pimp your macOS Terminal

Nachdem hin und wieder mal Nachfragen zum Aussehen meines Terminal gekommen sind, möchte ich heute eine etwas ausführlichere Anleitung schreiben.

Bildschirmfoto 2017-04-10 um 20.28.56_1300px

Direkt vorneweg: bei der App handelt es sich nicht um das macOS Terminal, sondern iTerm2; einem Terminal-Ersatz für macOS.

Die App bietet vielerlei Features, die man in Apples Variante vergeblich sucht. Es soll heute aber nicht um einzelne Features, sondern vielmehr den optischen Vorzügen gehen.

Schritt 1 – iTerm2 installieren

Bevor es gleich ans Eingemachte geht, muss man iTerm2 erst einmal installieren.

Neben der Installation über Homebrew, steht auch ein herkömmlicher Download zur Verfügung, mit dem man die App ganz normal in den Programme-Ordner von macOS verschieben muss.

brew cask install iterm2

Bildschirmfoto 2017-04-11 um 02.06.15-minishadow

Schritt 2 – Theme installieren

Da sich iTerm2 in den Standardeinstellungen optisch kaum vom macOS Terminal unterscheidet, folgt mit der Installation eines Themes die erste Anpassung.

Wer viel Zeit hat, kann sich einmal durch die verfügbaren iTerm2-Color-Schemes klicken und seinen Favoriten selber wählen. Ich persönlich bin mit dem Solarized Dark Theme (Patched) sehr zufrieden, welches in den iTerm2 Einstellungen unter Profiles > Colors > Color Presets… zunächst importiert und danach ausgewählt werden muss.

Bildschirmfoto 2017-04-08 um 00.12.31-minishadow_1300px

Wenig überraschend ist das Ergebnis ein leicht verändertes Theme.

Bildschirmfoto 2017-04-11 um 02.09.11-minishadow

Schritt 3 – Shell installieren

Anschließend geht es an die Installation der Z-Shell (zsh). Hier gibt es verschiedene Configuration Frameworks; das bekannteste und am meisten genutzte ist mit Sicherheit Oh-My-Zsh.

Neben einigen funktionalen Vorteilen gegenüber bash lässt sich (oh-my-)zsh durch die riesige Open-Source-Community und damit einhergehenden Plugins einfach sehr gut anpassen. Gerüchten zufolge soll zsh auch schneller als bash sein.

Die Installation erfolgt auf jeden Fall über das Terminal:

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Falls Xcode oder zumindest die Command Line Developer Tools noch nicht installiert sind, bricht die Installation an dieser Stelle mit einem Popup ab.

Bildschirmfoto 2017-04-10 um 04.16.58-minishadow

Hier muss man einfach nur auf die Schaltfläche Installieren klicken und danach den Befehl zur Installation von oh-my-zsh erneut ins Terminal eingeben.

Hinweis: Zur Änderung der Shell wird das Passwort des angemeldeten Nutzers benötigt.

Bildschirmfoto 2017-04-11 um 02.10.23-minishadow

Schritt 4 – zsh-Theme anpassen

Nachdem die Shell-Installation erfolgreich abgeschlossen wurde, muss das zu verwendende Theme mit einem Editor in der oh-my-zsh-Konfigurationsdatei angepasst werden.

Das funktioniert generell mit jedem Editor; um das Terminal allerdings nicht groß zu verlassen, empfehle ich vim, welches direkt in macOS zur Verfügung steht.

vim .zshrc

Kurzer vim-Exkurs

Die Pfeiltasten dienen in diesem Editor der Navigation. Dazu muss man natürlich die Shortcuts wissen; die hier benötigten sind:

yy → Zeile in die Zwischenablage kopieren
p → Zeile aus der Zwischenablage einfügen/duplizieren
i → aktiviert den Einfügen-Modus von Text

Der in diesem Schritt benötigte Text wird dann ganz normal über die Tastatur eingegeben. Mit der ESC-Taste verlässt man den Text-Einfügen-Modus wieder.

ZSH_THEME="agnoster"

:x → Änderungen speichern und vim beenden
:q! → vim beenden ohne die Änderungen zu speichern (nur im Fall der Fälle notwendig)

Bildschirmfoto 2017-04-11 um 11.52.32-minishadow

Startet man iTerm2 jetzt neu, ist die Ernüchterung zunächst groß…

Bildschirmfoto 2017-04-11 um 11.55.35-minishadow

Schritt 5 – Schriftart installieren

Dass die Anzeige im vierten Schritt etwas kryptisch aussieht, liegt am verwendeten (falschen) Font.

Nun gibt es eine ganze Reihe an Powerline Fonts. Ich persönlich empfehle Melso Dotted; speziell Meslo LG M DZ Regular for Powerline → bei GitHub einfach auf die Schaltfläche View Raw klicken und anschließend den heruntergeladenen Font über den Finder systemweit in macOS installieren.

Bildschirmfoto 2017-04-08 um 00.46.05-minishadow_1300px

Nachdem die neue Schriftart installiert ist, öffnet man erneut die iTerm2 Einstellungen und wählt diese unter Profiles > Text > Change Font aus.

Die Schriftgröße ist bei mir zudem auf 14 Pixel gesetzt.

Bildschirmfoto 2017-04-08 um 00.47.15-minishadow_1300px

Daraufhin wird aus dem einst kryptischen Aussehen eine wesentlich ansehnlichere Anzeige.

Bildschirmfoto 2017-04-11 um 11.55.53-minishadow

Schritt 6 – Powerlevel9k theme for zsh (optional)

Wem das im vierten Schritt aktivierte agnoster-Theme nicht gefällt oder ausreicht, sollte sich das Powerlevel9k-Theme genauer ansehen.

Die Installation erfolgt wieder über das Terminal; die Aktivierung des Themes über die oh-my-zsh-Konfigurationsdatei.

git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

Bildschirmfoto 2017-04-08 um 00.39.50-minishadow_1300px

Das agnoster-Theme muss jetzt natürlich per # auskommentiert werden. Die neu in der Konfigurationsdatei einzufügende Zeile lautet:

ZSH_THEME="powerlevel9k/powerlevel9k"

Was durch das Anflanschen von Zeit & Co. erst mal wenig spektakulär aussieht, lässt sich in der Konfiguration zum Theme umfangreich anpassen. Wer daran Interesse hat, muss sich hier einfach mal selbst einlesen.

Bildschirmfoto 2017-04-11 um 14.07.17-minishadow

Weitere Tweaks

Wie ich bereits am Anfang irgendwo schrieb, gibt es unzählige Anpassungsmöglichkeiten sowie Plugins für zsh. Nachfolgend vier kleine Beispiele:

custom prompt styles

Per default wird im Terminal immer user@hostname angezeigt. Das ist in der Regel unnötig und bläht das Terminal nur unnötig auf.

Auch hier führt der Weg wieder über die oh-my-zsh-Konfigurationsdatei, der folgende Zeile hinzugefügt werden muss:

DEFAULT_USER=”$USER”

Bildschirmfoto 2017-04-11 um 15.04.17-minishadow

Daraufhin muss man iTerm2 neu starten und das user@hostname-Konstrukt ist verschwunden.

Bildschirmfoto 2017-04-11 um 15.04.52-minishadow

word jumps

Per default ist das Springen zwischen den Worten mit Opt + → oder ← nicht möglich.

Für die Aktivierung muss man die iTerm2 Einstellungen öffnen und zu Profiles > Keys navigieren. Hier müssen, wie im Screenshot zu sehen, über das Plus-Zeichen zwei neue Sequenzen angelegt werden:

Wortsprung rechts
⌥→
Send Escape Sequence
f

Wortsprung links
⌥←
Send Escape Sequence
b

Bildschirmfoto 2017-04-11 um 15.14.25-minishadow_1300px

zsh-autosuggestions

Auf Basis der in der Vergangenheit eingegebenen Terminal-Kommandos versucht dieses Plugin vorherzusagen, was man aktuell eingeben möchte.

Bildschirmfoto 2017-04-11 um 16.05.38-minishadow

Die Installation kann über Homebrew oder als Direktdownload per Terminal erfolgen:

Homebrew

brew install zsh-autosuggestions

Damit das Plugin aktiviert wird, muss man erneut die oh-my-zsh-Konfigurationsdatei editieren und folgende Zeile am Ende der Datei hinzufügen:

source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh

Bildschirmfoto 2017-04-11 um 16.19.49-minishadow

Direktdownload

git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions

Zur Aktivierung des Plugins muss man in der oh-my-zsh-Konfigurationsdatei die Sektion plugins=(git) suchen und diese erweitern:

plugins=(git zsh-autosuggestions)

Bildschirmfoto 2017-04-11 um 16.21.19-minishadow

zsh-syntax-highlighting

Dieses Plugin kümmert sich um Syntax Highlighting. Auch hier kann die Installation wieder über Homebrew oder als Direktdownload per Terminal erfolgen:

Homebrew

brew install zsh-syntax-highlighting

Die Aktivierung erfolgt analog zum Autosuggestions-Plugin am Ende der oh-my-zsh-Konfigurationsdatei:

source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

Bildschirmfoto 2017-04-11 um 16.20.30-minishadow

Direktdownload

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

Auch hier erfolgt die Aktivierung analog zum Autosuggestions-Plugin.

plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

Bildschirmfoto 2017-04-11 um 16.21.48-minishadow

In diesem Sinne schon mal Frohe Ostern. Wir höhen uns vermutlich erst nach den Feiertagen wieder.

(inspired by)