<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Tipp am Donnerstag</title>
    <link>https://blog.tuxomat.eu/</link>
    <description>Immer donnerstags gibts hier einen Tipp, der das Leben an der Tastatur leichter macht.</description>
    <pubDate>Tue, 07 Apr 2026 17:12:26 +0000</pubDate>
    <item>
      <title>Letzten Befehl nach Suchmuster ausführen</title>
      <link>https://blog.tuxomat.eu/letzten-befehl-nach-suchmuster-ausfuehren</link>
      <description>&lt;![CDATA[!string wird durch die letzte vollständige Kommandozeile ersetzt, die mit string begonnen hat. &#xA;!?string? wird durch die letzte vollständige Kommandozeile ersetzt, die irgendwo string enthalten hat. !--more--&#xA;&#xA;Beispiele&#xA;!vi führt das letzte Kommando aus, das mit vi begonnen hat. Je nachdem, was du zuletzt getippt hast, könnte das z. B. vi, vim oder auch vidir sein – jeweils die komplette Kommandozeile. &#xA;Konkretes Beispiel: die letzten drei Befehle seien:&#xA;vim /etc/samba/smb.conf&#xA;man smb.conf&#xA;sudo !vi&#xA;Es wird sudo vim /etc/samba/smb.conf ausgeführt.&#xA;&#xA;Du schreibst ein kleines C-Programm. Der Befehlszyklus ist&#xA;vim myprogram.c   # editiere Quelldatei&#xA;make myprogram    # erstelle Binary&#xA;./myprogram       # führe das Programm aus&#xA;Der Test offenbart, dass du nochmal was editieren musst:&#xA;!v&#xA;Dann nochmal kompilieren&#xA;!m&#xA;Und nochmal ausführen&#xA;!.&#xA;Viel Tipparbeit gespart!&#xA;&#xA;Technisches&#xA;Das führende Ausrufezeichen ! bedeutet: Wir greifen auf die Befehlshistorie zu.&#xA;Danach kommt ein Suchstring.&#xA;Ist der Suchstring ein weiteres Ausrufezeichen, ersetze durch die letzte Kommandozeile&#xA;Ist der Suchstring in Fragezeichen ? eingeschlossen, suche den String auf der gesamten Kommandozeile&#xA;Ansonsten suche die letzte Kommandozeile, die mit dem Suchstring beginnt.&#xA;&#xA;Weiteres dazu ist in der bash man page unter dem Abschnitt HISTORY EXPANSION zu finden.&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><code>!string</code> wird durch die letzte vollständige Kommandozeile ersetzt, die <strong>mit string begonnen</strong> hat.
<code>!?string?</code> wird durch die letzte vollständige Kommandozeile ersetzt, die <strong>irgendwo string enthalten</strong> hat. </p>

<h3 id="beispiele">Beispiele</h3>
<ul><li><p><code>!vi</code> führt das letzte Kommando aus, das mit <strong>vi</strong> begonnen hat. Je nachdem, was du zuletzt getippt hast, könnte das z. B. <strong>vi</strong>, <strong>vim</strong> oder auch <strong>vidir</strong> sein – jeweils die komplette Kommandozeile.
Konkretes Beispiel: die letzten drei Befehle seien:</p>

<pre><code class="language-shell">vim /etc/samba/smb.conf
man smb.conf
sudo !vi
</code></pre>

<p>Es wird <code>sudo vim /etc/samba/smb.conf</code> ausgeführt.</p></li>

<li><p>Du schreibst ein kleines C-Programm. Der Befehlszyklus ist</p>

<pre><code class="language-bash">vim myprogram.c   # editiere Quelldatei
make myprogram    # erstelle Binary
./myprogram       # führe das Programm aus
</code></pre>

<p>Der Test offenbart, dass du nochmal was editieren musst:
<code>!v</code>
Dann nochmal kompilieren
<code>!m</code>
Und nochmal ausführen
<code>!.</code>
Viel Tipparbeit gespart!</p></li></ul>

<h3 id="technisches">Technisches</h3>
<ul><li>Das <em>führende</em> Ausrufezeichen <code>!</code> bedeutet: Wir greifen auf die Befehlshistorie zu.</li>
<li>Danach kommt ein Suchstring.</li>
<li>Ist der Suchstring ein weiteres Ausrufezeichen, ersetze durch die letzte Kommandozeile</li>
<li>Ist der Suchstring in Fragezeichen <code>?</code> eingeschlossen, suche den String auf der gesamten Kommandozeile</li>
<li>Ansonsten suche die letzte Kommandozeile, die mit dem Suchstring beginnt.</li></ul>

<p>Weiteres dazu ist in der bash man page unter dem Abschnitt <strong>HISTORY EXPANSION</strong> zu finden.</p>
]]></content:encoded>
      <guid>https://blog.tuxomat.eu/letzten-befehl-nach-suchmuster-ausfuehren</guid>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Letzten Befehl wiederverwenden</title>
      <link>https://blog.tuxomat.eu/letzten-befehl-wiederverwenden</link>
      <description>&lt;![CDATA[Die Zeichenfolge !! wird durch die letzte vollständige Kommandozeile ersetzt. !--more--&#xA;Das ist sehr hilfreich für verschiedene Anwendungsfälle:&#xA;&#xA;Letzten Befehl unverändert noch einmal ausführen: &#xA;  !!&#xA;  Für Zehnfingerschreiberlinge ist das eine Alternative zu Pfeil hoch – Return. Die Hände bleiben in Grundstellung auf der Tastatur.&#xA;sudo vergessen, z. B. bei vim /etc/fstab&#xA;  sudo !!&#xA;Zum letzten Befehl einen weiteren Parameter hinzufügen, z. B. -d für Debugausgaben&#xA;  !! -d&#xA;&#xA;Der ersetzte Befehl wird nach dem RETURN angezeigt und sofort ausgeführt.&#xA;&#xA;!! expandiert zur letzten kompletten Kommandozeile, inklusive Pipes und Kommentaren. Aus&#xA;dmesg | grep irgendwas    # irgendwas suchen&#xA;wird durch &#xA;sudo !!&#xA;also&#xA;sudo dmesg | grep irgendwas    # irgendwas suchen&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>Die Zeichenfolge <code>!!</code> wird durch die letzte vollständige Kommandozeile ersetzt. 
Das ist sehr hilfreich für verschiedene Anwendungsfälle:</p>
<ul><li>Letzten Befehl unverändert noch einmal ausführen:
<code>!!</code>
Für Zehnfingerschreiberlinge ist das eine Alternative zu <em>Pfeil hoch – Return</em>. Die Hände bleiben in Grundstellung auf der Tastatur.</li>
<li><em>sudo</em> vergessen, z. B. bei <code>vim /etc/fstab</code>
<code>sudo !!</code></li>
<li>Zum letzten Befehl einen weiteren Parameter hinzufügen, z. B. <code>-d</code> für Debugausgaben
<code>!! -d</code></li></ul>

<p>Der ersetzte Befehl wird nach dem RETURN angezeigt und sofort ausgeführt.</p>

<p><code>!!</code> expandiert zur letzten kompletten Kommandozeile, inklusive Pipes und Kommentaren. Aus
<code>dmesg | grep irgendwas    # irgendwas suchen</code>
wird durch
<code>sudo !!</code>
also
<code>sudo dmesg | grep irgendwas    # irgendwas suchen</code></p>
]]></content:encoded>
      <guid>https://blog.tuxomat.eu/letzten-befehl-wiederverwenden</guid>
      <pubDate>Wed, 25 Mar 2026 19:40:18 +0000</pubDate>
    </item>
    <item>
      <title>Befehl sichern, ohne abzuschicken</title>
      <link>https://blog.tuxomat.eu/befehl-sichern-ohne-abzuschicken</link>
      <description>&lt;![CDATA[Das Drücken von Alt-# übernimmt die aktuelle Befehlszeile in die Historie, ohne sie auszuführen. !--more--&#xA;&#xA;Erläuterung&#xA;Immer wieder kommt es vor, dass man eine lange Kommandozeile eintippt. Es fehlt aber noch eine Information, man möchte z. B. erst noch einen Parameter in der man-Page nachlesen. Damit die ganze Tipperei bis hier nicht verloren geht, kann mit Alt-# die aktuelle Befehlszeile in die Historie übernommen werden. Dadurch wird am Anfang der Zeile das Kommentarzeichen # eingefügt und der Befehl abgeschlossen. So steht er für spätere Verwendung in der Historie zur Verfügung.]]&gt;</description>
      <content:encoded><![CDATA[<p>Das Drücken von <code>Alt</code>-<code>#</code> übernimmt die aktuelle Befehlszeile in die Historie, ohne sie auszuführen. </p>

<h3 id="erläuterung">Erläuterung</h3>

<p>Immer wieder kommt es vor, dass man eine lange Kommandozeile eintippt. Es fehlt aber noch eine Information, man möchte z. B. erst noch einen Parameter in der man-Page nachlesen. Damit die ganze Tipperei bis hier nicht verloren geht, kann mit <code>Alt</code>-<code>#</code> die aktuelle Befehlszeile in die Historie übernommen werden. Dadurch wird am Anfang der Zeile das Kommentarzeichen <code>#</code> eingefügt und der Befehl abgeschlossen. So steht er für spätere Verwendung in der Historie zur Verfügung.</p>
]]></content:encoded>
      <guid>https://blog.tuxomat.eu/befehl-sichern-ohne-abzuschicken</guid>
      <pubDate>Thu, 19 Mar 2026 21:18:38 +0000</pubDate>
    </item>
    <item>
      <title>Letzten Parameter des vorigen Befehls einfügen</title>
      <link>https://blog.tuxomat.eu/letzten-parameter-des-vorigen-befehls-einfuegen</link>
      <description>&lt;![CDATA[Das Drücken von Alt-. fügt das letzte Wort des vorigen Befehls an der Cursorposition ein.&#xA;Also Alt halten und Punkt drücken. !--more--&#xA;&#xA;Beispiele&#xA;Nach dem Ansehen eines Filmes soll dieser in den Ordner done verschoben werden.&#xA;mpv movie.mp4&#xA;mv Alt-. done&#xA;Durch Alt-. wird der Text movie.mp4 an der Cursorposition eingefügt. Es entsteht also die Zeile&#xA;mv movie.mp4 done&#xA;&#xA;Noch’n Beispiel&#xA;Nach dem Editieren eines Shellscripts soll dieses mit Tracing ausgeführt werden.&#xA;vim myscript.sh         # oder nano, warum auch immer …&#xA;bash -x Alt-.&#xA;Der Kommentar wird ignoriert,  Alt-. expandiert also zu myscript.sh.&#xA;&#xA;Erweiterte Informationen&#xA;Mehrmaliges Anwenden scrollt durch die letzten Befehle. Dazu Alt halten und mehrmals den Punkt . drücken.  &#xA;Einmal = letztes Wort des letzten Befehls&#xA;Zweimal = letztes Wort des vorletzten Befehls&#xA;Dreimal = letztes Wort des vorvorletzten Befehls&#xA;…&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>Das Drücken von <code>Alt</code>-<code>.</code> fügt das <em>letzte Wort</em> des <em>vorigen Befehls</em> an der Cursorposition ein.
Also <strong>Alt</strong> halten und <strong>Punkt</strong> drücken. </p>

<h2 id="beispiele">Beispiele</h2>

<p>Nach dem Ansehen eines Filmes soll dieser in den Ordner <em>done</em> verschoben werden.</p>

<pre><code>mpv movie.mp4
mv Alt-. done
</code></pre>

<p>Durch <code>Alt</code>-<code>.</code> wird der Text <code>movie.mp4</code> an der Cursorposition eingefügt. Es entsteht also die Zeile</p>

<pre><code>mv movie.mp4 done
</code></pre>

<h3 id="noch-n-beispiel">Noch’n Beispiel</h3>

<p>Nach dem Editieren eines Shellscripts soll dieses mit Tracing ausgeführt werden.</p>

<pre><code>vim myscript.sh         # oder nano, warum auch immer …
bash -x Alt-.
</code></pre>

<p>Der Kommentar wird ignoriert,  <code>Alt</code>-<code>.</code> expandiert also zu <code>myscript.sh</code>.</p>

<h2 id="erweiterte-informationen">Erweiterte Informationen</h2>

<p>Mehrmaliges Anwenden scrollt durch die letzten Befehle. Dazu <code>Alt</code> halten und mehrmals den Punkt <code>.</code> drücken.<br>
<strong>Ein</strong>mal = letztes Wort des <strong>letzten</strong> Befehls
<strong>Zwei</strong>mal = letztes Wort des <strong>vorletzten</strong> Befehls
<strong>Drei</strong>mal = letztes Wort des <strong>vorvorletzten</strong> Befehls
…</p>
]]></content:encoded>
      <guid>https://blog.tuxomat.eu/letzten-parameter-des-vorigen-befehls-einfuegen</guid>
      <pubDate>Tue, 10 Mar 2026 13:55:14 +0000</pubDate>
    </item>
  </channel>
</rss>