<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linuxkurs-Blog (Posts about CLI)</title><link>https://lannert.de/debloss/</link><description></description><atom:link href="https://lannert.de/debloss/en/categories/cli.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:lannert@hhu.de"&gt;Detlef Lannert&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Fri, 27 Mar 2026 16:19:31 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>OpenAI übernimmt Astral – was bedeutet das für die Python-Welt?</title><link>https://lannert.de/debloss/en/posts/openai-ubernimmt-astral-was-bedeutet-das-fur-die-python-welt/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Astral ist die Firma, die die (aus gutem Grund inzwischen sehr beliebten)
Python-Tools uv, ruff und ty entwickelt und entsprechende Kompetenz in
Rust-basierter Python-Software aufgebaut hat. Sie war risikokapitalfinanziert
und ist jetzt von OpenAI, der Firma hinter ChatGPT und DALL-E, übernommen
worden.&lt;/p&gt;
&lt;p&gt;Über mögliche Auswirkungen auf das Python-Universum
&lt;a class="reference external" href="https://simonwillison.net/2026/Mar/19/openai-acquiring-astral/"&gt;schreibt Simon Willison&lt;/a&gt;
in seinem Blog. Es scheint so, als müsste man sich wegen der Nutzung der
Astral-Tools (einstweilen) keine Sorgen machen …&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/openai-ubernimmt-astral-was-bedeutet-das-fur-die-python-welt/</guid><pubDate>Fri, 27 Mar 2026 16:00:00 GMT</pubDate></item><item><title>Speicherplatz sparen durch Deduplizieren</title><link>https://lannert.de/debloss/en/posts/speicherplatz-sparen-durch-deduplizieren/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Wenn man im Firefox mehrere Webseiten einer Site „komplett“ (in einem
dafür eigens angelegten Unterverzeichnis) speichert, legt er zusätzlich
zu einer HTML-Datei pro Seite jeweils ein Verzeichnis mit den verlinkten
Dateien an. Dadurch entstehen meist zahlreiche Kopien derselben JS- und
CSS-Dateien, Hintergrund- oder Titelbilder usw. usf., die unnötig Platz
beanspruchen. Wie kann man diese Daten platzsparender speichern?&lt;/p&gt;
&lt;p&gt;Das Programm &lt;code class="docutils literal"&gt;rdfind&lt;/code&gt; (das z.B. für Debian-Systeme als gleichnamiges Paket
existiert) kann helfen: Man wechselt in das Verzeichnis, in dem die Downloads
liegen, und ruft es zunächst im dry-run-Modus auf:&lt;/p&gt;
&lt;pre class="literal-block"&gt;rdfind -dryrun true -makehardlinks true .&lt;/pre&gt;
&lt;p&gt;Wenn die Ausgabe plausibel erscheint, klopft man dreimal auf Holz und lässt es
im Normalmodus laufen:&lt;/p&gt;
&lt;pre class="literal-block"&gt;rdfind -makehardlinks true .&lt;/pre&gt;
&lt;p&gt;Es gibt einige Informationen über den Ablauf aus und teilt u.a. mit, wieviel
Speicherplatz eingespart wurde, indem die Dateiduplikate durch Hardlinks
ersetzt wurden. Das heißt, in jedem Seitenverzeichnis sind nach wie vor alle
Dateien vorhanden, aber identische Dateien sind nur einmal im Dateisystem
gespeichert, alle Kopien verweisen auf denselben Datenbereich. Löscht man
später einzelne Verzeichnisse, so bleiben die Daten so lange erhalten, bis die
letzte Referenz (der letzte Hardlink) gelöscht wurde – genau so, wie man es
braucht.&lt;/p&gt;
&lt;p&gt;Je nachdem, welches Backup-Tool man verwendet (hoffentlich überhaupt eines!),
kann es sein, dass dieses die Hardlinks nicht berücksichtigt und die Dateien
pro Link einmal auf das Backup-Medium kopiert. Dadurch kann sich der
Speicherplatzbedarf der Backups unerwartet vergrößern. Falls das Tool selbst
dedupliziert, dürfte dieser Effekt nicht auftreten.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/speicherplatz-sparen-durch-deduplizieren/</guid><pubDate>Fri, 20 Mar 2026 19:00:00 GMT</pubDate></item><item><title>Die (nähere) Zukunft von Git</title><link>https://lannert.de/debloss/en/posts/die-nahere-zukunft-von-git/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Die Git-Entwickler haben die nähere Zukunft von Git &lt;a class="reference external" href="https://lwn.net/ml/all/aOQVeVYY6zadPjln@nand.local"&gt;diskutiert&lt;/a&gt;;
zu den zentralen Themen gehören die Umstellung auf SHA256 (statt SHA1, das nicht mehr
ausreichend sicher ist!), die Migration auf Rust und die Vorbereitung auf Git 3.0, das
einige breaking changes mit sich bringen wird.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/die-nahere-zukunft-von-git/</guid><pubDate>Sun, 09 Nov 2025 21:00:00 GMT</pubDate></item><item><title>Interessante CLI-Tools, die mit Rust erstellt wurden</title><link>https://lannert.de/debloss/en/posts/interessante-cli-tools-die-mit-rust-erstellt-wurden/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Orhun Parmaksız hat bei RustLab 2024 seine 7 bevorzugten CLI-Tools vorgestellt:
&lt;a class="reference external" href="https://www.youtube.com/watch?v=ATiKwUiqnAU"&gt;7 Rust Terminal Tools That You Should Use&lt;/a&gt;.
Er selbst ist Entwickler beim Projekt &lt;a class="reference external" href="https://ratatui.rs"&gt;Ratatui&lt;/a&gt;,
das TUI-Schnittstellen für Rust bereitstellt.&lt;/p&gt;
&lt;p&gt;Seine Favoriten sind:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;tui-journal: &lt;a class="reference external" href="https://github.com/AmmarAbouZor/tui-journal"&gt;https://github.com/AmmarAbouZor/tui-journal&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;repgrep: &lt;a class="reference external" href="https://github.com/acheronfail/repgrep"&gt;https://github.com/acheronfail/repgrep&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;serie: &lt;a class="reference external" href="https://github.com/lusingander/serie"&gt;https://github.com/lusingander/serie&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;rainfrog: &lt;a class="reference external" href="https://github.com/achristmascarl/rainfrog"&gt;https://github.com/achristmascarl/rainfrog&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;netscanner: &lt;a class="reference external" href="https://github.com/Chleba/netscanner"&gt;https://github.com/Chleba/netscanner&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;glim: &lt;a class="reference external" href="https://github.com/junkdog/glim"&gt;https://github.com/junkdog/glim&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;atac: &lt;a class="reference external" href="https://github.com/Julien-cpsn/ATAC"&gt;https://github.com/Julien-cpsn/ATAC&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meine Erfahrungen damit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;tui-journal - ein TUI-Journal- (Notizen-) Programm. Leicht zu installieren.
Für jedes topic, das man anlegt, gibt es einen Editierbereich, der aber per se
unstrukturiert ist. Also kein Ersatz für ein Weblog oder meine reST-Notizen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;repgrep – Suchen und Ersetzen in Verzeichnisbäumen. Es basiert auf dem Tool
ripgrep, das nicht so simpel zu installieren ist, daher:&lt;/p&gt;
&lt;pre class="literal-block"&gt;git clone https://github.com/BurntSushi/ripgrep
cd ripgrep
cargo build --release --features pcre2
cargo install repgrep&lt;/pre&gt;
&lt;p&gt;Man kann beispielsweise in einem Source tree nach einem Bezeichner suchen, bekommt
die Treffer (pseudo-) grafisch angezeigt, kann sie aus- oder abwählen und anschließend
durch einen anderen String ersetzen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;serie – git-Historie im TUI grafisch darstellen. Installation einfach mit
&lt;code class="docutils literal"&gt;cargo install &lt;span class="pre"&gt;--frozen&lt;/span&gt; serie&lt;/code&gt; (lt. Homepage auszusprechen wie im Deutschen!).
Aufruf in einem git-Baum zeigt direkt die Historie an; man kann mit dem Cursor
einen Commit auswählen, Enter drücken und bekommt Details dazu angezeigt. Sehr
einfach, sehr nützlich.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;rainfrog – ein TUI-Datenbank-Client für PostgreSQL, SQLite, duckdb (experimentell)
und andere. Installation mit &lt;code class="docutils literal"&gt;cargo install rainfrog&lt;/code&gt;. Bedienung und Funktionalität
können mich nicht überzeugen; mit den CLI-Clients (psql, sqlite3) geht's einfacher.
Vermutlich soll rainfrog mit abgespeicherten Queries manche häufigen Abfragen
abrufbar machen, aber die könnte man genausogut auch anders skripten.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;netscanner – ein Tool zur Analyse des Datenverkehrs im LAN. Installation einfach mit
&lt;code class="docutils literal"&gt;cargo install netscanner&lt;/code&gt;; das Programm muss mit Root-Rechten ausgeführt werden.
Es werden zunächst die lokalen Interfaces und die erkannten Wifi-Netze angezeigt;
man kann ein lokal erreichbares Netz scannen. Man kann sich die ein- und ausgehenden
Pakete anzeigen lassen, die offenen Ports und den Traffic. Die Navigation im TUI ist
nicht gerade selbsterklärend (in den Labels sind hier und da einzelne Buchstaben
hervorgehoben, wenn man die drückt, passiert was).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;glim – “terminal user interface (TUI) for monitoring GitLab CI/CD pipelines and
projects”. Nicht ausprobiert.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;atac – ein Web-API-Client fürs TUI. Installation mit &lt;code class="docutils literal"&gt;cargo install atac &lt;span class="pre"&gt;--locked&lt;/span&gt;&lt;/code&gt;
scheiterte mit einer Compilerfehlermeldung.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kurz gefasst: repgrep und serie passen gut in eine Sammlung von CLI-Tools.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/interessante-cli-tools-die-mit-rust-erstellt-wurden/</guid><pubDate>Sun, 09 Nov 2025 20:00:00 GMT</pubDate></item><item><title>Bat on the command line, not in the belfry</title><link>https://lannert.de/debloss/en/posts/bat-on-the-command-line-not-in-the-belfry/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Das Programm &lt;a class="reference external" href="https://github.com/sharkdp/bat"&gt;bat&lt;/a&gt;
ist nach eigenen Angaben „a cat clone with wings“.
Es kann Dateiinhalte im Terminal anzeigen und dabei für Syntaxhervorhebung und Paging
(Vor- und Zurückblättern mit &lt;code class="docutils literal"&gt;less&lt;/code&gt;)
sorgen. Wenn man es aus dem Debian-Paket &lt;code class="docutils literal"&gt;bat&lt;/code&gt; installiert, heißt das Kommando
&lt;code class="docutils literal"&gt;batcat&lt;/code&gt;, um einen Namenskonflikt zu vermeiden. Trifft einen dieser nicht,
spart ein &lt;code class="docutils literal"&gt;alias bat=batcat&lt;/code&gt; die drei zusätzlichen Buchstaben ein.&lt;/p&gt;
&lt;p&gt;Benutzt man einen hellen Hintergrund bspw. für Konsole, empfiehlt sich die Option
&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;--theme=ansi&lt;/span&gt;&lt;/code&gt;, weil sonst vieles nicht lesbar ist (also
&lt;code class="docutils literal"&gt;alias &lt;span class="pre"&gt;bat="batcat&lt;/span&gt; &lt;span class="pre"&gt;--theme=ansi"&lt;/span&gt;&lt;/code&gt;).&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/bat-on-the-command-line-not-in-the-belfry/</guid><pubDate>Mon, 03 Nov 2025 18:00:00 GMT</pubDate></item><item><title>Präsentationen mit der Textkonsole</title><link>https://lannert.de/debloss/en/posts/prasentationen-mit-der-textkonsole/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/mfontanini/presenterm"&gt;Presenterm&lt;/a&gt; ist ein Präsentationstool
für Terminals, das seine Eingabe in Markdown erwartet (mit zahlreichen Erweiterungen)
und die Ausgabe auf geeigneten (Text-) Konsolprogrammen darstellt – mit Grafiken,
Farben, mehreren Spalten, Pausen, aktiven Codebeispielen usw. usf.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lannert.de/debloss/en/posts/prasentationen-mit-der-textkonsole/"&gt;Read more…&lt;/a&gt; (1 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><guid>https://lannert.de/debloss/en/posts/prasentationen-mit-der-textkonsole/</guid><pubDate>Fri, 31 Oct 2025 17:00:00 GMT</pubDate></item><item><title>Vertrauenswürdige Zertifikate hinzufügen</title><link>https://lannert.de/debloss/en/posts/vertrauenswurdige-zertifikate-hinzufugen/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;TIL: Wie kann man die Liste der vertrauenswürdigen Server auf einem
(Debian-) Linux-Server erweitern?&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Zertifikat(e) im crt-Format besorgen oder entsprechend (mit openssl) umwandeln&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Zertifikate nach &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;/usr/share/ca-certificates&lt;/span&gt;&lt;/code&gt; (am besten in ein frisches
Unterverzeichnis) kopieren; es gibt auch &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;/usr/local/share/ca-certificates&lt;/span&gt;&lt;/code&gt;,
aber das funktionierte (auf einem älteren System) nicht&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Zertifikatsdateien mit relativem Pfadnamen in &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;/etc/ca-certificates.conf&lt;/span&gt;&lt;/code&gt;
eintragen&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;das Kommando &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;update-ca-certificates&lt;/span&gt;&lt;/code&gt; ausführen&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;gegebenenfalls Prozesse neu starten (oder den Server rebooten), weil manche
Software offenbar Zertifikatsinformationen cachet&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(Spoilerwarnung: Falls jemand rätselt – TIL steht für “things I learnt” …)&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/vertrauenswurdige-zertifikate-hinzufugen/</guid><pubDate>Fri, 17 Oct 2025 08:00:00 GMT</pubDate></item><item><title>pwtool ist ein praktisches Passwort- und TOTP-Tool</title><link>https://lannert.de/debloss/en/posts/pwtool-ist-ein-praktisches-passwort-und-totp-tool/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;&lt;a class="reference external" href="https://www.usenix.org.uk/content/pwtool.html"&gt;pwtool&lt;/a&gt;
(in Debian testing jetzt auch als gleichnamiges Paket verfügbar)
kann sichere, zufällige Passwörter generieren, diese in verschiedenen
Formaten ausgeben (gehasht, nach Wordlist, in diverse Kommandos substituiert)
und auch als TOTP-Server fungieren.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/pwtool-ist-ein-praktisches-passwort-und-totp-tool/</guid><pubDate>Thu, 02 Oct 2025 20:00:00 GMT</pubDate></item><item><title>Sinnvolles Greppen in Quellprogrammen</title><link>https://lannert.de/debloss/en/posts/sinnvolles-greppen-in-quellprogrammen/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;&lt;a class="reference external" href="https://github.com/Aider-AI/grep-ast"&gt;grep-ast&lt;/a&gt; ist ein grep-Tool, das die
Quellsyntax einiger Programmiersprachen versteht und kontextgerecht greppen
kann. Mit &lt;code class="docutils literal"&gt;uv tool install &lt;span class="pre"&gt;grep-ast&lt;/span&gt;&lt;/code&gt; kann man es (unter den Kommandonamen
&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;grep-ast&lt;/span&gt;&lt;/code&gt; und &lt;code class="docutils literal"&gt;gast&lt;/code&gt;) verfügbar machen, und auch bei KI-unterstützter
Programmierung soll es nützlich sein.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/sinnvolles-greppen-in-quellprogrammen/</guid><pubDate>Thu, 25 Sep 2025 08:00:00 GMT</pubDate></item><item><title>Neuer Python-REPL ab Version 3.13</title><link>https://lannert.de/debloss/en/posts/neuer-python-repl-ab-version-313/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Trey Hunner (der eine umfangreiche &lt;a class="reference external" href="https://www.pythonmorsels.com/articles/"&gt;Liste&lt;/a&gt;
von Python-Artikeln, geordnet nach Themenfeldern und für Einsteiger geeignet,
anbietet – die meisten frei zugänglich) hat die alten und neuen Features des
Python-REPL in Version 3.13 (also des Read-Eval-Process-Loop)
&lt;a class="reference external" href="https://www.pythonmorsels.com/repl-features/"&gt;zusammengestellt&lt;/a&gt;.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/neuer-python-repl-ab-version-313/</guid><pubDate>Tue, 16 Sep 2025 20:59:51 GMT</pubDate></item></channel></rss>