zsh – Die Standard-Shell von macOS aufbohren

Z shell (zsh) ist eine UNIX Shell, die es den Benutzern ermöglicht direkt mit dem Betriebssystem zu kommunizieren.

Die wohl bekannteste Shell ist Bash, die bei den meisten Linux-Distributionen als Standard gesetzt ist. Bei macOS ist seit der Version 10.15 Catalina die Z shell voreingestellt.

zsh hat einige Vorteile gegenüber der bekannteren Bash, wenn es um die Anpassung an die Vorstellungen des Benutzers geht.

Mit Tools wie oh-my-zsh, Spaceship, NerdFonts, lsd und Neofetch lässt sich zsh auch grafisch ein wenig aufbohren.

.zshrc

Da zsh Bereits auf meinem Mac vorhanden ist, entfällt die Installation.

Fehlt zsh auf deinem System, dann kannst das Tool sehr einfach mit deinem Paketmanager installieren.

sudo apt install zsh

brew install zsh

Nach der Installation kann stu zsh auch sofort verwenden. Aber mehr Spaß macht es mit ein wenig Farbe.

Die zsh Shell wird in der Datei .zshrc konfiguriert.

oh-my-zsh

oh-my-zsh ist eine Sammlung von Plugins und Themes für zsh. Du kannst damit sehr einfach Themes und Erweiterungen nutzen, ohne eine aufwendige Installation und Konfiguration jedes einzelnen Pakets.

Die Installation von oh-my-zsh ist relativ simpel und kann entweder über curl oder wget erfolgen.

sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

In der Konfigurationsdatei .zshrc werden die Einstellungen für oh-my-zsh vorgenommen.

nano .zshrc

Die Plugins aktivierst due ebenfalls in der .zshrc-Datei. Trage dazu einfach den Namen deiner Erweiterung in die Liste ein. Das wars!

plugins=(
battery
brew
copydir
copyfile
git
macos
)

Die Dokumentation von oh-my-zsh findest du auf der offiziellen GitHub-Seite.

Spaceship – Theme

Spaceship ist ein weiteres Theme für zsh. Wenn dir kein Font aus oh-my-zsh gefällt, kannst du das ausprobieren. Das Theme benötigt aber noch spezielle Fonts, um Zeichen für Git im Terminal korrekt dazustellen. Eine Schriftart, die für Spaceship funktioniert ist ➡ FiraCode – Font.

# Repo auf die eigene Festplatte klonen
git clone https://github.com/spaceship-prompt/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" --depth=1

# Symlink erstellen
ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

Das Theme wird dann in der Konfigurationsdatei .zshrc aktiviert.

ZSH_THEME="spaceship"

lsd

lsd steht für LSDeluxe und erweitert den Standardbefehl ls um ein paar nette Features, wie Farbe, Baumansicht, etc.

Installiert wird LSDeluxe mit Hilfe von brew.

brew install lsd

Nach der Installation kannst du direkt den Befehl lsd im Terminal verwenden und den Ordnerinhalt auflisten lassen.

lsd

# ...

lsd -lah

Damit du aber wie gewohnt ls eingeben kannst, aber die schöne Ausgabe von lsd erhältst, kannst du einen Alias in der .zshrc anlegen.

Trage einfach am Ende der Datei die Zeile ein:

alias ls='lsd'

Nun kannst du ganz gewohnt den ls-Befehl verwenden.

Möchtest du lsd konfigurieren, musst du die Config-Datei config.yaml manuell im Verzeichnis .config/lsdanlegen.

nano ~/.config/lsd/config.yaml

In die Datei kannst du dann deine Konfiguration eintragen. Du findest ein Beispiel auf der GiHub-Seite:

Fonts

Für die Verwendung mit Spaceship müssen auf dem System NerdFonts installiert sein.

FiraCode

FiraCode kann für das Theme ➡ Spaceship verwendet werden, funktioniert aber nicht korrekt mit ➡ lsd.

  1. Lade die zip-Datei herunter https://github.com/tonsky/FiraCode/releases
  2. Entpacke die zip-Datei und wähle in den Ordnern die ttf-Dateien aus. Öffnen mit ... -> Schriftensammlung
FiraCode
FiraCode

Dadurch wird das Font systemweit aktiviert und kann von jeder App genutzt werden.

In der .zshrc ist die Sprache ggf. noch korrekt einzustellen.

nano .zshrc

# You may need to manually set your language environment
# export LANG=en_US.UTF-8
export LANG=de_de.UTF8

Damit FiraCode auch im Terminal verwendet wird, ist die Font dort noch auszuwählen.

FireCode
FireCode

Für eine noch bessere Darstellung kann auch FiraCode for Powerline ausgewählt werden.

Nach einem Neustart des Terminal werden die Zeichen von Git korrekt angezeigt.

FireCode
FireCode

JetBrainsMono

Das Fonts JetBrainsMono funktioniert mit ➡ lsd und wird eingerichtet wie oben beschrieben.

Die ttf-Dateien lassen sich von GitHub herunterladen. Die Fonts sind im Ordner patched-fonts abgespeichert.

Neofetch

Neofetch ist ein kleines Script für die Shell, dass Informationen über das Betriebssystem, die Hardware, etc. übersichtlich und grafisch aufbereitet anzeigt. Zusätzlich dazu wird auf der linken Seite ein Bild, z.B. in ASCII-Art, farbig dargestellt.

Neofetch kannst du sehr einfach installieren.

brew install neofetch

Damit du nun alle Informationen auch im Terminal beim Aufruf angezeigt bekommst, musst du in der .zshrc Neofetch aktivieren.

Trage dazu einfach am Ende der Datei die Zeile neofetch ein. Beim nächsten Aufruf des Terminals werden dir die Infos dann ausgegeben.

Die Konfigurationsdatei config.conf befindet sich im Verzeichnis ~/.config/neofetch. Dort kannst du die Anzeige an deine Wünsche anpassen.

zsh – Manuelle Anpassungen

Nach der Installation von oh-my-zsh sind eigentlich keine manuellen Anpassungen mehr notwendig. Die Liste dient der Vollständigkeit.

zshrc – Autoverstollständigung

DIe Autoversollständigung ist standardmäßig nicht aktiv, kann aber mit einem Eintrag in der .zshrc problemlos aktiviert werden.

autoload -Uz compinit && compinit
zshrc – Git

Die Anzeige für Git-Repos kann mit dem Code Snipper optimiert werden.

autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT='${vcs_info_msg_0_}'
# PROMPT='${vcs_info_msg_0_}%# '
zstyle ':vcs_info:git:*' formats '%b'

Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.