Bash

Die Bash - als defakto Standard-Shell - ist die erste Shell-Anlaufstelle für Linux-User.

Gerne nutzen wir die grafischen Oberflächen und Tools unter dem Desktop unserer Wahl. Aber wenn es darum geht unser System sauber zu verwalten und zu admininstrieren, dann wenden wir uns einer Shell zu.

Für einen kurzen Überblick über die aktuellen verfügbaren Shell auf einem System:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/bin/zsh
/usr/bin/zsh
/usr/bin/tmux

Auf dem hier dargestellten System wurde die zsh und tmux bereitgestellt.

Wir konzentrieren uns aber auf die Bourne Again Shell BASH den Nachfolger der sh.

Hinweis

Ich habe mich in den letzten Jahren zur Nutzung der ZSH entschlossen. Aber wie immer bei Linux: wir dürfen auf unseren Systemen selber wählen, oder natürlich auch mehrere Shell nutzen.

Wer gerne unterschiedliche Shells nutzt, aber die Erscheinung und Nutzung einheitlich halten möchte, der kann sich ja mal mit dem Tools Starship beschäftigen. Diese Aufrüschung des Terminals macht nur in Terminalemulatoren (gnome-terminal, konsole, xterm, urxvt, st, alacritty, kitty) inklusive sogenannter Nerdfonts einen Sinn - das rohe TTY lässt man oft einfach.

Fangen wir erst einmal mit zwei meiner Basistools an: für die Arbeit in der Shell ist eine effiziente Suche von Dateien/Ordner und das Finden von Befehlen sehr wichtig!

fzf

Die rekursive Suche mit Strg + r und das Suchen von Dateien und Ordnern mit Strg + t auf die richtige Weise mit dem Fuzzy Finder.

Quelle für Tool fzf: Github Repo FZF (mit Erläuterungen für die Betriebssystemeinbindungen)

Einfache Inbetriebnahme bei Debian: apt install fzf

Am Besten schaut man für die Einbindung von FZF in die Paketinfos: apt show fzf

Dort findet man dann Distro/Shell-Erläuterungen: /usr/share/doc/fzf/README.Debian. Für die Einbindung in die Bash benötigen wir die folgenden zwei Zeilen:

source /usr/share/doc/fzf/examples/key-bindings.bash
source /usr/share/doc/fzf/examples/completion.bash

Danach natürlich nicht das Sourcing der Bashrc vergessen (z.B.): source ~/.bashrc

Das mitgebrachte Manual man fzf erläutert wie immer die hier sehr umfangreiche Nutzung.

z - Change Directory

Irgendwann wird man es leid immer dieselben Verzeichnisse aufzurufen und mit Tab zu vervollständigen.

Über viele Jahre hat hier das Tool j - autojump gute Dienste geleistet. Mit z - jump around geht es noch schlanker und schneller.

Quelle für Tool z: Github Repo rupa/z (also bitte git bereitstellen)

Ich stelle mir das Git-Repo für z gerne einfach im Home-Dir ~ bereit:

cd ~
git clone https://github.com/rupa/z.git
echo 'source ~/z/z.sh' >> ~/.bashrc

Und natürlich wieder die .bashrc neu einladen: source ~/.bashrc.

Jetzt muss man erst einmal ein paar klassische cd für Verzeichnisse aufbauen. Dann merkt und gewichtet sich das Tool z diese Pfade und man kann mit z hierüber eine Übersicht anzeigen lassen oder dann mit z teilpf und Tab schnell in die bekannten Pfade wechseln.

Starship.rs

Mit dem in Rust geschriebenen Starship-Projekt kann man sich eine Befehlszeile mit einer einzigenen Konfigurationsdatei ~/.config/starship.toml definieren. Diese Konfiguration lässt sich dann per One-Liner in der jeweiligen Shell-Konfiguration (Bash, Zsh, Fish, PowerShell, …) einfügen.

Starship.rs

Starship.rs

Kurzanleitung: (Bitte gerne das Skript vorab herunterladen und analysieren!)

sh -c "$(curl -fsSL https://starship.rs/install.sh)"

Einbinden in die Bash:

eval "$(starship init bash)"

Aber wie gesagt: Starship lässt sich in diverse Shell von diversen OS integrieren: siehe Github-Projektseite zu Starship

Als Trainer stelle ich gerne auch eine erste Konfigurationsdatei für Starship ( ~/.config/starship.toml ) bereit.

Letzte Anmerkung: für die Darstellung von Ligaturen, Wingdings oder gar Emojis sind spezielle Schriften (engl.: Fonts) nötig.

Die folgenden Abschnitte sollen verschieden Techniken rund um die BASH darstellen, anbieten und vertiefen.

… tbc …