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. 1
Die wohl bekannteste Shell ist Bash, die bei den meisten Linux-Distributionen als Standard gesetzt ist. macOS verwendet seit der Version 10.15 Catalina die Z shell.
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 Fastfetch Neofetch lässt sich zsh auch grafisch ein wenig aufbohren und aufhübschen.
.zshrc
Fehlt zsh auf deinem System, dann kannst das Tool sehr einfach mit deinem Paketmanager installieren.
sudo apt install zsh
brew install zsh
- https://formulae.brew.sh/formula/zsh#default
- https://manpages.ubuntu.com/manpages/jammy/en/man1/zsh.1.html
Nach der Installation kann zsh sofort verwendet werden. Aber mehr Spaß macht es mit ein wenig Farbe.
Die Konfigurationsdatei .zshrc befindet sich direkt im Home-Verzeichnis des eigenen Benutzers.
Konfigurationsdateien in Git-Repository verwalten
Da die gesamte Konfiguration von zsh und der nachfolgend vorgestellten Tools in einzelnen Dateien erfolgt, können diese sehr einfach über ein Git-Repository gesichert, verwaltet und bei Bedarf an andere Clients verteilt werden.
👉 Konfigurationsdateien im Home Directory mit Git zwischen macOS und Kubuntu Linux synchronisieren
oh-my-zsh
oh-my-zsh ist eine Sammlung von Plugins und Themes für zsh.
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 auch die Einstellungen für oh-my-zsh vorgenommen.
nano .zshrc
Die Plugins aktivierst du ebenfalls in der .zshrc-Datei. Trage dazu einfach den Namen deiner Erweiterung in die Liste ein. Das wars!
plugins=(
battery
brew
colorize
colored-man-pages
command-not-found
copypath
copyfile
eza
git
git-flow
git-flow-avh
git-hubflow
git-prompt
gitfast
github
macos
rust
screen
tig
uv
zoxide
)
Update und Update in einem Befehl
Ein guter Befehl ist bubu && bugbc, um Homebrew-Updates schnell und bequem einzuspielen. Umständliches Tippen und das Vergessen von Befehlen ist damit schon fast ausgeschlossen.
bubu=bubo && bupbubo= Update Homebrew data, then list outdated formulae and casks.bup= Upgrade outdated, unpinned brews. -bugbc= Upgrade outdated formulae and casks (greedy), then run cleanup.
Dieser Befehl kann aus der Historie der Befehle herausgesucht werden. Das geht noch einfacher mit dem kleinen Tool 👉 mcfly. Mit der Tastenkombination Strg & r wird die Historie aufgerufen. Die ersten Buchstaben eines Befehls können eingetippt werden. Die Treffer werden angezeigt und können ausgewählt werden Tab oder direkt ausgeführt ENTER werden.
Die Dokumentation von oh-my-zsh findest du auf der offiziellen GitHub-Seite.
Es werden von mir auf dem Client einige Tools verwendet, die in Rust geschrieben sind. Die Installation und das Update funktionieren entweder über Cargo, den Rust-Paketmanager oder über Homebrew.
eza
eza is a modern alternative for the venerable file-listing command-line program ls that ships with Unix and Linux operating systems, giving it more features and better defaults. It uses colours to distinguish file types and metadata. It knows about symlinks, extended attributes, and Git. And it’s small, fast, and just one single binary. 2
zoxide
zoxide is a smarter cd command, inspired by z and autojump. 3
lsd
This project is a rewrite of GNU ls with lots of added features like colors, icons, tree-view, more formatting options etc. The project is heavily inspired by the super colorls project. 4
Für einige oh-my-zsh-Plugins sind noch einige Tools auf dem eigenen Client zu installieren:
Für Cargo ist am Beginn der .zshrc eine Zeile einzufügen:
######################################
# RUST CARGO
######################################
export PATH=/Users/destroy/.cargo/bin:$PATH
Für zoxide ist am Anfang der .zshrc die Zeile einzufügen:
######################################
# zoxide
######################################
eval "$(zoxide init zsh)"
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"
SPACESHIP_CONFIG="$HOME/.config/spaceship/spaceship.zsh
Die Konfigurationsdatei für Spaceship liegt im Verzeichnis $HOME/.config/spaceship/spaceship.zsh
###############
# SPACESHIP Configuration
###############
# Install Spaceship via oh-my-zsh
# https://spaceship-prompt.sh/getting-started/#__tabbed_1_3
#
# add the following two lines into ~/.zshrc
# ZSH_THEME="spaceship"
# SPACESHIP_CONFIG="$HOME/.config/spaceship/spaceship.zsh"
#
# save Spaceship config file into $HOME/.config/spaceship/
# Core Prompt Settings
SPACESHIP_PROMPT_ADD_NEWLINE="true"
SPACESHIP_PROMPT_SEPARATE_LINE="true"
SPACESHIP_CHAR_SYMBOL_ROOT="#"
SPACESHIP_CHAR_PREFIX=" "
SPACESHIP_CHAR_SUFFIX=" "
SPACESHIP_CHAR_SYMBOL="❯ "
SPACESHIP_CHAR_COLOR_SUCCESS="green"
SPACESHIP_CHAR_COLOR_FAILURE="red"
SPACESHIP_CHAR_COLOR_SECONDARY="yellow"
# User Section
SPACESHIP_USER_SHOW="always"
SPACESHIP_USER_PREFIX="· 🧑 "
SPACESHIP_USER_SUFFIX=" "
SPACESHIP_USER_COLOR="yellow"
SPACESHIP_USER_COLOR_ROOT="red"
# Host Section
SPACESHIP_HOST_SHOW="always"
SPACESHIP_HOST_PREFIX="· 💻 "
SPACESHIP_HOST_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"
SPACESHIP_HOST_COLOR_SSH="green"
SPACESHIP_HOST_COLOR="blue"
# Directory Section
SPACESHIP_DIR_SHOW="always"
SPACESHIP_DIR_PREFIX="· 📁 "
SPACESHIP_DIR_TRUNC="3"
SPACESHIP_DIR_TRUNC_REPO="true"
# Git Section
SPACESHIP_GIT_SHOW="true"
SPACESHIP_GIT_PREFIX="· "
#SPACESHIP_GIT_SYMBOL="🌿 "
SPACESHIP_GIT_STATUS_SHOW="true"
SPACESHIP_GIT_STATUS_PREFIX=" ["
SPACESHIP_GIT_STATUS_SUFFIX="]"
SPACESHIP_GIT_STATUS_UNTRACKED="?"
SPACESHIP_GIT_STATUS_MODIFIED="!"
SPACESHIP_GIT_STATUS_RENAMED="»"
SPACESHIP_GIT_STATUS_DELETED="✘"
SPACESHIP_GIT_STATUS_STASHED="$"
SPACESHIP_GIT_STATUS_UNMERGED="="
SPACESHIP_GIT_STATUS_ADDED="+"
SPACESHIP_GIT_STATUS_AHEAD="⇡"
SPACESHIP_GIT_STATUS_BEHIND="⇣"
SPACESHIP_GIT_STATUS_DIVERGED="⇕"
SPACESHIP_GIT_STATUS_COLOR_BEHIND="green"
SPACESHIP_GIT_STATUS_COLOR_DIVERGED="white"
# Node Section
SPACESHIP_NODE_SHOW="true"
SPACESHIP_NODE_PREFIX="⬢ "
SPACESHIP_NODE_COLOR="green"
# Python Section
SPACESHIP_PYTHON_SHOW="true"
SPACESHIP_PYTHON_PREFIX="$SPACESHIP_PROMPT_DEFAULT_PREFIX"
SPACESHIP_PYTHON_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"
SPACESHIP_PYTHON_SYMBOL="🐍 "
SPACESHIP_PYTHON_COLOR="yellow"
# Time Section
SPACESHIP_TIME_SHOW="true"
SPACESHIP_TIME_12HR="false"
SPACESHIP_TIME_PREFIX=" ⏰ "
SPACESHIP_TIME_SUFFIX=" ⏰ $SPACESHIP_PROMPT_DEFAULT_SUFFIX "
SPACESHIP_TIME_FORMAT="%D{%H:%M:%S}"
SPACESHIP_TIME_COLOR="cyan"
# Execution Time
SPACESHIP_EXEC_TIME_SHOW="true"
SPACESHIP_EXEC_TIME_PREFIX="🚀 "
SPACESHIP_EXEC_TIME_ELAPSED="5"
SPACESHIP_EXEC_TIME_ELAPSED="2"
SPACESHIP_EXEC_TIME_PRECISION="1"
SPACESHIP_EXEC_TIME_COLOR="blue"
# Battery
SPACESHIP_BATTERY_SHOW="true"
SPACESHIP_BATTERY_PREFIX="🔋 "
SPACESHIP_BATTERY_THRESHOLD="20"
SPACESHIP_BATTERY_CHARGING_SYMBOL="⚡"
SPACESHIP_GNU_SCREEN_SHOW="true"
SPACESHIP_GNU_SCREEN_SYMBOL="🪞"
SPACESHIP_GNU_SCREEN_PREFIX="$SPACESHIP_PROMPT_DEFAULT_PREFIX"
SPACESHIP_GNU_SCREEN_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"
SPACESHIP_SUDO_SHOW="true"
# Prompt Order (left side)
SPACESHIP_PROMPT_ORDER=(
char
host
user
dir
git
node
python
ruby
battery
gnu_screen
char
)
# Right Prompt Order (right side)
SPACESHIP_RPROMPT_ORDER=(
time
exec_time
)
aliases
In der .zshrc lassen sich Aliase konfigurieren. Komplexere Befehle lassen sich so sehr einfach auf eine Tastenkombination zusammenfassen.
###############
# ls aliases
###############
alias ls='eza -alg --git --total-size --icons=auto --hyperlink'
alias gls='lsd'
# List as normal
alias ll='ls -lah'
# List alpabetically, folders first
alias lf='eza -alg --git --total-size --icons=auto --hyperlink --group-directories-first'
# List sub-directories
#alias lsf='gls -lhR --group-directories-first'
alias lsf='eza -alg --git --total-size --icons=auto --hyperlink -T'
# List newest first
alias lt='ls -lhtF'
alias df='duf'
Fonts
Für die Verwendung mit Spaceship sollten auf dem System NerdFonts installiert sein.
oder
FiraCode
FiraCode kann für das Theme 👉 Spaceship verwendet werden, funktioniert aber nicht korrekt mit 👉 lsd.
oder
-
Lade die zip-Datei herunter
- Entpacke die zip-Datei und wähle in den Ordnern die
ttf-Dateien aus.Öffnen mit ... -> Schriftensammlung
FiraCode installieren
Dadurch wird das Font systemweit aktiviert und kann von jeder App und Benutzer 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 das Font dort auszuwählen.
FiraCode im Profil als Standard festlegen
Für eine noch bessere Darstellung kann auch FiraCode for Powerline ausgewählt werden.
Nach einem Neustart des Terminals werden die Zeichen von Git korrekt angezeigt.
ll-Anzeige mit FiraCode
JetBrainsMono Nerd Fonts
Das Fonts JetBrainsMono Nerd Fonts funktioniert mit 👉 lsd und Ranger.
Es lassen sich auf der Seite eine Vielzahl an Fonts herunterladen .
JetBrainsMono Nerd Fonts herunterladen
Nach dem Entpacken der zip-Datei lassen sich die Schriften mit einem Klick auf die ttf-Datei installieren.
In iterm2 oder im Standardterminal sind die Fonts als Standard in den Profilen einzustellen:
JetBrainsMono Nerd Fonts als Standardschriftart für das Profil festlegen
Fastfetch
neofetch wurde eingestellt 😢
Die Entwicklung von neofetch wurde eingestellt.
Der Beitrag auf It's Foss stellt 7 Alternativen vor:
- 🔗 Neofetch is Dead! Here are 7 Alternatives for Your Linux System vorgestellt.
Fastfetch kannst du sehr einfach installieren.
brew install fastfetch
Damit du nun alle Informationen auch im Terminal beim Aufruf angezeigt bekommst, musst du in der .zshrc Fastfetch aktivieren.
Trage dazu einfach am Ende der Datei die Zeile fastfetch ein. Beim nächsten Aufruf des Terminals werden dir die Infos dann ausgegeben.
Die Konfigurationsdatei config.conf befindet sich im Verzeichnis `~/.config/fastfetch. Dort kannst du die Anzeige an deine Wünsche anpassen.
zsh - Manuelle Anpassungen
zshrc - Autovervollständigung
Die Autovervollständigung ist standardmäßig nicht aktiv, kann aber mit einem Eintrag in der .zshrc problemlos aktiviert werden.
autoload -Uz compinit && compinit
Gib mir gerne einen Kaffee ☕ aus 😀
Gib mir gerne einen Kaffee ☕ aus !
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj
Weitere Möglichkeiten mich zu unterstützen findest du 👉 hier
Follow Me






