<?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>zInformatik &#187; History</title>
	<atom:link href="http://zinformatik.de/tag/history/feed/" rel="self" type="application/rss+xml" />
	<link>http://zinformatik.de</link>
	<description>Computer, Informatik und Mikrocontroller Blog</description>
	<lastBuildDate>Fri, 23 Jul 2010 21:22:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Tipps und Tricks für die Bash</title>
		<link>http://zinformatik.de/linux/tipps-und-tricks-fur-die-bash/</link>
		<comments>http://zinformatik.de/linux/tipps-und-tricks-fur-die-bash/#comments</comments>
		<pubDate>Sun, 10 May 2009 17:12:03 +0000</pubDate>
		<dc:creator>zimon</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tipps und Tricks]]></category>
		<category><![CDATA[Ubuntuusers-Planet]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Prozesse]]></category>

		<guid isPermaLink="false">http://zinformatik.de/?p=1194</guid>
		<description><![CDATA[<p>Hier ein paar kleine Tipps und Tricks für die Bash.</p>
<p><strong>Livesuche in der History</strong><br />
Sucht man ein Kommando, welches man schon einmal eingegeben hat, so kann man die History (welche in der Datei ~/.bash_history gespeichert wird) durchsuchen. Die Bash stellt dafür sogar eine Livesuche bereit. Diese wird mit der Tastenkombination Strg+r eingeleitet. Danach kann man eine beliebige Zeichenkette eingeben, die&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Hier ein paar kleine Tipps und Tricks für die Bash.</p>
<p><strong>Livesuche in der History</strong><br />
Sucht man ein Kommando, welches man schon einmal eingegeben hat, so kann man die History (welche in der Datei ~/.bash_history gespeichert wird) durchsuchen. Die Bash stellt dafür sogar eine Livesuche bereit. Diese wird mit der Tastenkombination Strg+r eingeleitet. Danach kann man eine beliebige Zeichenkette eingeben, die in irgendeinem Befehl schonmal vorgekommen ist. Mit jedem eingegebenen Buchstaben werden Vorschläge gemacht, wobei die Suche immer Rückwärts läuft.<br />
Durch erneutes Drücken von Strg+r kann man weiter suchen. So kann man dann z.b. mit <em>Strg+r sudo Strg+r</em> zum vorletzten <em>sudo</em>-Befehl gelangen.</p>
<p><strong>Weitere History-Funktionen</strong><br />
Mit dem Befehl <em>history</em> werden alle eingegebenen Kommandos, die sich in der History befinden mit Zeilennummer ausgegeben. Gibt man dem Befehl noch eine Zahl x als Parameter mit, so werden nur die letzten x Einträge angezeigt. Mit der Option -c (clear) kann man die History löschen.<br />
Normalerweise wird die Datei ~/.bash_history erst beim beenden der Shell geschrieben. Man kann sie aber auch sofort schreiben, indem man den Befehl <em>history -w</em> ausführt. Umgekehrt kann man die aktuelle History auch mittels <em>history -r</em> aus der Datei ~/.bash_history einlesen.</p>
<p><strong>Praktische Tastenkombinationen</strong></p>
<ul>
<li>Strg+l &#8211; (kleines L) löscht den Bildschirm</li>
<li>Strg+u &#8211; löscht alles vor dem Cursor</li>
<li>Strg+t &#8211; tauscht die letzten beiden Zeichen</li>
<li>Alt+. &#8211; fügt das letzte Argument ein</li>
<li>Strg+d &#8211; beendet die Sitzung bzw. sendet ein EOF (z.B. für at).</li>
</ul>
<p><strong>Praktische Variablen</strong></p>
<ul>
<li>!! &#8211; kompletter letzter eingegebener Befehl</li>
<li>!$ &#8211; letztes Argument</li>
<li>$$ &#8211; PID der aktuellen Bash</li>
<li>!String &#8211; letztes Kommando, das mit <em>String</em> angefangen hat</li>
<li>!?String &#8211; letztes Kommando, welches <em>String</em> enthielt.</li>
</ul>
<p>So kann man mit <em>sudo !!</em> den letzten Befehl mit root-Rechten erneut ausführen oder ihn mit <em>echo &#8220;!!&#8221; > script.sh</em> in eine Datei schreiben.<br />
Nach einem Kopierbefehl wechselt man mit <em>cd !$</em> in das Verzeichnis, wohin die Datei(en) kopiert wurde(n).<br />
Mit <em>kill -9 $$</em> wird die Bash geschlossen ohne dass die Historydatei geschrieben werden kann.</p>
<p><strong>vi-Modus</strong><br />
Die Bash beinhaltet einen vi-Modus, wodurch man vi-Befehle in der Bash nutzen kann. Den Modus startet man mittels</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-o</span> <span style="color: #c20cb9; font-weight: bold;">vi</span></pre></div></div>

<p>Danach kann man mit ESC in den Kommandomodus gelangen und mit hjkl statt Pfeiltasten navigieren. auch dd, D , p , A, 0 und $,&#8230; funktionieren.<br />
Die obige Zeile kann man sich auch in die ~/.bashrc schreiben, damit der vi-Modus standardmäßig aktiviert ist.<br />
Leider funktioniert danach die Tastenkombination Strg+l nicht mehr. Diese kann man jedoch mit einem Binding wieder aktivieren. Dafür schreibt man folgendes in die ~/.bashrc:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Strg+l - clear screen</span>
<span style="color: #7a0874; font-weight: bold;">bind</span> <span style="color: #660033;">-m</span> vi-insert <span style="color: #ff0000;">&quot;\C-l&quot;</span>:clear-screen</pre></div></div>

<p><strong>Geänderte Konfigurationsdatei einlesen ohne neues Terminal aufzumachen</strong><br />
kann man mit folgendem Befehl:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">source</span> ~<span style="color: #000000; font-weight: bold;">/</span>.bashrc</pre></div></div>

<p><strong>Prozesskontrolle</strong><br />
Um ein Programm im Hintergrund zu starten hängt man dem Befehl ein <em>&#038;</em> an.<br />
Hat man dies vergessen, so kann man das Programm mit Strg+z anhalten, wodurch man wieder einen Prompt bekommt. Dann kann man den Prozess mittels <em>bg</em> im Hintergrund weiterlaufen lassen. Um ihn wieder in den Vordergrund zu holen genügt ein <em>fg</em>.<br />
Wenn mehrere Prozesse im Hintergrund laufen, so holt <em>fg</em> den letzten Prozess zurück, der in den Hintergrund geschickt wurde. Möchte man einen anderen Prozess in den Vordergrund holen, so kann man <em>fg</em> die entsprechende Job-ID (diese steht in Eckigen klammern, wenn ein Prozess gestoppt oder in den Hintergrund verschoben wird) als Argument mitgeben. Alternativ kann man als Paramter für <em>fg</em> ein <em>%</em> gefolgt von einigen Anfangsbuchstaben des Befehls mitgeben.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">fg</span> <span style="color: #000000; font-weight: bold;">%</span>v</pre></div></div>

<p>holt zum Beispiel einen vim-Prozess aus dem Hintergrund (wenn keine anderen Prozesse mit v im Hintergrund sind).</p>
<p>Um zwei Befehle nacheinander auszuführen, kann man sie mit einem Semikolon trennen. Möchte man, dass der 2. Befehl nur ausgeführt wird, wenn der erste Befehl erfolgreich war, so trennt man sie mit <em>&#038;&#038;</em>. dies ist praktisch beim compilieren von Programmen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>So wird <em>make</em> nur ausgeführt, wenn das configurescript ohne Fehler durchgelaufen ist. <em>make install</em> wird nur ausgeführt, wenn <em>make</em> auch wirklich compiliert hat.</p>
]]></content:encoded>
			<wfw:commentRss>http://zinformatik.de/linux/tipps-und-tricks-fur-die-bash/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
