<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>fzf – Linux und Ich</title>
	<atom:link href="https://linuxundich.de/tag/fzf/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxundich.de</link>
	<description>Blog über Ubuntu, Linux, Android und IT</description>
	<lastBuildDate>Fri, 13 Nov 2026 16:55:07 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>Bash-History durchsuchen: hstr, fzf, Atuin und McFly im Vergleich</title>
		<link>https://linuxundich.de/bash-history-durchsuchen-hstr-fzf-atuin-mcfly/</link>
					<comments>https://linuxundich.de/bash-history-durchsuchen-hstr-fzf-atuin-mcfly/#respond</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Fri, 13 Nov 2026 16:55:07 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Atuin]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[fzf]]></category>
		<category><![CDATA[hstr]]></category>
		<category><![CDATA[McFly]]></category>
		<category><![CDATA[Terminal]]></category>
		<guid isPermaLink="false">https://linuxundich.de/bash-history-durchsuchen-hstr-fzf-atuin-mcfly/</guid>

					<description><![CDATA[hstr, fzf, Atuin und McFly ersetzen die Strg+R-Suche der Bash durch eine Trefferliste. Was die vier können, worauf bei hstr unter aktuellen Kerneln zu achten ist und wie der Sync von Atuin funktioniert.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Die Suche mit <code>Strg</code>+<code>R</code> zeigt immer nur einen Treffer und lässt euch raten, ob der gesuchte Befehl noch kommt. Vier Werkzeuge ersetzen sie durch eine Trefferliste: hstr, fzf, Atuin und McFly. Sie unterscheiden sich darin, was sie zusätzlich speichern, wie sie sortieren und ob sie die History zwischen mehreren Rechnern abgleichen können.</p>



<p class="wp-block-paragraph">Die <a href="https://linuxundich.de/gnu-linux/bash-history-suggest-box/">BASH History Suggest Box</a>, heute hstr, habe ich 2014 im Blog und im <a href="https://www.linux-community.de/ausgaben/linuxuser/2014/06/mit-der-bash-history-suggest-box-shell-befehle-schneller-finden/">LinuxUser</a> vorgestellt. Seitdem ist die Einrichtung unter aktuellen Kerneln eine andere, und mit Atuin und McFly gibt es Werkzeuge mit eigener Datenbank. Alle vier laufen im Test unter TUXEDO OS, jedes der Tools hat seine eigenen Stärken und Schwächen.</p>



<h2 class="wp-block-heading">Die Bordmittel für den Anfang</h2>



<p class="wp-block-paragraph">Die Bash bringt schon etwas mit: <code>Strg</code>+<code>R</code> startet die Rückwärtssuche, jeder weitere Druck springt zum nächsten, älteren Treffer. Das geht überall, auch auf dem Server per SSH. Debian und TUXEDO OS merken sich allerdings nur 1000 Befehle im Speicher und 2000 in der <code>~/.bash_history</code>. Die Werte <code>HISTSIZE</code> und <code>HISTFILESIZE</code> in der <code>~/.bashrc</code> lassen sich erhöhen.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6af74606a726f&quot;}" data-wp-interactive="core/image" data-wp-key="6af74606a726f" class="wp-block-image size-large wp-lightbox-container"><img fetchpriority="high" decoding="async" width="1280" height="720" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-01-bash-strg-r-1280x720.webp" alt="Konsole mit den letzten Befehlen der History und darunter der klassischen Bash-Suche reverse-i-search, die nur einen einzigen Treffer für apt zeigt" class="wp-image-48745" srcset="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-01-bash-strg-r-1280x720.webp 1280w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-01-bash-strg-r-640x360.webp 640w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-01-bash-strg-r-768x432.webp 768w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-01-bash-strg-r-1536x864.webp 1536w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-01-bash-strg-r.webp 1760w" sizes="(max-width: 781px) 100vw, 680px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Die Bordmittel zeigen nur einen Treffer: Strg+R springt von Eintrag zu Eintrag, eine Liste gibt es nicht.</figcaption></figure>



<p class="wp-block-paragraph">Zwei Zeilen in der <code>~/.inputrc</code> machen aus den Pfeiltasten eine Präfixsuche. Tippt ihr danach <code>git</code> und drückt <code>Hoch</code>, steht der letzte Befehl da, der mit <code>git</code> beginnt. Das genügt vielen. Wer nach einem Wort mitten im Befehl sucht, etwa nach einem Servernamen, braucht eines der folgenden Werkzeuge.</p>



<pre data-lui-lang="conf" data-lui-file="~/.inputrc" class="wp-block-code"><code>&quot;\e[A&quot;: history-search-backward
&quot;\e[B&quot;: history-search-forward</code></pre>



<h2 class="wp-block-heading">hstr: Trefferliste mit Löschfunktion</h2>



<p class="wp-block-paragraph">hstr (kurz für HiSToRy) öffnet bei <code>Strg</code>+<code>R</code> eine Liste aller Treffer. Mit <code>Hoch</code> und <code>Runter</code> wählt ihr aus, <code>Tab</code> holt den Eintrag zum Bearbeiten in die Kommandozeile, <code>Entf</code> löscht ihn aus dem Verlauf. Das hilft, wenn ihr einmal ein Passwort statt eines Befehls getippt habt. <code>Strg</code>+<code>F</code> markiert Favoriten, <code>Strg</code>+<code>/</code> wechselt die Ansicht und <code>Strg</code>+<code>E</code> die Suchart, etwa auf exakte Treffer oder reguläre Ausdrücke.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6af74606a7dc0&quot;}" data-wp-interactive="core/image" data-wp-key="6af74606a7dc0" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1280" height="720" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-02-hstr-1280x720.webp" alt="Konsole mit hstr 3.1, die Liste zeigt rund 25 Treffer für apt, der Suchbegriff ist rot hervorgehoben" class="wp-image-48746" srcset="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-02-hstr-1280x720.webp 1280w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-02-hstr-640x360.webp 640w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-02-hstr-768x432.webp 768w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-02-hstr-1536x864.webp 1536w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-02-hstr.webp 1760w" sizes="(max-width: 781px) 100vw, 680px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">hstr zeigt alle Treffer als Liste, hebt den Suchbegriff farbig hervor und sortiert in der Voreinstellung nach Rang.</figcaption></figure>



<p class="wp-block-paragraph">In Debian, Ubuntu und TUXEDO OS liegt hstr in den Paketquellen, unter Arch Linux im AUR. Die passenden Einstellungen schreibt das Programm selbst in die <code>~/.bashrc</code>. Danach öffnet <code>Strg</code>+<code>R</code> die Liste, und die Bash gleicht die History nach jedem Befehl mit der Datei ab.</p>



<pre data-lui-lang="bash" class="wp-block-code"><code>sudo apt install hstr
hstr --show-configuration &gt;&gt; ~/.bashrc
source ~/.bashrc</code></pre>



<p class="wp-block-paragraph">Seit Version 3.0 nutzt hstr nicht mehr den Systemaufruf TIOCSTI, den aktuelle Kernel meist abschalten. Dafür übernimmt <code>Eingabe</code> den Befehl nur in die Kommandozeile, erst ein zweiter Druck führt ihn aus. Ruft ihr <code>hstr --show-configuration</code> ohne Terminal auf, etwa per SSH, landet eine Fehlermeldung in der Ausgabe und damit in der <code>~/.bashrc</code>. Version 3.3 behebt das, Debian liefert noch 3.1.</p>



<p class="wp-block-paragraph">Unter Arch Linux scheiterte der Build von 3.3 am Prüfsummenvergleich. Der Tarball enthält denselben Quellcode, nur der Ordnername im Archiv unterscheidet sich, weil Upstream den Tag umbenannt hat. Abhilfe schafft das Löschen der zwischengespeicherten Datei, danach lädt yay den Tarball neu.</p>



<pre data-lui-lang="bash" class="wp-block-code"><code>rm ~/.cache/yay/hstr/hstr-3.3.tar.gz</code></pre>



<h2 class="wp-block-heading">fzf: unscharfe Suche für alles</h2>



<p class="wp-block-paragraph">fzf ist ein allgemeiner Fuzzy-Finder und bringt ein Skript für die Bash mit. Es belegt <code>Strg</code>+<code>R</code> für die History und <code>Strg</code>+<code>T</code> für Dateien. Die Suche ist unscharf: Die eingegebenen Buchstaben müssen nur in dieser Reihenfolge im Befehl vorkommen. Deshalb liefert <code>apt</code> auch <code>curl</code> und <code>tar</code>. Ein vorangestelltes Hochkomma sucht exakt. Das Paket gibt es in Debian, Ubuntu, TUXEDO OS und Arch Linux.</p>



<pre data-lui-lang="bash" class="wp-block-code"><code>sudo apt install fzf
echo 'eval &quot;$(fzf --bash)&quot;' &gt;&gt; ~/.bashrc</code></pre>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6af74606a8ae1&quot;}" data-wp-interactive="core/image" data-wp-key="6af74606a8ae1" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1280" height="720" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-03-fzf-1280x720.webp" alt="Konsole mit der fzf-Verlaufssuche, die Treffer erscheinen mit Nummern, das Eingabefeld steht oben" class="wp-image-48747" srcset="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-03-fzf-1280x720.webp 1280w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-03-fzf-640x360.webp 640w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-03-fzf-768x432.webp 768w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-03-fzf-1536x864.webp 1536w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-03-fzf.webp 1760w" sizes="(max-width: 781px) 100vw, 680px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">fzf sucht unscharf: Bei apt landen auch curl und tar in der Liste, weil sich die Buchstaben dort finden lassen.</figcaption></figure>



<p class="wp-block-paragraph">Dafür fehlt fzf, was hstr kann: Einträge aus der History löschen oder Favoriten markieren. Wer fzf ohnehin nutzt, bekommt eine History-Suche gratis mit. Wer mehr will, schaut zu Atuin.</p>



<h2 class="wp-block-heading">Atuin: die History als Datenbank</h2>



<p class="wp-block-paragraph">Atuin ersetzt die Textdatei durch eine SQLite-Datenbank und speichert zu jedem Befehl Zeitpunkt, Dauer, Rückgabewert und Verzeichnis. Dadurch lässt sich die Suche auf ein Projektverzeichnis, eine Sitzung oder einen Rechner eingrenzen. Zwischen den Filtern wechselt <code>Strg</code>+<code>R</code> in der Oberfläche. Atuin liegt in den Paketquellen von Debian, Ubuntu, TUXEDO OS und Arch Linux.</p>



<pre data-lui-lang="bash" class="wp-block-code"><code>sudo apt install atuin
atuin import bash
echo 'eval &quot;$(atuin init bash)&quot;' &gt;&gt; ~/.bashrc</code></pre>



<p class="wp-block-paragraph">Der Import übernimmt den vorhandenen Verlauf. Die Zeile in der <code>~/.bashrc</code> legt Atuin auf <code>Strg</code>+<code>R</code> und die Taste <code>Hoch</code>, das lässt sich abschalten. Die Oberfläche füllt das ganze Terminal, kompakter wird sie mit <code>inline_height = 10</code> in der Datei <code>~/.config/atuin/config.toml</code>.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6af74606a959b&quot;}" data-wp-interactive="core/image" data-wp-key="6af74606a959b" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1280" height="720" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-04-atuin-1280x720.webp" alt="Konsole mit der Atuin-Oberfläche, die Treffer zeigen Dauer, Zeitpunkt und Befehl, darunter das Suchfeld mit dem Filter GLOBAL" class="wp-image-48748" srcset="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-04-atuin-1280x720.webp 1280w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-04-atuin-640x360.webp 640w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-04-atuin-768x432.webp 768w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-04-atuin-1536x864.webp 1536w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-04-atuin.webp 1760w" sizes="auto, (max-width: 781px) 100vw, 680px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Atuin speichert zu jedem Befehl Dauer und Zeitpunkt und blendet beides in der Trefferliste ein.</figcaption></figure>



<p class="wp-block-paragraph">Das stärkste Argument für Atuin ist der Sync. Die History lässt sich Ende-zu-Ende-verschlüsselt zwischen Rechnern abgleichen, über den Dienst des Projekts oder über einen eigenen Server. Im Test lief ein eigener: Das Paket <code>atuin-server</code> genügt, als Datenbank reicht SQLite. Der Server liest seine Einstellungen aus der <code>~/.config/atuin/server.toml</code>, die Clients bekommen seine Adresse in der <code>config.toml</code>.</p>



<pre data-lui-lang="toml" data-lui-file="~/.config/atuin/server.toml" class="wp-block-code"><code>host = &quot;0.0.0.0&quot;
port = 8888
open_registration = true
db_uri = &quot;sqlite:///home/user/atuin-server/atuin.db&quot;</code></pre>



<pre data-lui-lang="toml" data-lui-file="~/.config/atuin/config.toml" class="wp-block-code"><code>sync_address = &quot;http://server:8888&quot;</code></pre>



<p class="wp-block-paragraph">Auf dem ersten Rechner legt <code>atuin register</code> ein Konto an, <code>atuin key</code> zeigt den Schlüssel. Auf dem zweiten meldet <code>atuin login</code> mit diesem Schlüssel an, danach gleicht <code>atuin sync</code> ab. Im Test kamen Befehle in beide Richtungen an, samt Rechnername in der Liste. In der Datenbank des Servers stand keiner davon im Klartext. Ohne TLS gehört der Server nur ins Heimnetz, sonst hinter einen Reverse-Proxy.</p>



<p class="wp-block-paragraph">Fedora 44 liefert Atuin 18.12.1, der Server und der andere Rechner liefen mit 18.23. Der ältere Client konnte deren Einträge nicht lesen („unknown history version v2“) und blieb leer. Erst das aktuelle Release 18.24.6 von GitHub synchronisierte. Auf allen Rechnern sollte deshalb dieselbe, möglichst neue Version laufen.</p>



<p class="wp-block-paragraph">Befehle mit Passwörtern filtert Atuin über <code>secrets_filter</code>, verlassen würde ich mich darauf nicht. Zuverlässiger ist ein Leerzeichen vor dem Befehl: Atuin übernimmt laut Dokumentation die Konvention <code>ignorespace</code>, solche Befehle landen nicht in der Datenbank.</p>



<h2 class="wp-block-heading">McFly: Sortierung nach Verzeichnis</h2>



<p class="wp-block-paragraph">McFly ersetzt <code>Strg</code>+<code>R</code> ebenfalls und sortiert die Treffer laut Projektseite mit einem kleinen neuronalen Netz, das unter anderem das aktuelle Verzeichnis und die zuletzt ausgeführten Befehle berücksichtigt. Unter Arch Linux liegt es in extra. In den Paketquellen von TUXEDO OS fehlt es, im Test genügte das fertige Archiv von GitHub. Die einzelne Datei kommt nach <code>~/.local/bin</code>, Root-Rechte braucht es nicht.</p>



<pre data-lui-lang="bash" class="wp-block-code"><code>tar -xzf mcfly-v0.9.4-x86_64-unknown-linux-musl.tar.gz
cp mcfly ~/.local/bin/
echo 'eval &quot;$(mcfly init bash)&quot;' &gt;&gt; ~/.bashrc</code></pre>



<p class="wp-block-paragraph">Beim ersten Start übernimmt McFly die <code>~/.bash_history</code>. Eine Leiste oben nennt die Tasten: <code>Esc</code> beendet, <code>Eingabe</code> führt aus, <code>Tab</code> übernimmt zum Bearbeiten, <code>F1</code> schaltet die Sortierung um, <code>F2</code> löscht einen Eintrag, <code>F3</code> zeigt Treffer aus allen Verzeichnissen. Die Länge der Liste steuert die Variable <code>MCFLY_RESULTS</code>.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6af74606aa287&quot;}" data-wp-interactive="core/image" data-wp-key="6af74606aa287" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1280" height="720" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-05-mcfly-1280x720.webp" alt="Konsole mit McFly, oben eine blaue Leiste mit Tastenkürzeln, darunter die Treffer für apt mit Zeitangabe" class="wp-image-48749" srcset="https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-05-mcfly-1280x720.webp 1280w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-05-mcfly-640x360.webp 640w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-05-mcfly-768x432.webp 768w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-05-mcfly-1536x864.webp 1536w, https://linuxundich.de/wp-content/uploads/2026/11/hstr-alternativen-05-mcfly.webp 1760w" sizes="auto, (max-width: 781px) 100vw, 680px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">McFly zeigt oben die Tastenkürzel und rechts neben jedem Treffer, wie lange der Befehl her ist.</figcaption></figure>



<p class="wp-block-paragraph">Die Bedienung ist übersichtlicher als bei Atuin. Wie gut die Sortierung nach Verzeichnis arbeitet, lässt sich mit einer Demo-History nicht beurteilen, dafür braucht das Netz echte Gewohnheiten. Einen Sync-Dienst wie Atuin bringt McFly nach Angaben der Entwickler nicht mit.</p>



<h2 class="wp-block-heading">Welches Werkzeug für wen?</h2>



<p class="wp-block-paragraph">Reichen euch die Bordmittel mit Präfixsuche, müsst ihr nichts installieren. Eine einfache Liste mit Löschfunktion und Favoriten bietet hstr, dessen Paketstände zwischen den Distributionen auseinanderliegen (Debian 3.1, Arch 3.3). Wer fzf ohnehin nutzt, bekommt die History-Suche mit. McFly passt, wenn ihr keinen Sync braucht und die Sortierung nach Verzeichnis mögt.</p>



<p class="wp-block-paragraph">In meinen Augen lohnt sich Atuin vor allem, sobald ihr mehr als einen Rechner pflegt oder im Nachhinein wissen wollt, wo ihr einen Befehl abgesetzt habt. Dafür ist es auch das umfangreichste der vier Werkzeuge. Importiert eure alte History und schaut nach einer Woche, ob ihr noch zu <code>Strg</code>+<code>R</code> zurückgreift.</p>



<p class="wp-block-paragraph">Welche Lösung nutzt ihr für die Bash-History? Reicht euch die Suche der Bash, oder habt ihr hstr ersetzt? Schreibt es gern in die Kommentare.</p>
<hr><p>☕ <strong>Linux und Ich unterstützen</strong><br>Danke, dass du <a href="https://linuxundich.de">Linux und Ich</a> liest. Wenn dir das Blog gefällt und du meine Arbeit unterstützen möchtest, findest du weitere Informationen auf der <a href="https://linuxundich.de/spendiere-einen-kaffee/">Blogspende-Seite</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/bash-history-durchsuchen-hstr-fzf-atuin-mcfly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
