Image for Make your CLI feel like Home.

Make your CLI feel like Home.

Da ich als Entwickler viel mit der CLI arbeite und die Standard-CLI nicht alle Bedürfnisse abdeckt, man außerdem als Entwickler meist eigene Anpassungen wünscht, habe ich relativ schnell eine angepasste CLI eingerichtet.

Image for post

Dieser Artikel zeigt eine Schritt für Schritt Anleitung für eine angepasste CLI auf macOS und liefert Ideen um die eigene CLI mehr auf sich anzupassen und dadurch effizienter damit arbeiten zu können. Am Ende des Artikels werden folgende Teile installiert sein:

  • git
  • Homebrew
  • Oh My Zsh
  • Agnoster-Theme
  • Antigen
  • Plugins:
    • kubectx + kubens
    • nvm
    • zsh-syntax-highlighting

Image for post

Starten wir mit den Basis-Paketen Git und zsh und installieren diese über folgenden Befehl:

sudo apt install git-core zsh

Weiter geht es mit Homebrew. Homebrew ist ein Paketmanager für macOS mit dem zusätzliche Pakete installiert und aktuell gehalten werden können. Installiert werden kann es einfach über folgenden Befehl:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Jetzt können wir Oh-My-Zsh installieren

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Da wir nicht das Standard-Theme verwenden wollen, müssen wir noch Fonts installieren, die für das gewünschte Agnoster-Theme vorausgesetzt werden:

sudo apt install fonts-powerline

Oh-My-Zsh kann über eine Konfigurations-Datei angepasst werden. Diese liegt im User-Directory und hat den Datei-Namen .zshrc. Hier können wir jetzt das Agnoster Theme aktivieren:

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="agnoster"

Über Homebrew können wir Antigen installieren und aktivieren. Antigen ist ein Plugin-Manager für ZSH und vereinfacht das Plugin-Handling.

brew install antigen

Um Antigen zu aktivieren, fügen wir den Verweis in die .zshrc ein:

source $ZSH/oh-my-zsh.sh
source /usr/local/share/antigen/antigen.zsh

Mit Antigen können wir Plugins installieren bzw. aktivieren. Ich verwende derzeit die Plugins nvm (Node Version Manager), auto-nvm-use (automatisches konfigurieren der Node Version in der CLI, falls eine .nvmrc im Verzeichnis liegt), zsh-syntax-highlighting (wie der Name vermuten lässt: Syntax-Highlighting für die CLI), kubectx-zshplugin (enthält kubectx und kubens, die die Arbeit mit Kubernetes Clustern und Namespaces vereinfacht) und kube-ps1 (fügt den aktuellen Context und Namespace in den Prompt, installiert über brew). Es gibt aber noch viele weitere Plugins

# Load the oh-my-zsh's library.
antigen use oh-my-zsh

# NVM bundle
export NVM_LAZY_LOAD=true
antigen bundle lukechilds/zsh-nvm
antigen bundle Sparragus/zsh-auto-nvm-use

# kubectx-zshplugin
antigen bundle unixorn/kubectx-zshplugin

# Syntax highlighting bundle.
antigen bundle zsh-users/zsh-syntax-highlighting

# Tell Antigen that you're done.
antigen apply

KUBE_PS1_PREFIX="["
KUBE_PS1_SUFFIX="]"
source "/usr/local/opt/kube-ps1/share/kube-ps1.sh"

Das Ergebnis unterscheidet sich schon stark von der Default-Shell und enthält nun weit mehr Funktionen wie auch bspw. eine Alias-Funktion oder Directory History.

alias track-break="time-tracker add -c \"Lunch Break\" -t BREAK "

Image for post

Jetzt können wir noch unsere eigene Note einbringen und bspw. den Username verbergen, die Uhrzeit einblenden und ein Random-Emoji hinzufügen.

prompt_context() {
  emojis=("⚡️" "🔥" "💀" "👑" "😎" "🐸" "🐵" "🦄" "🌈" "🍻" "🚀" "💡" "🎉" )
  RAND_EMOJI_N=$(( $RANDOM % ${#emojis[@]} + 1))
  prompt_segment black default "${emojis[$RAND_EMOJI_N]} [%D{%H:%M:%S | %d.%m.%y}] $(kube_ps1)"
}

Image for post

Außerdem möchte ich die Zeile umbrechen, da mittlerweile sehr viele Informationen einblendet werden:

prompt_end() {
  if [[ -n $CURRENT_BG ]]; then
      print -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
  else
      print -n "%{%k%}"
  fi

  print -n "%{%f%}"
  CURRENT_BG='' 

  #Adds the new line and ➜ as the start character.
  printf "\n ➜";
}
result

Das vorläufige Endergebnis kann nun so aussehen, es gibt aber noch knapp 140 andere Themes und etwa 270 weitere Plugins und damit kann die CLI komplett auf die eigenen Bedürfnisse zugeschnitten werden und von einer tristen grauen Konsole zu einer Fancy CLI verwandelt werden.

Image for post

Have fun customizing
AW

back
Kaffee & Cookie
Ganz gemütlich durch unsere Seite stöbern, am besten mit einem Kaffee in der Hand. Keine Sorge, für die Cookies sorgen wir.
Auf unserer Seite verwenden wir Cookies, wäre cool wenn du das akzeptierst.
Über "Weitere Info" kannst du weitere Informationen erhalten oder deine Einstellungen ändern.