9 Kommandozeilen-Tools, die jeder Dev braucht

07.06.2024
Von 
Matthew Tyson ist Java-Entwickler und schreibt unter anderem für unsere US-Schwesterpublikation Infoworld.com.
Diese Befehlszeilen-Tools sind nicht nur für Entwickler mit CLI-Affinität Pflicht.
Selbst wenn Sie dieser Anblick nicht in Verzückung versetzt - ein Blick auf diese obligatorischen Kommandozeilen-Tools lohnt sich.
Selbst wenn Sie dieser Anblick nicht in Verzückung versetzt - ein Blick auf diese obligatorischen Kommandozeilen-Tools lohnt sich.
Foto: SkillUp | shutterstock.com

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>

tldr in Aktion.
tldr in Aktion.
Foto: Matthew Tyson | IDG

Falls Sie npm installiert haben, ist die tldr-Installation nur einen kurzen Befehl entfernt:

npm install -g tldr

Mehr Infos zu 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.

Das CLI-Tool ngrok macht Devs das Leben auf verschiedenen Ebenen leichter.
Das CLI-Tool ngrok macht Devs das Leben auf verschiedenen Ebenen leichter.
Foto: Matthew Tyson | IDG

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).

Mehr Infos zu ngrok

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)

Wenn Sie eine laufende Sitzung, in der Sie sich gerade befinden, benennen wollen, nutzen Sie die Tastenkombination Strg + A und geben :sessionname <sessionname> ein. Das ist besonders nützlich, wenn Sie mit mehreren Screen-Instanzen arbeiten wollen.

Screen ist ein umfangreiches und potentes CLI-Tool.
Screen ist ein umfangreiches und potentes CLI-Tool.
Foto: Matthew Tyson | IDG

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.

Mehr Infos zu screen

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.

sdkman zeigt alle verfügbaren Java-Installationen auf einem lokalen Rechner an - inklusive derjenigen, die gerade in Benutzung ist.
sdkman zeigt alle verfügbaren Java-Installationen auf einem lokalen Rechner an - inklusive derjenigen, die gerade in Benutzung ist.
Foto: Matthew Tyson | IDG

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.

Ein Blick auf nvm.
Ein Blick auf nvm.
Foto: Matthew Tyson | IDG

Mehr Infos zu sdkman

Mehr Infos zu nvm

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.

In diesem Beispiel suchen wir nach einem Projekt, an dem wir zuletzt gearbeitet haben.
In diesem Beispiel suchen wir nach einem Projekt, an dem wir zuletzt gearbeitet haben.
Foto: Matthew Tyson | IDG

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.

Mehr Infos zu fzf

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.

Exa ist das neue ls.
Exa ist das neue ls.
Foto: Matthew Tyson | IDG

Mehr Infos zu exa

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.

Bat ist ein simples Dienstprogramm, das es zu einem echten Erlebnis macht, Dateien auf der Konsole zu durchsuchen.
Bat ist ein simples Dienstprogramm, das es zu einem echten Erlebnis macht, Dateien auf der Konsole zu durchsuchen.
Foto: Matthew Tyson | IDG

Mehr Infos zu bat

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.

Es gibt neuere Versionen des Nethack-Konzepts - manchmal fährt man jedoch mit dem Original am besten.
Es gibt neuere Versionen des Nethack-Konzepts - manchmal fährt man jedoch mit dem Original am besten.
Foto: Matthew Tyson | IDG

Mehr Info zu nethack

(fm)