{"id":8226,"date":"2025-11-12T11:50:04","date_gmt":"2025-11-12T10:50:04","guid":{"rendered":"https:\/\/swissmakers.ch\/?p=8226"},"modified":"2025-12-16T16:19:00","modified_gmt":"2025-12-16T15:19:00","slug":"shell-history-atuin","status":"publish","type":"post","link":"https:\/\/swissmakers.ch\/en\/shell-history-atuin\/","title":{"rendered":"The 'magical' shell history: Atuin"},"content":{"rendered":"<div class=\"gb-container gb-container-6c234260\">\n\n<h2 class=\"wp-block-heading\">Shell-History<\/h2>\n\n\n\n<p>Wer mit einer Shell unter Linux arbeitet, weiss schnell die History-Funktion zu sch\u00e4tzen. Statt Befehle immer wieder einzutippen, verwendet man die Pfeiltaste, um alte Befehle zur\u00fcck zu holen oder man wiederholt Befehle aus der History mit <code>\u00ab!&lt;Befehlsnummer&gt;\u00bb<\/code>. Auch die Kombination <code>history | grep <em>Suchstring<\/em><\/code> kommt sicher vielen bekannt vor.<\/p>\n\n\n\n<p>In diesem Blogbeitrag stelle ich eine bessere und m\u00e4chtigere Variante vor, mit der Shell-History zu arbeiten, indem man das Werkzeug <strong>Atuin<\/strong> verwendet.<\/p>\n\n<\/div>\n\n<div class=\"gb-container gb-container-a479828f\">\n\n<h2 class=\"wp-block-heading\">Was ist Atuin<\/h2>\n\n\n\n<p>Auf der <a href=\"https:\/\/docs.atuin.sh\" target=\"_blank\" rel=\"noreferrer noopener\">Webseite mit der Dokumentation<\/a> wird Atuin wie folgt beschrieben:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. With this context, Atuin gives you faster and better search of your shell history.<\/em><\/p>\n\n\n\n<p><em>Additionally, Atuin (optionally) syncs your shell history between all of your machines. Fully end-to-end encrypted, of course.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Atuin ist ein Ersatz der Shell-History durch eine Datenbank, der n\u00fctzliche Erweiterungen und, wenn das gew\u00fcnscht wird, sogar die Synchronisation der Shell-History \u00fcber mehrere Systeme hinweg bietet.<\/p>\n\n\n\n<p>Atuin ist OpenSource-Software und wird nur durch Sponsoren unterst\u00fctzt. Die Entwicklerinnen sind froh um Unterst\u00fctzung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Unterst\u00fctzte Shells<\/h3>\n\n\n\n<p>Atuin unterst\u00fctzt die folgenden Shell-Varianten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zsh<\/li>\n\n\n\n<li>bash<\/li>\n\n\n\n<li>fish<\/li>\n\n\n\n<li>nushell<\/li>\n\n\n\n<li>xonsh<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Weiterentwicklung<\/h3>\n\n\n\n<p>Im Zusammenhang mit Atuin werden inzwischen auch Werkzeuge entwickelt, mit denen Shell-Konfigurationsfiles zwischen Rechnern synchronisiert werden k\u00f6nnen, um Umgebungsvariablen und Aliases konsistent auf verschiedenen Rechnern verwenden zu k\u00f6nnen. (Siehe: <a href=\"https:\/\/docs.atuin.sh\/guide\/dotfiles\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.atuin.sh\/guide\/dotfiles\/<\/a>)<\/p>\n\n\n\n<p>Ein weiteres Werkzeug ist <em>Atuin Desktop<\/em>, das Dokumentation und ausf\u00fchrbare Programmsequenzen zusammenbringen will. (Siehe: <a href=\"https:\/\/github.com\/atuinsh\/desktop\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/atuinsh\/desktop<\/a>)<\/p>\n\n<\/div>\n\n<div class=\"gb-container gb-container-f5cce44f\">\n\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<p>F\u00fcr die Installation von Atuin gibt es ein Skript, das mit folgendem Befehl heruntergeladen und ausgef\u00fchrt werden kann:<\/p>\n\n\n\n<p><code>curl --proto '=https' --tlsv1.2 -LsSf https:\/\/setup.atuin.sh | sh<\/code><\/p>\n\n\n\n<p>Das Kommando erg\u00e4nzt z.B. die Konfigurationsdatei .bashrc f\u00fcr bash mit dem Befehl<\/p>\n\n\n\n<p><code>eval \"$(atuin init bash)\"<\/code><\/p>\n\n\n\n<p>zum Start des Initialisierungs-Skripts von Atuin beim Starten der bash-Shell. Die Pfadvariable sollte in .bashrc mit dem atuin-Befehl erg\u00e4nzt werden:<\/p>\n\n\n\n<p><code>PATH=\"$PATH:~\/.atuin\/bin\"<\/code><\/p>\n\n\n\n<p>Es wird empfohlen, f\u00fcr die bash-Shell auch <a href=\"https:\/\/github.com\/akinomyoga\/ble.sh\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>ble.sh<\/strong><\/a> zu installieren.<\/p>\n\n\n\n<p>ble.sh ist ein bash-Shell Zeileneditor, der <strong>Syntax-Highlighting <\/strong>(auch mit Farben), <strong>Kommandovervollst\u00e4ndigung<\/strong>, einen <strong>vim-Editiermodus<\/strong> und weitere Features bietet. Atuin kann ihn f\u00fcr die Kommandovervollst\u00e4ndigung und die farbige Darstellung von Befehlen brauchen. Der aktuelle Buildstand von ble.sh kann mit folgendem Befehl (alles auf einer Zeile) installiert werden:<\/p>\n\n\n\n<p><code>curl -L https:\/\/github.com\/akinomyoga\/ble.sh\/releases\/download\/nightly\/ble-nightly.tar.xz | tar xJf -bash ble-nightly\/ble.sh --install ~\/.local\/share<\/code><\/p>\n\n\n\n<p>In .bashrc sollte ble.sh vor dem Start von Atuin mit folgender Zeile auch gleich gestartet werden:<\/p>\n\n\n\n<p><code>source -- ~\/.local\/share\/blesh\/ble.sh<\/code><\/p>\n\n<\/div>\n\n<div class=\"gb-container gb-container-98370dfa\">\n\n<h2 class=\"wp-block-heading\">Bestehende Kommandhistorie<\/h2>\n\n\n\n<p>Atuin kann nach der Installation die bestehende Shell-Kommandhistorie importieren und dann wie jene neuer Kommandos verwenden. Der Import geschieht mit folgendem Kommando:<\/p>\n\n\n\n<p><code>atuin import auto<\/code><\/p>\n\n\n\n<p>Hier noch die Dokumentation des Import-Befehls:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ atuin help import\nImport shell history from file\n\nUsage: atuin import &lt;COMMAND&gt;\n\nCommands:\n  auto          Import history for the current shell\n  zsh           Import history from the zsh history file\n  zsh-hist-db   Import history from the zsh history file\n  bash          Import history from the bash history file\n  replxx        Import history from the replxx history file\n  resh          Import history from the resh history file\n  fish          Import history from the fish history file\n  nu            Import history from the nu history file\n  nu-hist-db    Import history from the nu history file\n  xonsh         Import history from xonsh json files\n  xonsh-sqlite  Import history from xonsh sqlite db\n  help          Print this message or the help of the given subcommand(s)<\/code><\/pre>\n\n<\/div>\n\n<div class=\"gb-container gb-container-bcd8173e\">\n\n<h2 class=\"wp-block-heading\">Verwendung und gespeicherte Daten<\/h2>\n\n\n\n<p>Atuin kann via Konfigurationsdateien den eigenen Bed\u00fcrfnissen angepasst werden. Die Angaben hier beziehen sich auf die Defaultkonfiguration nach der Installation von Atuin in der bash-Shell.<\/p>\n\n\n\n<p>W\u00e4hrend der Verwendung der Shell speichert Atuin in der Datenbank die folgenden Angaben, die dann in Atuin gebraucht werden k\u00f6nnen (siehe: <a href=\"https:\/\/docs.atuin.sh\/guide\/basic-usage\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.atuin.sh\/guide\/basic-usage\/<\/a>):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>verwendetes Kommando<\/li>\n\n\n\n<li>Verzeichnis, in dem das Kommando aufgerufen wurde<\/li>\n\n\n\n<li>Zeitpunkt des Kommandoaufrufs und die Ausf\u00fchrungszeit<\/li>\n\n\n\n<li>Returnwert des Kommandos<\/li>\n\n\n\n<li>Host- und Usernamen<\/li>\n\n\n\n<li>Shell-Session, in der das Kommando aufgerufen wurde<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">TUI, Terminal User Interface<\/h3>\n\n\n\n<p>Mit der Pfeiltaste gegen oben oder mit <code>&lt;ctrl&gt;&lt;r&gt;<\/code> kann das User Interface gestartet werden. Hier ein Screenshot als Beispiel:<\/p>\n\n\n<style>.kb-image8226_7dd039-3d .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<figure class=\"wp-block-kadence-image kb-image8226_7dd039-3d size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"947\" src=\"https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-1-1024x947.png\" alt=\"Atuin-Befehle in der Shell\" class=\"kb-img wp-image-8232\" srcset=\"https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-1-1024x947.png 1024w, https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-1-300x278.png 300w, https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-1-768x711.png 768w, https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-1-13x12.png 13w, https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-1.png 1390w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Zuoberst sieht man auch gleich die wichtigsten Shortcuts:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>&lt;esc&gt;<\/code> um Atuin zu verlassen<\/li>\n\n\n\n<li><code>&lt;tab&gt;<\/code> um den Befehl auf die Kommandozeile zu holen, um ihn dort anzupassen<\/li>\n\n\n\n<li><code>&lt;enter&gt;<\/code> um den Befehl direkt auszuf\u00fchren<\/li>\n<\/ul>\n\n\n\n<p>Mit der Pfeiltaste nach oben oder unten kann man durch die Befehle navigieren.<\/p>\n\n\n\n<p>Mit <code>&lt;ctrl>&lt;R><\/code> kann man den Scope wechseln zwischen [GLOBAL] wie im Screenshot und [HOST], [SESSION] oder [DIRECTORY]. Es werden dann jeweils alle Befehle aus der History oder nur jene von demselben Host, jene aus der aktuellen Session oder jene, die im aktuellen Verzeichnis aufgerufen wurden, angezeigt.<\/p>\n\n\n\n<p><code>&lt;ctrl>&lt;o><\/code> \u00f6ffnet den \u2039<strong>Inspektor<\/strong>\u203a. Mit dem Inspektor kann man die Angaben, die zum aktuellen Befehl gespeichert sind, anschauen und auch den entsprechenden Eintrag aus der Atuin-Datenbank l\u00f6schen.<\/p>\n\n\n\n<p><code>&lt;Alt&gt;&lt;#&gt;<\/code>, wobei # f\u00fcr die Nummer (1 bis 9) des Befehls in der Liste steht, ruft den Befehl mit dieser Nummer auf.<\/p>\n\n\n\n<p>Wenn man einfach beginnt zu tippen, so wird in der History mit einer \u2039fuzzy\u203a-Suche nach dem eingetippten Text gesucht und es werden die gefundenen Befehle angezeigt.<\/p>\n\n\n<style>.kb-image8226_7f8511-c9 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<figure class=\"wp-block-kadence-image kb-image8226_7f8511-c9 size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"930\" src=\"https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-2-1024x930.png\" alt=\"Atuin-Befehle in der Shell\" class=\"kb-img wp-image-8233\" srcset=\"https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-2-1024x930.png 1024w, https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-2-300x273.png 300w, https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-2-768x698.png 768w, https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-2-13x12.png 13w, https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-2.png 1420w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Mit <code>&lt;ctrl&gt;&lt;s&gt;<\/code> kann man zwischen den verschiedenen Suchmodi PREFIX, FULLTEXT und FUZZY wechseln. PREFIX w\u00fcrde im Beispiel kein Resultat liefern, FULLTEXT nur die untersten Befehle, bei denen der Suchtext rot umrandet ist und FUZZY hilft meist auch dann, wenn man den genauen Befehl nicht mehr weiss.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Shortcuts<\/h4>\n\n\n\n<p>Die Default-Shortcuts werden in der <a href=\"https:\/\/docs.atuin.sh\/reference\/search\/\" target=\"_blank\" rel=\"noreferrer noopener\">Dokumentation<\/a> wie folgt beschrieben:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Shortcut<\/strong><\/td><td><strong>Action<\/strong><\/td><\/tr><\/thead><tbody><tr><td>enter<\/td><td>Execute selected item<\/td><\/tr><tr><td>tab<\/td><td>Select item and edit<\/td><\/tr><tr><td>ctrl + r<\/td><td>Cycle through filter modes<\/td><\/tr><tr><td>ctrl + s<\/td><td>Cycle through search modes<\/td><\/tr><tr><td>alt + 1 to alt + 9<\/td><td>Select item by the number located near it<\/td><\/tr><tr><td>ctrl + c \/ ctrl + d \/ ctrl + g \/ esc<\/td><td>Return original<\/td><\/tr><tr><td>ctrl + y<\/td><td>Copy selected item to clipboard<\/td><\/tr><tr><td>ctrl + \u2b05\ufe0f \/ alt + b<\/td><td>Move the cursor to the previous word<\/td><\/tr><tr><td>ctrl + \u27a1\ufe0f \/ alt + f<\/td><td>Move the cursor to the next word<\/td><\/tr><tr><td>ctrl + b \/ \u2b05\ufe0f<\/td><td>Move the cursor to the left<\/td><\/tr><tr><td>ctrl + f \/ \u27a1\ufe0f<\/td><td>Move the cursor to the right<\/td><\/tr><tr><td>ctrl + a \/ home<\/td><td>Move the cursor to the start of the line<\/td><\/tr><tr><td>ctrl + e \/ end<\/td><td>Move the cursor to the end of the line<\/td><\/tr><tr><td>ctrl + backspace \/ ctrl + alt + backspace<\/td><td>Remove the previous word \/ remove the word just before the cursor<\/td><\/tr><tr><td>ctrl + delete \/ ctrl + alt + delete<\/td><td>Remove the next word or the word just after the cursor<\/td><\/tr><tr><td>ctrl + w<\/td><td>Remove the word before the cursor even if it spans across the word boundaries<\/td><\/tr><tr><td>ctrl + u<\/td><td>Clear the current line<\/td><\/tr><tr><td>ctrl + n \/ ctrl + j \/ \u2b06\ufe0f<\/td><td>Select the next item on the list<\/td><\/tr><tr><td>ctrl + p \/ ctrl + k \/ \u2b07\ufe0f<\/td><td>Select the previous item on the list<\/td><\/tr><tr><td>ctrl + o<\/td><td>Open the inspector<\/td><\/tr><tr><td>page down<\/td><td>Scroll search results one page down<\/td><\/tr><tr><td>page up<\/td><td>Scroll search results one page up<\/td><\/tr><tr><td>\u2b07\ufe0f (with no entry selected)<\/td><td>Return original or return query depending on settings<\/td><\/tr><tr><td>\u2b07\ufe0f<\/td><td>Select the next item on the list<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Suche<\/h4>\n\n\n\n<p>Atuin bietet viele Suchm\u00f6glichkeiten, um Befehle in der History zu finden. Ein kleines Beispiel ist die folgende Suche, die den \u00e4ltesten sudo-Befehl aus der History anzeigt:<\/p>\n\n\n\n<p><code>atuin search --limit 1 --reverse sudo<\/code><\/p>\n\n\n\n<p>Die Suche in Atuin ist auf der <a href=\"https:\/\/docs.atuin.sh\/reference\/search\/\" target=\"_blank\" rel=\"noreferrer noopener\">Webseite<\/a> wie folgt beschrieben:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Atuin search supports wildcards, with either the <\/em><em>*<\/em><em> or <\/em><em>%<\/em><em> character. By default, a prefix search is performed (ie, all queries are automatically appended with a wildcard).<\/em><\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Arg<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><\/thead><tbody><tr><td>&#8211;cwd\/-c<\/td><td>The directory to list history for (default: all dirs)<\/td><\/tr><tr><td>&#8211;exclude-cwd<\/td><td>Do not include commands that ran in this directory (default: none)<\/td><\/tr><tr><td>&#8211;exit\/-e<\/td><td>Filter by exit code (default: none)<\/td><\/tr><tr><td>&#8211;exclude-exit<\/td><td>Do not include commands that exited with this value (default: none)<\/td><\/tr><tr><td>&#8211;before<\/td><td>Only include commands ran before this time(default: none)<\/td><\/tr><tr><td>&#8211;after<\/td><td>Only include commands ran after this time(default: none)<\/td><\/tr><tr><td>&#8211;interactive\/-i<\/td><td>Open the interactive search UI (default: false)<\/td><\/tr><tr><td>&#8211;human<\/td><td>Use human-readable formatting for the timestamp and duration (default: false)<\/td><\/tr><tr><td>&#8211;limit<\/td><td>Limit the number of results (default: none)<\/td><\/tr><tr><td>&#8211;offset<\/td><td>Offset from the start of the results (default: none)<\/td><\/tr><tr><td>&#8211;delete<\/td><td>Delete history matching this query<\/td><\/tr><tr><td>&#8211;delete-it-all<\/td><td>Delete all shell history<\/td><\/tr><tr><td>&#8211;reverse<\/td><td>Reverse order of search results, oldest first<\/td><\/tr><tr><td>&#8211;format\/-f<\/td><td>Available variables: {command}, {directory}, {duration}, {user}, {host}, {time}, {exit} and {relativetime}. Example: \u2014format \u201c{time} &#8211; [{duration}] &#8211; {directory}$\\t{command}\u201c<\/td><\/tr><tr><td>&#8211;inline-height<\/td><td>Set the maximum number of lines Atuin\u2019s interface should take up<\/td><\/tr><tr><td>&#8211;help\/-h<\/td><td>Print help<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Interessant ist die M\u00f6glichkeit, mit <code>--exit<\/code> oder <code>--exclude-exit<\/code> vergangene Kommandos mit einem bestimmten Exitcode oder beispielsweise jene, die nicht erfolgreich ausgef\u00fchrt wurden<br>(<code>--exclude-exit 0<\/code>), zu suchen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Statistik<\/h3>\n\n\n\n<p>Mit <code>atuin stats<\/code> bekommt man eine einfache Statistik zu den Befehlen in der History. Mit <code>atuin history list<\/code> werden die gespeicherten Befehle und Daten ausgegeben, wobei das Format der Ausgabe mit Parametern angepasst werden kann.<\/p>\n\n<\/div>\n\n<div class=\"gb-container gb-container-5502ac31\">\n\n<h2 class=\"wp-block-heading\">Update<\/h2>\n\n\n\n<p>Wenn Zugriff zum Internet besteht, so l\u00e4sst sich ein Update ganz einfach mit folgendem Befehl durchf\u00fchren:<\/p>\n\n\n\n<p><code>atuin-update<\/code><\/p>\n\n<\/div>\n\n<div class=\"gb-container gb-container-691d0a6b\">\n\n<h2 class=\"wp-block-heading\">Support<\/h2>\n\n\n\n<p>F\u00fcr Fragen zu Atuin gibt es ein Forum: <a href=\"https:\/\/forum.atuin.sh\/\" target=\"_blank\" rel=\"noopener\">https:\/\/forum.atuin.sh\/<\/a><\/p>\n\n\n\n<p>Im Forum k\u00f6nnen auch Ideen f\u00fcr Weiterentwicklungen vorgeschlagen werden.<\/p>\n\n<\/div>\n\n<div class=\"gb-container gb-container-cdd9a471\">\n\n<h2 class=\"wp-block-heading\">Synchronisation zwischen Rechnern<\/h2>\n\n\n\n<p>Es ist m\u00f6glich, die History mit Atuin \u00fcber Rechnergrenzen hinweg zu speichern und zu synchronisieren. Dazu braucht es f\u00fcr Atuin eine Datenbank auf einem Synchronisationsserver in der Cloud oder auf einem eigenen Rechner, die dann von verschiedenen Rechnern aus verwendet wird. Der Datentransport von und zur Datenbank wird dabei sicher verschl\u00fcsselt.<\/p>\n\n\n\n<p>Auf die Details wird in diesem Blogbeitrag nicht eingegangen. Sie sind auf der Atuin-Webseite beschrieben: <a href=\"https:\/\/docs.atuin.sh\/self-hosting\/server-setup\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.atuin.sh\/self-hosting\/server-setup<\/a>.<\/p>\n\n<\/div>\n\n<div class=\"gb-container gb-container-c82a4126\">\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Das OpenSource-Werkzeug Atuin bietet eine verbesserte und einfach zu bedienende Shell-History mit vielen Suchm\u00f6glichkeiten. Es ist schnell installiert und es kann bei Bedarf auch \u00fcber Rechnergrenzen hinweg sicher verwendet werden. Ein rundum gelungenes kleines Werkzeug, das die Arbeit mit der Shell erleichtert.<\/p>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Shell-History Wer mit einer Shell unter Linux arbeitet, weiss schnell die History-Funktion zu sch\u00e4tzen. Statt &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"The &#039;magical&#039; shell history: Atuin\" class=\"read-more button\" href=\"https:\/\/swissmakers.ch\/en\/shell-history-atuin\/#more-8226\" aria-label=\"Read more about The &#039;magical&#039; shell history: Atuin\">Read more<\/a><\/p>","protected":false},"author":9,"featured_media":8237,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","footnotes":""},"categories":[55,75],"tags":[],"class_list":["post-8226","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-shell","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"taxonomy_info":{"category":[{"value":55,"label":"Linux"},{"value":75,"label":"Shell"}]},"featured_image_src_large":["https:\/\/swissmakers.ch\/wp-content\/uploads\/2025\/11\/Atuin-Header-1024x585.jpg",1024,585,true],"author_info":{"display_name":"Matthias Dillier","author_link":"https:\/\/swissmakers.ch\/en\/author\/matthias\/"},"comment_info":0,"category_info":[{"term_id":55,"name":"Linux","slug":"linux","term_group":0,"term_taxonomy_id":55,"taxonomy":"category","description":"","parent":0,"count":10,"filter":"raw","cat_ID":55,"category_count":10,"category_description":"","cat_name":"Linux","category_nicename":"linux","category_parent":0},{"term_id":75,"name":"Shell","slug":"shell","term_group":0,"term_taxonomy_id":75,"taxonomy":"category","description":"","parent":55,"count":1,"filter":"raw","cat_ID":75,"category_count":1,"category_description":"","cat_name":"Shell","category_nicename":"shell","category_parent":55}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/posts\/8226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/comments?post=8226"}],"version-history":[{"count":8,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/posts\/8226\/revisions"}],"predecessor-version":[{"id":8242,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/posts\/8226\/revisions\/8242"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/media\/8237"}],"wp:attachment":[{"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/media?parent=8226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/categories?post=8226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/tags?post=8226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}