9 Kommandozeilen-Tools, die jeder Dev braucht
Datum:07.06.2024
Autor(en):Matthew Tyson
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.
Foto: SkillUp | shutterstock.com
Manche Devs arbeiten mit der Kommandozeile1 (auch Command Line Interface; CLI), weil sie sie lieben2 - 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ünge3.
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 Dokumentation4 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
tldrversetzt Sie in die Lage, zielgerichteter zu suchen:
$ tldr <command-name>
tldr in Aktion.
Foto: Matthew Tyson | IDG
Falls Sie
npminstalliert haben, ist die
tldr-Installation nur einen kurzen Befehl entfernt:
npm install -g tldr
ngrok
Sobald Sie
tldrinstalliert 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
ngrokerö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
ngrokauch 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,
ngrokzu starten.
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:80805
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 Webanwendung6 zuzugreifen: Sie starten den Prozess, lassen diesen dann in
screenlaufen und programmieren so lange etwas. Währenddessen läuft
ngrokdie ganze Zeit weiter - Sie können über
screenjederzeit 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.
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
exitin die Kommandozeile ein.
sdkman und nvm
Wenn Sie Java7 oder JavaScript8 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
sdkmankö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.
Foto: Matthew Tyson | IDG
Zwischen den Versionen zu wechseln, gestaltet sich denkbar einfach -
$ sdk use java 19-openfü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.
Foto: Matthew Tyson | IDG
fzf
Sowohl
grepals auch
findsind Standardbestandteile der Kommandozeilen-Befehlspalette. Allerdings sind beide Tools nicht so funktional, wie sie sein sollten. Das ruft
fzfauf 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
fzfstarten, 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.
Foto: Matthew Tyson | IDG
Aus 878.937 Möglichkeiten hat
fzfdie 25 Dateien und Verzeichnisse ausgewählt, die unseren Anforderungen entsprechen könnten - und das völlig ohne Umwege.
exa
Mit
exawerden langweilige alte
ls-Listings schöner und nützlicher:
$ tldr
A modern replacement for ls (List directory contents).
Für eine bessere Developer Experience9 ohne mentalen Overhead statten Sie
lseinfach mit einem
exa-Alias aus. Das Tool respektiert die meisten
ls-Standardoptionen -
exa -lfunktioniert also (beispielsweise) genau so, wie Sie es erwarten würden.
Exa ist das neue ls.
Foto: Matthew Tyson | IDG
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-Optimierung10 - ähnlich wie im Fall von
exa. Wenn Sie
batverwenden, 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
batauf 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.
Foto: Matthew Tyson | IDG
nethack
Ein absoluter Kommandozeilen-Klassiker ist
nethack- der ursprüngliche, Konsolen-basierte ASCII Dungeon Crawler11. 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.
Foto: Matthew Tyson | IDG
(fm)
Links im Artikel:
1 https://www.computerwoche.de/a/die-besten-profi-befehle-fuer-windows,3613612,32 https://www.computerwoche.de/a/was-developer-an-ihrem-job-lieben-und-hassen,3613410
3 https://www.computerwoche.de/a/so-motivieren-sie-softwareentwickler,3612760
4 https://www.computerwoche.de/a/so-erstellen-sie-eine-moderne-dokumentation-fuer-anwendungen,3547812
5 http://localhost:8080/
6 https://www.computerwoche.de/a/7-webseiten-die-ihre-desktop-software-ersetzen,3551573
7 https://www.computerwoche.de/a/darum-bleibt-java-relevant,3698258
8 https://www.computerwoche.de/a/was-javascript-von-typescript-unterscheidet,3548614
9 https://www.computerwoche.de/a/10-wege-zur-besseren-developer-experience,3698700
10 https://www.computerwoche.de/a/8-wege-um-top-entwickler-zu-halten,3614053
11 https://de.wikipedia.org/wiki/NetHack
Alle Rechte vorbehalten. Jegliche Vervielfältigung oder Weiterverbreitung in jedem Medium in Teilen oder als Ganzes bedarf der schriftlichen Zustimmung der IDG Tech Media GmbH. dpa-Texte und Bilder sind urheberrechtlich geschützt und dürfen weder reproduziert noch wiederverwendet oder für gewerbliche Zwecke verwendet werden. Für den Fall, dass auf dieser Webseite unzutreffende Informationen veröffentlicht oder in Programmen oder Datenbanken Fehler enthalten sein sollten, kommt eine Haftung nur bei grober Fahrlässigkeit des Verlages oder seiner Mitarbeiter in Betracht. Die Redaktion übernimmt keine Haftung für unverlangt eingesandte Manuskripte, Fotos und Illustrationen. Für Inhalte externer Seiten, auf die von dieser Webseite aus gelinkt wird, übernimmt die IDG Tech Media GmbH keine Verantwortung.