Manche Devs arbeiten mit der Kommandozeile (auch Command Line Interface; CLI), weil sie sie lieben - andere, weil ihnen nichts anderes übrig bleibt. Egal zu welcher Kategorie Sie sich zählen: Diese neun CLI-Tools helfen Ihrer Produktivität und Effizienz (zusätzlich) auf die Sprünge.
tldr
Keine Angst, wir ersparen Ihnen an dieser Stelle eine langwierige, faszinative Abhandlung über die ganz eigene Magie, die die Unix-Shell entfaltet. Fakt ist: Wenn man mit ihr arbeiten will, ist es manchmal erforderlich, vorher ein Handbuch zu lesen. Unix Docs (auch man- oder manual pages) sind diesbezüglich allerdings ein zweischneidiges Schwert: Die benötigte Information ist vorhanden - es ist nur die Frage, wo. Den Teil der Dokumentation aufzuspüren, den Sie gerade benötigen, kann ein entmutigender Task sein. Zwar kann die gute alte Befehlszeile dabei helfen - um ein offizielles Handbuch aufzurufen, genügt:
$ man <command-name>
Allerdings zeichnen sich man-pages vor allem durch ihre Informationsdichte aus - und die Tatsache, dass sie manchmal aktuelle Informationen für neuere Tools vermissen lassen. Das CLI-Tool tldr
versetzt Sie in die Lage, zielgerichteter zu suchen:
$ tldr <command-name>
Falls Sie npm
installiert haben, ist die tldr
-Installation nur einen kurzen Befehl entfernt:
npm install -g tldr
ngrok
Sobald Sie tldr
installiert haben, können Sie damit viele weitere Befehle erkunden. Zum Beispiel:
$ tldr ngrok
Reverse proxy that creates a secure tunnel from a public endpoint to a locally running web service.
Mit ngrok
eröffnet sich Ihnen eine stressfreie Möglichkeit, von einem Remote-Browser auf eine Entwicklungsmaschine zuzugreifen. Aber das Tool kann noch weit mehr. Sie können damit beispielsweise in der Cloud entwickeln und die Ergebnisse im Browser in Augenschein nehmen. Zudem können Sie mit ngrok
auch schnell und einfach laufende Services über HTTPS veröffentlichen - ohne sich mit der Security-Infrastruktur herumschlagen zu müssen. Angenommen, Sie bauen einen Service Worker auf, der HTTPS benötigt, dann ist alles, was Sie für einen sicheren Kontext tun müssen, ngrok
zu starten.
Ein Beispiel, bei dem der HTTP-Port 8080 freigegeben wird:
$ ngrok http 8080
Der ngrok
-Output sieht wie folgt aus:
https://f951-34-67-117-59.ngrok-free.app -> http://localhost:8080
Anschließend kann jedermann die zugewiesene URL aufrufen (machen Sie sich keine Mühe).
screen
Mit diesem Befehlszeilen-Tool können Sie eine Shell-Sitzung mit oder ohne laufenden Prozess "beiseite legen" und sie anschließend zu einem beliebigen Zeitpunkt fortsetzen - auch wenn Sie die ursprüngliche Session beenden.
$ tldr screen
Hold a session open on a remote server. Manage multiple windows with a single SSH connection.
Nehmen wir an, Sie starten ngrok
, um remote auf eine Webanwendung zuzugreifen: Sie starten den Prozess, lassen diesen dann in screen
laufen und programmieren so lange etwas. Währenddessen läuft ngrok
die ganze Zeit weiter - Sie können über screen
jederzeit wieder darauf zugreifen. Veranschaulicht in Code würde das wie folgt aussehen:
$ screen
// Now we are in a new session
$ ngrok http 8080
// Now ngrok is running, exposing http port 8080
Type ctrl-a
// Now we are in screen's command mode
Type the "d" key, to "detach".
// Now you are back in the shell that you started in, while screen is running your ngrok command in the background:
$ screen -list
There is a screen on:
128861.pts-0.dev3 (04/25/24 14:36:58) (Detached)
:sessionname <sessionname>
ein. Das ist besonders nützlich, wenn Sie mit mehreren Screen-Instanzen arbeiten wollen.Wenn wie im Beispiel nur eine screen
-Instanz läuft, führt der Befehl $ screen -r
(für "re-attach") Sie zurück zu Ihrer ngrok
-Sitzung. Im Fall mehrerer Screens können Sie diese mit Hilfe ihrer ID wieder aufrufen:
$ screen -r <screen-ID>
Wenn Sie Ihre Session endgültig beenden wollen, beenden Sie ngrok mit Strg + C und geben anschließend exit
in die Kommandozeile ein.
sdkman und nvm
Wenn Sie Java oder JavaScript auf einem Server verwenden, sollten Sie sich mit sdkman
(für Java) und nvm
(für Node) vertraut machen. Beide Kommandozeilen-Tools sind nützlich, wenn es darum geht, mit mehreren Programmiersprachenversionen auf dem selben Rechner zu jonglieren - und dabei sowohl Path Adjustment als auch Umgebungsvariablen überflüssig machen.
Mit sdkman
können Sie beispielsweise neuere Java-Versionen erkunden und anschließend wieder zum aktuellen LTS-Release springen. Dieser Prozess wird durch das sdk
-Kommando abstrahiert.
Zwischen den Versionen zu wechseln, gestaltet sich denkbar einfach - $ sdk use java 19-open
führt Sie direkt zu JDK Version 19.
$ tldr sdk
Manage parallel versions of multiple Software Development Kits.
Supports Java, Groovy, Scala, Kotlin, Gradle, Maven, Vert.x and many others.
Die nvm
-Utility funktioniert ganz ähnlich:
$ tldr nvm
Install, uninstall or switch between Node.js versions.
Supports version numbers like "12.8" or "v16.13.1", and labels like "stable", "system", etc.
fzf
Sowohl grep
als auch find
sind Standardbestandteile der Kommandozeilen-Befehlspalette. Allerdings sind beide Tools nicht so funktional, wie sie sein sollten. Das ruft fzf
auf den Plan - einen "Fuzzy File Finder". Mit "Fuzzy" ist dabei gemeint, dass die Details zu dem, was Sie suchen, nicht unbedingt klar definiert sein müssen. Ein Beispiel:
$ tldr fzf
Command-line fuzzy finder.
Similar to sk.
Sobald Sie fzf
starten, indiziert das CLI-Tool umgehend das Dateisystem, um Ergebnisvorschläge für Ihre Suchen zu unterbreiten.
Aus 878.937 Möglichkeiten hat fzf
die 25 Dateien und Verzeichnisse ausgewählt, die unseren Anforderungen entsprechen könnten - und das völlig ohne Umwege.
exa
Mit exa
werden langweilige alte ls
-Listings schöner und nützlicher:
$ tldr
A modern replacement for ls (List directory contents).
Für eine bessere Developer Experience ohne mentalen Overhead statten Sie ls
einfach mit einem exa
-Alias aus. Das Tool respektiert die meisten ls
-Standardoptionen - exa -l
funktioniert also (beispielsweise) genau so, wie Sie es erwarten würden.
bat
Die bat
-Utility ähnelt dem cat
-Tool - ist aber besser:
$ tldr bat
Print and concatenate files.
A cat clone with syntax highlighting and Git integration.
Es handelt sich hierbei im Wesentlichen um eine Komfort- beziehungsweise Developer-Experience-Optimierung - ähnlich wie im Fall von exa
. Wenn Sie bat
verwenden, erwartet Sie ein vollwertiger File Viewer - inklusive Title, Borders, Line Numbers und insbesondere einer hilfreichen Syntax-Highlighting-Funktion für Programmiersprachen oder Konfigurationsdateien. Dabei reagiert bat
auf less/more-Befehle - und wird mit "q
" beendet. Die Navigation erfolgt über die Pfeiltasten.
nethack
Ein absoluter Kommandozeilen-Klassiker ist nethack
- der ursprüngliche, Konsolen-basierte ASCII Dungeon Crawler. Das CLI-Tool wird Ihre Produktivität zwar nicht direkt ankurbeln - kann aber durchaus dabei helfen, ein paar Minuten zur Ruhe zu kommen, um komplexe Dev-Probleme zu durchdringen.
(fm)