Upgrade deine Command-Line mit diesen Rust-basierten Werkzeugen
Rust hat seit seiner Einführung unter Entwicklern eine gewisse Notorietät erreicht. Die Sprache ist komplex, verbaut viele einschneidige Konzepte, wird kompiliert und ist wie C/C++ eine Systemprogrammiersprache. Dennoch ist Rust beliebt wie keine andere. Seit Jahren führt Rust die Liste im jährlichen StackOverflow Developer Survey als beliebteste Programmiersprache an und scheint gerade auf Github unter Hobbyprojekten sehr verbreitet zu sein.
Obwohl ich es nicht genau einzuschätzen vermag, wie der Zusammenhang genau entstanden ist, Fakt ist, dass viele altbekannte Anwendungen mit Rust neu verfasst werden. Gerade im Bereich Command-Line wird das Rad gerne neu erfunden und führt dort zu einem bemerkenswerten Upgrade der User Experience, sofern man diese Programme benutzt.
Genau darum geht es im heutigen TechUp. Wir schauen uns die beliebtesten CLI-basierten Rust-Projekte an und ich zeige dir, wie du diese installieren und verwenden kannst. 🦀👌
📦 Pakete mit Cargo installieren
In der Rust-Landschaft ist Cargo das Referenzwerkzeug, um Pakete zu verwalten und Rust-basierte Projekte zu bauen. Da wir nun Rust-Projekte installieren wollen, ist es sicherlich sinnvoll, sich auch bei Gelegenheit Cargo zu installieren, sofern man nicht den OS-eigenen Paketmanager bevorzugen sollte.
Die Installation von Cargo ist relativ einfach und geht so:
|
|
Man muss per Inline-Command nochmals mit "1"
bestätigen, dass rustup
Cargo, sowie weitere Toolchain-Objekte installieren darf. Wenn die Tools installiert sind, müssen wir noch source "$HOME/.cargo/env"
ausführen. Sobald dies erfolgreich gemacht ist, prüfen wir kurz, ob eine valide Version von Cargo vorhanden ist, und fahren gleich fort.
|
|
Installationsbeispiel anhand von exa
Eines des ersten Pakete, die wir mit Cargo installieren möchten, ist exa
, ein Ersatz für cp
. Das lässt sich mit cargo install <Paketname>
einfach installieren.
|
|
Jetzt muss man noch wissen, dass Cargo standardmässig die Binaries der zu installierenden Pakete in einen eigens für das userspezifische Root-Verzeichnis unter ~/.cargo/bin/
ablegt. Man kann dieses Root-Zielverzeichnis mit der Umgebungsvariable CARGO_INSTALL_ROOT
übersteuern. Im meinem Beispiel wird ersichtlich, dass ich asdf (Wir haben auch ein TechUp zu asdf, schau rein!) als Versionsmanager im Einsatz habe und asdf dafür sorgt, dass für für Version 1.60.0
ein eigenes Root-Zielverzeichnis unter ~/.asdf/installs/rust/1.60.0/bin/
vorhanden ist.
Ich könnte jetzt dieses Verzeichnis mit CARGO_INSTALL_ROOT
übersteuern und auf das standardmässige ~/.cargo/bin/
zeigen lassen. Das machen wir hier jetzt aber nicht. Stattdessen möchte ich noch erwähnen, dass wir kurz prüfen sollten, ob rustup
unserer Shell über die $PATH
-Umgebungsvariable unser Root-Verzeichnis der Wahl hinzufügt hat.
|
|
Soweit, so gut. Nun können wir ohne weiteres exa
ausführen:
|
|
Hurra, hoffentlich haben wir hier was neues dazu lernen können. Nun kommen wir zur eigentlichen Ausgangsfrage des heutigen TechUps: Warum sollte ich überhaupt exa
und diese ganzen anderen Tools nutzen wollen? Im Folgenden stelle ich dir wie versprochen einige CLI-Tools vor, die deine Command-Line auf ein neues Level bringen. 🚀
exa – A modern replacement for ls
Was ist exa
? Nun, exa
macht quasi das genau gleiche wie ls
, nur besser. Neben ls
, eignet sich exa
auch gut als Ersatz für tree
. Ein grosser Vorteil von exa
ist, dass sich Dateiformate und Metadaten mithilfe von Farben unterscheiden lassen. Weitere Informationen dazu findest du auf der Github-Page des Projekts.
bat – A cat clone with wings
bat
ist ein Ersatz für das altbekannte cat
, kann aber auch less
oder more
ersetzen. bat
unterstützt Syntax Highlighting, Git und weitere coole Features. Weitere Informationen dazu findest du auf der Github-Page des Projekts.
du + rust = dust. Like du but more intuitive.
Disk usage, oder besser gesagt du
, wird mit dust
noch besser. Weitere Informationen dazu findest du auf der Github-Page des Projekts.
tokei – 時計 Count your code, quickly
Tokei ist ein Programm, welches dir Statistiken zu deinem Code zeigt. Es zeigt dir die Anzahl der Dateien und Linien innerhalb dieser Dateien, sogar nach Programmiersprache gruppiert, an. Ziemlich cool. Weitere Informationen dazu findest du auf der Github-Page des Projekts.
fd – A simple, fast and user-friendly alternative to ‘find’
fd
ist wie find
, nur etwas simpler und benutzerfreundlicher. fd
ist zudem intuitiver und schneller als find
. Weitere Informationen dazu findest du auf der Github-Page des Projekts.
tealdeer – A fast TLDR client
TLDR heisst “Too long; didn’t read” und ist ein Slang-Akronym aus dem Internet. Es gibt ein Projekt mit dem gleichen Namen, welches vereinfachte, durch die Community gewartete, Man-Pages verwaltet. Tealdeer ist eine Rust-Implementation davon, mit Fokus auf Schnelligkeit. Weitere Informationen dazu findest du auf der Github-Page des Projekts.
ytop – A TUI system monitor written in Rust
ytop
ist wie top
. Es zeigt dir alle aktuell laufende Prozesse und Informationen über die Nutzung von Systemressourcen, wie CPU und RAM-Usage, an. Leider wird das Projekt nicht mehr fortgeführt, weshalb ich dir als nächstes noch bottom
vorstelle. Weitere Informationen dazu findest du auf der Github-Page des Projekts.
bottom – A customizable cross-platform graphical system monitor for the terminal
bottom
ist wie top
oder ytop
. Weitere Informationen dazu findest du auf der Github-Page des Projekts.
In den Alltag integrieren über Aliases
Jetzt wollen wir alle diese Utilities noch in unseren Alltag übernehmen, also am besten in allen verwendeten Shells als Aliases definieren.
Hier zum Beispiel ein Ausschnitt aus meiner ~/.zshrc
:
|
|
Danach müssen wir noch mit source ~/.zshrc
die Konfiguration in der bestehenden TTY-Session neu laden. Falls du eine andere Shell als zsh
benutzen solltest, musst du den command entsprechend anpassen: source ~/.<Deine Shell>rc
Weiterführende Quellen und Ressourcen
https://github.com/matu3ba/awesome-cli-rust
https://gist.github.com/sts10/daadbc2f403bdffad1b6d33aff016c0a