<?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>Bash &#8211; Linux und Ich</title>
	<atom:link href="https://linuxundich.de/tag/bash/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxundich.de</link>
	<description>Blog über Ubuntu, Linux, Android und IT</description>
	<lastBuildDate>Thu, 20 Nov 2025 08:17:50 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://linuxundich.de/wp-content/uploads/2025/04/cropped-lui-app-512-32x32.png</url>
	<title>Bash &#8211; Linux und Ich</title>
	<link>https://linuxundich.de</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Linktipp: Bash Guide bringt euch die Bash-Shell näher</title>
		<link>https://linuxundich.de/gnu-linux/linktipp-bash-guide-bringt-euch-die-bash-shell-naeher/</link>
					<comments>https://linuxundich.de/gnu-linux/linktipp-bash-guide-bringt-euch-die-bash-shell-naeher/#comments</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Mon, 04 Aug 2014 17:25:13 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Terminal]]></category>
		<guid isPermaLink="false">http://linuxundich.de/?p=26005</guid>

					<description><![CDATA[Ich lese und höre immer wieder den Ärger von Linux-Einsteigern über das Terminal. Viele fühlen sich in DOS-Zeiten zurückgesetzt, fühlen sich von Befehlen überfordert, meinen dass Linux dadurch zu kompliziert sei. Wer jedoch schon länger auf ein Linux setzt, der weiß die Möglichkeiten des Terminals allerdings zu schätzen. Vieles lässt sich im Terminal einfach deutlich effektiver [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Ich lese und höre immer wieder den Ärger von Linux-Einsteigern über das Terminal. Viele fühlen sich in DOS-Zeiten zurückgesetzt, fühlen sich von Befehlen überfordert, meinen dass Linux dadurch zu kompliziert sei. Wer jedoch schon länger auf ein Linux setzt, der weiß die Möglichkeiten des Terminals allerdings zu schätzen. Vieles lässt sich im Terminal einfach deutlich effektiver erledigen als mit einer GUI. Nichts desto trotz gibt bei den ersten Schritten im Terminal einige Hürden zu erklimmen, vielleicht helfen dem einen oder anderem ja meine <a title="Tipps und Tricks für den Alltag mit Linux (II)" href="http://linuxundich.de/gnu-linux/tipps-und-tricks-fur-den-alltag-mit-linux-ii/">Einsteiger-Tipps und -Tricks für das Linux-Terminal</a>, die ich ich mitsamt einer Reihe von anderen <a href="http://linuxundich.de/?s=%22Tipps+und+Tricks+f%C3%BCr+den+Alltag+mit+Linux%22">Tipps und Tricks für den Alltag mit Linux</a> vor über 6 Jahren ins Blog gehackt habe.</p>
<p>Etwas aktueller und umfangreicher könnte in Zukunft der <a href="http://guide.bash.academy/" target="_blank" rel="noopener">The Bash Guide</a> werden. Noch ist die unter der CC-BY-SA lizenzierte und über <a href="https://github.com/lhunath/bash.academy" target="_blank" rel="noopener">GitHub</a> koordinierte Bash-Dokumentation lediglich auf Englisch und auch bei weitem noch nicht vollständig, doch die ersten zwei Kapitel machen schon einmal einen sehr guten Eindruck. Weitere neun Kapitel von Shell-Variablen, über das Bash-Prompt, bis hin zu externen Bash-Tools stehen bereits auf der To-Do-Liste. Wenn ihr euch in den nächsten Monaten ein wenig tiefer in die Funktionen der Bash einarbeiten wollt, dann solltest ihr daher dem Bash Guide noch einmal einen Besuch abstatten, eventuell ist die Doku bis dahin ein wenig umfangreicher geworden.</p>

<a href="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1.png"><img fetchpriority="high" decoding="async" width="640" height="448" src="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-640x448.png" class="attachment-medium size-medium" alt="" srcset="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-640x448.png 640w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-600x420.png 600w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-681x477.png 681w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-250x175.png 250w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-550x385.png 550w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-800x560.png 800w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-257x180.png 257w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-429x300.png 429w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1-714x500.png 714w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide1.png 1080w" sizes="(max-width: 640px) 100vw, 640px"></a>
<a href="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2.png"><img decoding="async" width="640" height="448" src="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-640x448.png" class="attachment-medium size-medium" alt="" srcset="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-640x448.png 640w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-600x420.png 600w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-681x477.png 681w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-250x175.png 250w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-550x385.png 550w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-800x560.png 800w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-257x180.png 257w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-429x300.png 429w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2-714x500.png 714w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide2.png 1080w" sizes="(max-width: 640px) 100vw, 640px"></a>
<a href="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3.png"><img decoding="async" width="640" height="448" src="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-640x448.png" class="attachment-medium size-medium" alt="" srcset="https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-640x448.png 640w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-600x420.png 600w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-681x477.png 681w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-250x175.png 250w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-550x385.png 550w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-800x560.png 800w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-257x180.png 257w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-429x300.png 429w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3-714x500.png 714w, https://linuxundich.de/wp-content/uploads/2014/08/bash-guide3.png 1080w" sizes="(max-width: 640px) 100vw, 640px"></a>

]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/gnu-linux/linktipp-bash-guide-bringt-euch-die-bash-shell-naeher/feed/</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
			</item>
		<item>
		<title>Die Suche in der Bash History mit der BASH History Suggest Box aufbohren</title>
		<link>https://linuxundich.de/gnu-linux/bash-history-suggest-box/</link>
					<comments>https://linuxundich.de/gnu-linux/bash-history-suggest-box/#comments</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Mon, 31 Mar 2014 13:58:13 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Tipps]]></category>
		<guid isPermaLink="false">http://linuxundich.de/?p=23356</guid>

					<description><![CDATA[Wer viel im Terminal arbeitet, möchte oft Befehle erneut ausführen oder leicht abwandeln. Die Bash-History erlaubt das einfache Durchscrollen früherer Kommandos mit den Tasten Hoch/Runter. Mit Links/Rechts lässt sich der Cursor im aktuellen Befehl bewegen, um Änderungen vorzunehmen. Noch schneller geht’s mit der eingebauten Suchfunktion: Strg+R startet eine Rückwärtssuche in der History, während ein erneutes [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Wer viel im Terminal arbeitet, möchte oft Befehle erneut ausführen oder leicht abwandeln. Die Bash-History erlaubt das einfache Durchscrollen früherer Kommandos mit den Tasten <kbd>Hoch</kbd>/<kbd>Runter</kbd>. Mit <kbd>Links</kbd>/<kbd>Rechts</kbd> lässt sich der Cursor im aktuellen Befehl bewegen, um Änderungen vorzunehmen. Noch schneller geht’s mit der eingebauten Suchfunktion: <kbd>Strg</kbd>+<kbd>R</kbd> startet eine Rückwärtssuche in der History, während ein erneutes Drücken von <kbd>Strg</kbd>+<kbd>R</kbd> zum nächsten Treffer springt. Die Einträge landen in der Datei <code>~/.bash_history</code> und lassen sich auch manuell anzeigen:</p>



<pre class="wp-block-code"><code>$ <strong>history</strong>
   1  locate terminal | grep svg
   2  xdg-mime query default inode/directory
   3  joe /etc/gnome/defaults.list
   4  ...</code></pre>



<p>Die Bash-History ist praktisch, aber es geht noch komfortabler: Die <a href="http://www.zsh.org/" target="_blank" rel="noopener">Z-Shell</a> (zsh, <a href="http://de.wikipedia.org/wiki/Zsh" target="_blank" rel="noopener">Wikipedia</a>) bietet beispielsweise eine deutlich leistungsfähigere Verlaufssuche. <a href="http://zinformatik.de/tipps-tricks/interessante-programme/die-z-shell-zsh-eine-machtige-alternative-zur-bash" target="_blank" rel="noopener">Marcel von zInformatik</a> oder <a href="http://kushellig.de/shell-bash-vs-zsh/" target="_blank" rel="noopener">Kushellig</a> haben ihre Vorteile gut beschrieben. Da die meisten jedoch mit der Bash unterwegs sind, lohnt ein Blick auf die <a href="https://github.com/dvorka/hstr" target="_blank" rel="noopener">BASH History Suggest Box</a>.</p>



<pre class="wp-block-code"><code>### BASH History Suggest Box unter Ubuntu installieren
$ <strong>sudo add-apt-repository ppa:ultradvorka/ppa</strong>
$ <strong>sudo apt-get update</strong>
$ <strong>sudo apt-get install hh</strong></code></pre>



<pre class="wp-block-code"><code># BASH History Suggest Box unter Arch Linux installieren
$ <strong>pacaur -S hh</strong></code></pre>



<p>Die Installation ist schnell erledigt. Für Ubuntu stellt der Entwickler ein eigenes <a href="https://launchpad.net/~ultradvorka/+archive/ppa/" target="_blank" rel="noopener">PPA</a> bereit. Arch-Nutzer greifen wie gewohnt zum <a href="https://aur.archlinux.org/packages/hh/" target="_blank" rel="noopener">AUR</a>. Für andere Distributionen wie Debian oder Linux Mint gibt es Hinweise auf der verlinkten <a href="https://github.com/dvorka/hstr" target="_blank" rel="noopener">Projektseite auf GitHub</a>. Nach der Installation startet das Tool mit dem Befehl <em>hh</em>. Sinnvoller ist es jedoch, die Integration direkt in der Bash zu verankern:</p>



<pre class="wp-block-code"><code>$ <strong>hh --show-configuration &gt;&gt; ~/.bashrc</strong></code></pre>



<p>Dieser Befehl ergänzt die <em>~/.bashrc</em> um die Konfiguration der Suggest Box. Danach ersetzt <kbd>Strg</kbd>+<kbd>R</kbd> die klassische Verlaufssuche durch die neue Oberfläche. Im Gegensatz zur normalen Bash-History zeigt die Suggest Box eine Liste aller letzten Befehle auf einmal an.</p>



<div><a href="https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch1.webp" class="td-modal-image"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="926" height="726" src="https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch1.webp" alt="Die BASH History Suggest Box zeigt alle Befehle der Bash-History in einer GUI an." class="wp-image-44400" srcset="https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch1.webp 926w, https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch1-640x502.webp 640w, https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch1-536x420.webp 536w, https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch1-511x400.webp 511w, https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch1-681x534.webp 681w" sizes="auto, (max-width: 926px) 100vw, 926px"><figcaption class="wp-element-caption">Die BASH History Suggest Box zeigt alle Befehle der Bash-History in einer GUI an.</figcaption></figure></a></div>



<div><a href="https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch2.webp" class="td-modal-image"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="926" height="726" src="https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch2.webp" alt="Mit der BASH History Suggest Box lässt sich die Bash-History deutlich einfacher durchsuchen." class="wp-image-44399" srcset="https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch2.webp 926w, https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch2-640x502.webp 640w, https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch2-536x420.webp 536w, https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch2-511x400.webp 511w, https://linuxundich.de/wp-content/uploads/2014/03/hstr-arch2-681x534.webp 681w" sizes="auto, (max-width: 926px) 100vw, 926px"><figcaption class="wp-element-caption">Mit der BASH History Suggest Box lässt sich die Bash-History deutlich einfacher durchsuchen.</figcaption></figure></a></div>



<p>In der Übersicht navigiert ihr mit <kbd>Hoch</kbd>/<kbd>Runter</kbd> durch die Liste. Mit <kbd>Links</kbd>/<kbd>Rechts</kbd> oder <kbd>Tabulator</kbd> wird der markierte Eintrag übernommen und kann direkt bearbeitet werden. Beim Tippen filtert die Suggest Box die Liste dynamisch. Auch diese lässt sich dann weiter durchblättern. Wer einzelne Befehle dauerhaft aus der History entfernen möchte, drückt einfach <kbd>Entf</kbd>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/gnu-linux/bash-history-suggest-box/feed/</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>2048 als Bash-Script im Terminal spielen</title>
		<link>https://linuxundich.de/gnu-linux/2048-als-bash-script-im-terminal-spielen/</link>
					<comments>https://linuxundich.de/gnu-linux/2048-als-bash-script-im-terminal-spielen/#comments</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Mon, 24 Mar 2014 14:21:50 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[2048]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Spiele]]></category>
		<guid isPermaLink="false">http://linuxundich.de/?p=23152</guid>

					<description><![CDATA[Wie Chef, ich arbeite nicht genug? Bin immer abgelenkt? Mache alles, außer konzentriert ab meiner Arbeit zu sitzen? Ich hab hier doch nur ein paar Terminalfenster offen und administriere unserer Server&#8230; Wer von 2048 als Browser-Spiel oder auf dem Handy nicht genug bekommen kann, der kann es jetzt 2048 auch als Bash-Script im Terminal spielen [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Wie Chef, ich arbeite nicht genug? Bin immer abgelenkt? Mache alles, außer konzentriert ab meiner Arbeit zu sitzen? Ich hab hier doch nur ein paar Terminalfenster offen und administriere unserer Server&#8230; Wer von <a href="http://gabrielecirulli.github.io/2048/" target="_blank" rel="noopener">2048 als Browser-Spiel</a> oder auf dem <a href="https://play.google.com/store/apps/details?id=com.digiplex.game" target="_blank" rel="noopener">Handy</a> nicht genug bekommen kann, der kann es jetzt <a href="https://github.com/mydzor/bash2048" target="_blank" rel="noopener">2048 auch als Bash-Script</a> im Terminal spielen <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;"></p>
<p><figure id="attachment_23153" aria-describedby="caption-attachment-23153" style="width: 475px" class="wp-caption aligncenter"><a href="http://linuxundich.de/wp-content/uploads/2014/03/2048-bash-terminal.png"><img loading="lazy" decoding="async" class="td-modal-image size-medium wp-image-23153" src="http://linuxundich.de/wp-content/uploads/2014/03/2048-bash-terminal-475x274.png" alt="2048 als Bash-Script." width="475" height="274"></a><figcaption id="caption-attachment-23153" class="wp-caption-text">2048 als Bash-Script.</figcaption></figure></p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/gnu-linux/2048-als-bash-script-im-terminal-spielen/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Bash-Completion auch mit sudo-Befehlen</title>
		<link>https://linuxundich.de/gnu-linux/bash-completion-auch-mit-sudo-befehlen/</link>
					<comments>https://linuxundich.de/gnu-linux/bash-completion-auch-mit-sudo-befehlen/#comments</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Sun, 28 Mar 2010 22:05:47 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Karmic]]></category>
		<category><![CDATA[Lucid]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">http://linuxundich.de/de/?p=6635</guid>

					<description><![CDATA[Die automatische Vervollständigung von Befehlen und Datei-/Ordnernamen (aka bash-completion) über die Tabulator-Taste ist eine tolle Sache. Zum einen &#8222;tippt&#8220; es sich so schneller und zum anderen reduziert man deutlich die Gefahr von Vertippern. Allerdings funktioniert die Bash-Completion nicht mehr sobald man Root-Rechte für einen Befehl braucht. Stellt man einem Befehl ein sudo voran, dann bewirkt [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Die automatische Vervollständigung von Befehlen und Datei-/Ordnernamen (aka bash-completion) über die Tabulator-Taste ist eine tolle Sache. Zum einen &#8222;tippt&#8220; es sich so schneller und zum anderen reduziert man deutlich die Gefahr von Vertippern. Allerdings funktioniert die Bash-Completion nicht mehr sobald man Root-Rechte für einen Befehl braucht. Stellt man einem Befehl ein <em>sudo</em> voran, dann bewirkt die Tab-Taste rein gar nichts mehr.</p>
<p><span id="more-6635"></span></p>
<p>Ihr könnt Bash-Completion auf jedoch auch unter Ubuntu für sudo aktivieren (wie es mit anderen Distributionen aussieht habe ich jetzt nicht getestet, wichtig ist dass die Bash als Shell verwendet wird), öffnet dazu die <code>~/.bashrc</code> in einen Editor&#8230;</p>
<pre>$ gedit ~/.bashrc</pre>
<p>&#8230;und fügt am Ende die Zeilen&#8230;</p>
<pre lang="bash">if [ "$PS1" ]; then
    complete -cf sudo
fi</pre>
<p>&#8230;ein. Speichert die Änderung ab, schließt das Terminal-Fenster und startet es danach neu. Nun sollte die Bash-Completion auch mit &#8222;sudo-Befehlen&#8220; klappen&#8230; Was ich mich jedoch frage, hat das negative Auswirkungen? Oder warum ist das bei Ubuntu noch von Haus aus aktiviert? (Via <a href="http://wiki.archlinux.org/index.php/Sudo" target="_blank" rel="noopener">wiki.archlinux.org</a>)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/gnu-linux/bash-completion-auch-mit-sudo-befehlen/feed/</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>Über die Verwendung von ./ in Shell-Befehlen</title>
		<link>https://linuxundich.de/gnu-linux/uber-die-verwendung-von-in-shell-befehlen/</link>
					<comments>https://linuxundich.de/gnu-linux/uber-die-verwendung-von-in-shell-befehlen/#comments</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Wed, 03 Feb 2010 15:30:29 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">http://linuxundich.de/de/?p=5716</guid>

					<description><![CDATA[Die Zeichenkombination ./ – also ein Punkt gefolgt von einem Schrägstrich (auch bekannt als Slash) – wird häufig vor Linux-Befehlen verwendet. Besonders Linux-Einsteiger stoßen auf diese Kombination, wenn es darum geht, ein Programm oder ein Skript auszuführen, das im aktuellen Verzeichnis einer Shell liegt. Was verbirgt sich hinter diesem scheinbar kryptischen Kommando, und muss man [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Die Zeichenkombination <code>./</code> – also ein Punkt gefolgt von einem Schrägstrich (auch bekannt als Slash) – wird häufig vor Linux-Befehlen verwendet. Besonders Linux-Einsteiger stoßen auf diese Kombination, wenn es darum geht, ein Programm oder ein Skript auszuführen, das im aktuellen Verzeichnis einer Shell liegt. Was verbirgt sich hinter diesem scheinbar kryptischen Kommando, und muss man es immer eingeben? Ich versuche, den Dschungel ein wenig zu lüften.</p>



<span id="more-5716"></span>



<p>Bevor ich zum <code>./</code> komme, muss ich ein wenig ausholen und ein paar Grundlagen in Bezug auf die Linux-Shell und die Umgebungsvariable <code>$PATH</code> erklären. Eine Shell ist ein Programm, das eine textbasierte Benutzerschnittstelle bereitstellt, in die der Benutzer Befehle eingeben kann, die dann von der Shell ausgeführt werden.</p>



<p>Bei der Ausführung eines Befehls in einem Linux-System wird entweder ein in der Shell fest eingebautes Kommando ausgeführt oder ein ausführbares Programm oder Skript, das sich irgendwo auf der Festplatte befindet. Zu den eingebauten Befehlen gehören beispielsweise <code>cd</code>, <code>echo</code>, <code>kill</code> oder <code>alias</code>. Diese Befehle sind fest in der Shell integriert, sodass beim Aufruf dieser Befehle kein externes Programm ausgeführt wird. Im Gegensatz dazu stehen ausführbare Programme wie <code>mv</code>, <code>less</code>, <code>gedit</code> oder <code>firefox</code>, deren ausführbare Dateien oft im Verzeichnis <code>/usr/bin</code> liegen.</p>



<p>Gibt man nun einen Befehl in eine Shell ein, prüft die Shell zunächst, ob dieser Befehl eingebaut ist. Erkennt die Shell einen externen Befehl, durchsucht sie den Pfad (über die Variable <code>$PATH</code>) nach einer ausführbaren Datei mit demselben Namen und führt diese aus, wenn die Suche erfolgreich war. Über&#8230;</p>



<pre class="wp-block-code"><code>$ <strong>echo $PATH</strong>
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</code></pre>



<p>&#8230;könnt ihr euch den aktuellen Suchpfad anzeigen lassen. In jedem dieser Verzeichnisse sucht die Shell nach ausführbaren Dateien. Die Reihenfolge der Einträge ist dabei von Bedeutung. Wird nach <code>foo</code> gesucht und im Verzeichnis <code>/usr/local/bin</code> das Skript gefunden, dann wird <code>/usr/local/bin/foo</code> ausgeführt, auch wenn es in <code>/usr/bin</code> noch eine Datei namens <code>foo</code> gibt. Diesen Punkt sollte man nicht aus dem Gedächtnis verlieren.</p>



<h2 class="wp-block-heading">Skripte in einem Verzeichnis ausführen</h2>



<p>Nun kann ich den Bogen zum <code>./</code> wieder schließen. Angenommen, ihr wollt ein Skript oder ein Programm ausführen. Als Beispiel nehme ich ein Skript namens <code>beispiel.sh</code> im Verzeichnis <code>~/tmp</code> in eurem Home-Verzeichnis. Öffnet dazu ein Terminal, geht in das Verzeichnis, in dem sich das Skript befindet, und versucht, es aufzurufen&#8230;</p>



<pre class="wp-block-code"><code>otto@computer:~$ <strong>cd tmp</strong>
otto@computer:~/tmp$ <strong>beispiel.sh</strong>
beispiel.sh: command not found
otto@computer:~/tmp$ <strong>ls -al beispiel.sh</strong>
-rwxr-xr-x 1 otto otto 61 2010-02-03 15:28 beispiel.sh</code></pre>



<p>Wie ihr seht, wird das Skript nicht gefunden, obwohl ich mich im richtigen Verzeichnis befinde, das Skript da ist und die Berechtigungen stimmen. Warum klappt das also nicht? Die Lösung liegt im vorhin beschriebenen <code>$PATH</code>. Zur Erinnerung gebe ich ihn nochmal aus&#8230;</p>



<pre class="wp-block-code"><code>$ <strong>echo $PATH</strong>
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</code></pre>



<p>Die Shell erkennt schnell, dass <code>beispiel.sh</code> kein eingebauter Shell-Befehl ist, daher durchsucht sie den Pfad. Auch hier wird sie jedoch nicht fündig. In den Verzeichnissen, die im <code>$PATH</code> enthalten sind, wird keine Datei namens <code>beispiel.sh</code> gefunden, weshalb die Shell &#8222;command not found&#8220; ausgibt. Was ist also los? Der Grund ist einfach: Der <code>$PATH</code> enthält nie das aktuelle Verzeichnis, in dem man sich befindet. Um also mein Skript <code>beispiel.sh</code> auszuführen, müsste ich den vollständigen Pfad angeben&#8230;</p>



<pre class="wp-block-code"><code>otto@computer:~$ <strong>cd tmp</strong>
otto@computer:~/tmp$ <strong>/home/otto/tmp/beispiel.sh</strong>
Dies ist nur ein Beispiel für ein Skript.
otto@computer:~/tmp$ <strong>$HOME/tmp/beispiel.sh</strong>
Dies ist nur ein Beispiel für ein Skript.
otto@computer:~/tmp$ <strong>~/tmp/beispiel.sh</strong>
Dies ist nur ein Beispiel für ein Skript.</code></pre>



<p>Wie ihr seht, gibt es zahlreiche Varianten, den Pfad zur Datei anzugeben. Das Tippen dabei ist jedoch aufwändig, weshalb es Abkürzungen gibt, die einem die Arbeit erleichtern. Die kürzeste Möglichkeit, einen Pfad zum aktuellen Verzeichnis anzugeben, ist der Punkt. Der Punkt steht für das aktuelle Verzeichnis, sodass zum Ausführen von <code>beispiel.sh</code> einfach <code>./</code> als Pfadangabe ausreicht&#8230;</p>



<pre class="wp-block-code"><code>otto@computer:~$ <strong>cd tmp</strong>
otto@computer:~/tmp$ <strong>./beispiel.sh</strong>
Dies ist nur ein Beispiel für ein Skript.</code></pre>



<h2 class="wp-block-heading">Warum ist das aktuelle Verzeichnis nicht im Pfad?</h2>



<p>Ihr stellt euch nun möglicherweise die Frage, warum das aktuelle Verzeichnis nicht im Pfad enthalten ist. Man würde sich doch einiges an Tipparbeit und vor allem Verwirrung ersparen. Der Grund ist einfach: Sicherheit! Stellt euch vor, jemand gibt euch ein paar Daten, die ihr via Shell irgendwohin verschieben sollt. In den Daten befindet sich jedoch eine unscheinbare Datei namens <code>mv</code> mit folgendem Inhalt&#8230;</p>



<pre class="wp-block-preformatted">#!/bin/bash<br>rm -rf $HOME</pre>



<p>Geht ihr nun in das Verzeichnis und gebt den Befehl&#8230;</p>



<pre class="wp-block-code"><code>otto@computer:~$ <strong>cd ~/daten</strong>
otto@computer:~/daten$ <strong>mv beispiel.* /wohin/auch/immer</strong></code></pre>



<p>&#8230;ein, dann würde – solange das aktuelle Verzeichnis vor <code>/usr/bin</code> im <code>$PATH</code> steht – das im Verzeichnis enthaltene <code>mv</code>-Skript ausgeführt werden und nicht das <code>/usr/bin/mv</code>. Das Ergebnis? Euer gesamtes Home-Verzeichnis würde kommentarlos und auf einen Schlag gelöscht werden. Wäre das aktuelle Verzeichnis im <code>$PATH</code> vor den Systempfaden wie <code>/usr/bin</code> und Co. eingetragen, könnte man ohne Weiteres schadhafter Software oder sogar Schadcode unterjubeln.</p>



<h2 class="wp-block-heading">Kann ich das aktuelle Verzeichnis wirklich nicht in den $PATH aufnehmen?</h2>



<p>Falls euch der Ausschluss des aktuellen Verzeichnisses wirklich stört, ist es problemlos möglich, das aktuelle Verzeichnis in den <code>$PATH</code> aufzunehmen. Ob es sinnvoll ist, darüber möchte ich aufgrund des oben genannten Negativbeispiels nicht weiter spekulieren. Den Pfad könnt ihr über einen Eintrag in der Datei <code>~/.profile</code> in eurem Home-Verzeichnis anpassen. Fügt ihr am Ende der Datei beispielsweise diesen Eintrag hinzu&#8230;</p>



<pre class="wp-block-code"><code>PATH="$PATH:."</code></pre>



<p>&#8230;und startet eine neue Shell, sieht euer <code>$PATH</code> schließlich so aus.</p>



<pre class="wp-block-code"><code>$ <strong>echo $PATH</strong>
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:.</code></pre>



<p>Am Ende steht der <code>.</code> für das aktuelle Verzeichnis. Mit&#8230;</p>



<pre class="wp-block-code"><code>otto@computer:~$ <strong>cd tmp</strong>
otto@computer:~/tmp$ <strong>beispiel.sh</strong>
Dies ist nur ein Beispiel für ein Skript.</code></pre>



<p>&#8230;könnt ihr dann das Beispiel-Skript ausführen. Ihr seht, kein <code>./</code> mehr nötig. Steht der Punkt am Ende des Pfades, so besteht auch keine Gefahr, dass der oben beschriebene Trick funktioniert, aber es gibt einen sicheren Weg, eigene Skripte ohne Pfadangaben auszuführen.</p>



<h2 class="wp-block-heading">Die Verzeichnisse ~/bin und /usr/local/bin</h2>



<p>Ihr könnt in eurem Home-Verzeichnis einen Ordner namens <code>~/bin</code> anlegen. Beim Starten einer Shell wird automatisch geprüft, ob dieser Ordner existiert. Wird er gefunden, wird er automatisch in den <code>$PATH</code> aufgenommen. Dies funktioniert über den folgenden Abschnitt&#8230;</p>



<pre class="wp-block-preformatted"># set PATH so it includes user's private bin if it exists<br>if [ -d "$HOME/bin" ] ; then<br>    PATH="$HOME/bin:$PATH"<br>fi</pre>



<p>&#8230;in der Datei <code>~/.profile</code>, die beim Starten einer Shell ausgeführt wird. Wenn ihr euch den <code>$PATH</code> nun anseht, wird er folgendermaßen aussehen&#8230;</p>



<pre class="wp-block-code"><code>$ <strong>echo $PATH</strong>
/home/otto/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</code></pre>



<p>Der Ordner <code>/home/otto/bin</code> steht nun an erster Stelle, und Skripte, die ihr dort ablegt, werden automatisch gefunden. Wenn ihr wollt, dass euer Skript oder kleines Programm von allen Benutzern des Systems verwendet wird, solltet ihr es nach <code>/usr/local/bin</code> kopieren oder dort verlinken. Dieses Verzeichnis befindet sich ebenfalls immer im <code>$PATH</code>, und die Paketverwaltung legt dort keine Dateien ab. Es ist also euer persönliches Verzeichnis.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/gnu-linux/uber-die-verwendung-von-in-shell-befehlen/feed/</wfw:commentRss>
			<slash:comments>27</slash:comments>
		
		
			</item>
		<item>
		<title>Terminal mit flotten Sprüchen wie bei Linux Mint</title>
		<link>https://linuxundich.de/gnu-linux/terminal-mit-flotten-spruchen-wie-bei-linux-mint/</link>
					<comments>https://linuxundich.de/gnu-linux/terminal-mit-flotten-spruchen-wie-bei-linux-mint/#comments</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Sun, 14 Jun 2009 16:54:56 +0000</pubDate>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Cowsay]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux Mint]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">http://linuxundich.de/de/?p=2338</guid>

					<description><![CDATA[Wer bei Linux Mint &#8211; einem recht populären Ableger von Ubuntu &#8211; ein Terminal öffnet, der bekommt einen flotten Spruch präsentiert. Dies lässt sich auch recht einfach bei Debian oder Ubuntu selber einrichten. Als erstes müssen die dafür nötigen Pakete installiert werden. Dies sind Cowsay und Fortune. Cowsay gibt einen beliebigen Text mit einer netten ASCII-Grafik [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Wer bei <a href="http://de.wikipedia.org/wiki/Linux_Mint" target="_blank" rel="noopener">Linux Mint</a> &#8211; einem recht populären Ableger von Ubuntu &#8211; ein Terminal öffnet, der bekommt einen flotten Spruch präsentiert. Dies lässt sich auch recht einfach bei Debian oder Ubuntu selber einrichten. Als erstes müssen die dafür nötigen Pakete installiert werden. Dies sind <a href="http://en.wikipedia.org/wiki/Cowsay" target="_blank" rel="noopener">Cowsay</a> und <a href="http://en.wikipedia.org/wiki/Fortune_(Unix)" target="_blank" rel="noopener">Fortune</a>. Cowsay gibt einen beliebigen Text mit einer netten ASCII-Grafik aus und hinter Fortune steckt eine Datenbank mit tausenden von Zitaten, Sprüchen und Witzen. Über</p>
<pre>$ sudo apt-get install cowsay fortunes fortunes-de
</pre>
<p>kann man die wichtigsten Pakete installieren. Damit nun Cowsay mitsamt Fortune beim Start eines Terminalfensters ausgeführt wird, muss man den Aufruf in der Datei <code>~/.bashrc</code> eintragen. Dazu öffnet man die Datei bspw. mittels <code>gedit ~/.bashrc</code> in einen Texteditor und fügt am Ende der Datei die Zeilen ein.</p>
<pre># Gibt mittels Cowsay und Fortunes Sprueche aus
if [ -f /usr/games/fortune -a -d /usr/share/cowsay ]; then
     dir='/usr/share/cowsay/cows/'
     file=`/bin/ls -1 "$dir" | sort --random-sort | head -1`
     cow=$(echo "$file" | sed -e "s/\.cow//")
     /usr/games/fortune quiz wusstensie | /usr/games/cowsay -f $cow
fi
</pre>
<p>&#8230;von nun werden beim Einloggen automatisch Sprüche wie bei Linux Mint ausgegeben. Wer will, dass Cowsay automatisch bei jedem Benutzer des Systems ausgeführt wird, der muss die genannten Zeilen in die Datei <code>/etc/bash.bashrc</code> mit Root-Rechten eintragen. So wird die Änderung an der <code>~/.bashrc</code> des Benutzers überflüssig und jeder Benutzers des Systems kommt in den &#8222;Genuss&#8220; der Sprüche.</p>
<p><figure id="attachment_2341" aria-describedby="caption-attachment-2341" style="width: 475px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2341 size-full" title="cowsayfortunes" src="https://linuxundich.de/wp-content/uploads/2009/06/cowsayfortunes.png" alt="Cowsay mit Fortunes im Terminal" width="475" height="337" srcset="https://linuxundich.de/wp-content/uploads/2009/06/cowsayfortunes.png 475w, https://linuxundich.de/wp-content/uploads/2009/06/cowsayfortunes-250x177.png 250w, https://linuxundich.de/wp-content/uploads/2009/06/cowsayfortunes-254x180.png 254w, https://linuxundich.de/wp-content/uploads/2009/06/cowsayfortunes-423x300.png 423w, https://linuxundich.de/wp-content/uploads/2009/06/cowsayfortunes-210x150.png 210w, https://linuxundich.de/wp-content/uploads/2009/06/cowsayfortunes-400x285.png 400w" sizes="auto, (max-width: 475px) 100vw, 475px"><figcaption id="caption-attachment-2341" class="wp-caption-text">Cowsay mit Fortunes im Terminal</figcaption></figure></p>
<p>Fortune biete eine ganze Reihe von Paketen mit Datenbanken, die noch zusätzlich installiert werden können. Von verschiedenen Sprachen, über beleidigende Ausdrücke bis hin zu SPAM Emails kann man vieles installieren. Eine Übersicht erhält man über&#8230;</p>
<pre>$ apt-cache search fortunes
fortune-mod - Glückskekse
fortunes-min - Datenfile mit »fortune cookies«
[...]
fortunes-de - Deutsche Spruch-Dateien für fortune
fortunes-debian-hints - Debian-Tipps für Fortune
[...]
fortunes-off - Datendateien mit anstößigen Fortune-Cookies
[...]
</pre>
<p>Eine Übersicht der möglichen Begriffe erhält man anschließend über</p>
<pre>$ fortune -f
100,00% de
     0,11% bahnhof
     1,63% sprueche
     0,58% sprichworte
     0,22% sicherheitshinweise
     0,25% quiz
     0,85% wusstensie
[...]
</pre>
<p>so dass man den Eintrag in der .bashrc noch an seine eigenen Wünsche anpassen kann. Die Zeile</p>
<pre>[...]
     fortune quiz wusstensie | cowsay -f $cow
[...]
</pre>
<p>gibt beispielsweise eine Reihe von (Scherz-)Fragen und Witzen aus.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/gnu-linux/terminal-mit-flotten-spruchen-wie-bei-linux-mint/feed/</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
	</channel>
</rss>
