<?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>[pimp my shell]</title>
	<atom:link href="http://blog.pimpmyshell.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.pimpmyshell.de</link>
	<description>leben im text-modus</description>
	<lastBuildDate>Sun, 10 Jul 2011 09:39:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>lsr &#8211; Das fehlende Listing</title>
		<link>http://blog.pimpmyshell.de/2010/08/26/lsr-das-fehlende-listing/</link>
		<comments>http://blog.pimpmyshell.de/2010/08/26/lsr-das-fehlende-listing/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 16:59:49 +0000</pubDate>
		<dc:creator>kbo</dc:creator>
				<category><![CDATA[tutorials]]></category>
		<category><![CDATA[user-skripte]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/?p=147</guid>
		<description><![CDATA[Ob Prozesse, offene Ports, Benutzer, Netzwerkverbindungen, Hardware oder Dateien: auf die richtige Auflistung kommt es immer an. Doch häufig werden die Ausgaben von ls recht lang. Da hilft nur der richtige Filter. Für Dateinamen oder manche Eigenschaften bieten die globs der verbreiteten shells komfortable Möglichkeiten. Die Liste der Verzeichnisse im aktuellen Pfad zum Beispiel liefert [...]]]></description>
			<content:encoded><![CDATA[<p>Ob Prozesse, offene Ports, Benutzer, Netzwerkverbindungen, Hardware oder Dateien: auf die richtige Auflistung kommt es immer an. Doch häufig werden die Ausgaben von <strong>ls</strong> recht lang. Da hilft nur der richtige Filter.</p>
<p>Für Dateinamen oder manche Eigenschaften bieten die globs der verbreiteten shells komfortable Möglichkeiten. Die Liste der Verzeichnisse im aktuellen Pfad zum Beispiel liefert die Ausgabe von</p>
<blockquote><p>ls -d */</p></blockquote>
<p>Doch schon schnell gelangt man an die Grenzen der globs und greift zum nächsten Werkzeug. Das ist in den meisten Fällen <strong>find</strong>. Damit lassen sich zum Beispiel Dateien nach den drei Zeitstempeln (creation, modification, access) filtern.</p>
<blockquote><p>find . -maxdepth 1 -ctime +30</p></blockquote>
<p>liefert die Liste der mindestens 30 Tage alten Dateien des aktuellen Verzeichnesses. Aber ein Werkzeug, um Dateien nach den Rechten des aktuellen Benutzers auszusuchen habe ich nicht gefunden. Im Kopf begann ich schon den find-Aufruf zu überlegen, als ich mich an die <em>glob qualifiers</em> der <strong>zsh</strong> erinnerte. Glob qualifiers sind im Prinzip weitere Optionen, die bei der Generierung von Dateinamen ausgewertet werden. Zu den einfachen Vertretern dieser Gattung gehört das Zeichen @, das die Auswahl auf symbolische Links einschränkt:</p>
<blockquote><p>ls -d *(@)</p></blockquote>
<p>Aber auch Besitzer und Berechtigungen einer Datei lassen sich ausdrücken. Die benutzten Ausdrücke waren jeder für sich relativ einfach:</p>
<ul>
<li>world readable: *(R)</li>
<li>lesbar durch User $LOGNAME: *(ru:$LOGNAME:)</li>
<li>lesbar durch Gruppe $gruppe: *(Ag:$gruppe:)</li>
</ul>
<p>Die zusammen benutzten glob qualifiers schränken die Auswahl immer weiter ein. Um also zwei Bedingungen mit einem oder zu verknüpfen schreibt man einfach zwei globs hintereinander. Das bedeutet aber, dass eine Datei, auf die beide globs zutreffen auch zwei Male im Gesamtausdruck steht. Der einfachste Aufruf wäre also absolut unübersichtlich:</p>
<blockquote><p>ls -d *(R) *(ru:$LOGNAME:) $(for g in $(groups); do print -r &#8220;*(Ag:$g:)&#8221;; done)</p></blockquote>
<p>Also schrieb ich einen weiteren Ausdruck dazu. Zuerst füllte ich ein Array mit sämtlichen Dateien aller globs und benutzte dann die <em>parameter expansion</em>, um die Liste zu kürzen:</p>
<blockquote><p>files=( *(R) *(ru:$LOGNAME:) $(for g in $(groups); do print -r &#8220;*(Ag:$g:)&#8221;; done) )<br />
ls -d ${(u)files}</p></blockquote>
<p>Zuletzt galt es nur noch die unzutreffenden globs zu entfernen. Das normale Verhalten der zsh ist, bei jedem glob, der auf keine Datei zutrifft, eine entsprechende Meldung auszugeben. Das ist bei dieser Benutzung äußerst störend, wird aber durch einen weiteren glob qualifier deaktiviert. Der Operator <em>N</em> setzt die Option <em>NULL_GLOB</em> für den betroffenen Ausdruck, falls dieser also keine passenden Dateien hat, wird er als leerer String gewertet.</p>
<blockquote><p>files=( *(NR) *(Nru:$LOGNAME:) $(for g in $(groups); do print -r &#8220;*(NAg:$g:)&#8221;; done) )<br />
ls -d ${(u)files}</p></blockquote>
<p>Die fertige Funktion ist vom Aufruf möglichst ähnlich zu <strong>ls</strong> und liegt <a href="http://sprunge.us/QiSJ">hier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2010/08/26/lsr-das-fehlende-listing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wirklich? so einfach?</title>
		<link>http://blog.pimpmyshell.de/2010/06/18/wirklich-so-einfach/</link>
		<comments>http://blog.pimpmyshell.de/2010/06/18/wirklich-so-einfach/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 03:28:09 +0000</pubDate>
		<dc:creator>Gregor</dc:creator>
				<category><![CDATA[programme]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[einzeiler]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[skript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2010/06/18/wirklich-so-einfach/</guid>
		<description><![CDATA[Twittern von der Shell aus &#8211; ganz schmerzlos und simpel..Wenn ich das frueher gewusst haette.. Einfach Curl installieren und einen Einzeiler anlegen(z.B. twitter.sh): curl &#8211;basic &#8211;user username:password &#8211;data status=&#8221;$1&#8243; http://twitter.com/statuses/update.xml Nun kann man nach Veraenderung der Login-Daten das &#8220;Skript&#8221; aufrufen und direkt los-twittern: ./twitter.sh &#8220;Guck mal wie ich twittere..&#8221; Wichtig: Mit diesem Befehl kann man [...]]]></description>
			<content:encoded><![CDATA[<p>Twittern von der Shell aus &#8211; ganz schmerzlos und simpel..Wenn ich das frueher gewusst haette.. </p>
<p>Einfach Curl installieren und einen Einzeiler anlegen(z.B. twitter.sh):</p>
<blockquote><p>
curl &#8211;basic &#8211;user username:password &#8211;data status=&#8221;$1&#8243; http://twitter.com/statuses/update.xml
</p></blockquote>
<p>Nun kann man nach Veraenderung der Login-Daten das &#8220;Skript&#8221; aufrufen und direkt los-twittern:</p>
<blockquote><p>
./twitter.sh &#8220;Guck mal wie ich twittere..&#8221;
</p></blockquote>
<p><span id="more-139"></span><br />
Wichtig: Mit diesem Befehl kann man nur seinen Status veraendern. Moechte man Direktnachrichten ueber twitter versenden ist <a href="http://www.sakana.fr/blog/2007/03/18/scripting-twitter-with-curl/">etwas mehr als nur dieser Einzeiler noetig.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2010/06/18/wirklich-so-einfach/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>fbcmd &#8211; update</title>
		<link>http://blog.pimpmyshell.de/2010/06/17/fbcmd-update/</link>
		<comments>http://blog.pimpmyshell.de/2010/06/17/fbcmd-update/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 00:04:44 +0000</pubDate>
		<dc:creator>Gregor</dc:creator>
				<category><![CDATA[how-tos]]></category>
		<category><![CDATA[user-skripte]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2010/06/17/fbcmd-update/</guid>
		<description><![CDATA[Nur eine kurze (und hoechstwahrscheinlich unelegente) Methode, mittels &#8220;fbmcd&#8221; eine Liste aller Geburtstage der Kontakte in Facebook direkt auf der Konsole zu erhalten: fbcmd allinfo &#8220;=all&#8221; > temp_file&#038;&#038;month=`date&#124;awk &#8216;{print $3}&#8217;`&#038;&#038;cat temp_file&#124;grep $month&#124;grep birthday&#038;&#038;rm temp_file Leider wird die Ausgabe nicht aufsteigend nach Datum sortiert, funktioniert bei mir jedoch prima und reicht fuer meine Zwecke vollkommen aus.]]></description>
			<content:encoded><![CDATA[<p>Nur eine kurze (und hoechstwahrscheinlich unelegente) Methode, mittels &#8220;fbmcd&#8221; eine Liste aller Geburtstage der Kontakte in Facebook direkt auf der Konsole zu erhalten:</p>
<blockquote><p>
fbcmd allinfo &#8220;=all&#8221; > temp_file&#038;&#038;month=`date|awk &#8216;{print $3}&#8217;`&#038;&#038;cat temp_file|grep $month|grep birthday&#038;&#038;rm temp_file
</p></blockquote>
<p>Leider wird die Ausgabe nicht aufsteigend nach Datum sortiert, funktioniert bei mir jedoch prima und reicht fuer meine Zwecke vollkommen aus.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2010/06/17/fbcmd-update/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>worklog &#8211; die zeit im griff</title>
		<link>http://blog.pimpmyshell.de/2010/06/04/worklog-die-zeit-im-griff/</link>
		<comments>http://blog.pimpmyshell.de/2010/06/04/worklog-die-zeit-im-griff/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 22:52:50 +0000</pubDate>
		<dc:creator>Gregor</dc:creator>
				<category><![CDATA[programme]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[worklog]]></category>
		<category><![CDATA[Zeiterfassung]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2010/06/04/worklog-die-zeit-im-griff/</guid>
		<description><![CDATA[Bin vor einiger Zeit ueber ein kleines Programm namens worklog gestolpert. Ueber eine Konfigurationsdatei definiert man div. Arbeitsprozesse oder Projekte an denen man arbeitet. In Kombination mit einem frei zu definierenden Buchstaben, laesst sich dann die Zeit, die man fuer eine gewisse Taetigkeit benoetigt, sekundengenau efassen. Es ist ein simples Zeiterfassungssystem, welches jedoch fuer meine [...]]]></description>
			<content:encoded><![CDATA[<p>Bin vor einiger Zeit ueber ein kleines Programm namens <b>worklog</b> gestolpert. Ueber eine Konfigurationsdatei definiert man div. Arbeitsprozesse oder Projekte an denen man arbeitet. In Kombination mit einem frei zu definierenden Buchstaben, laesst sich dann die Zeit, die man fuer eine gewisse Taetigkeit benoetigt, sekundengenau efassen. Es ist ein simples Zeiterfassungssystem, welches jedoch fuer meine Zwecke vollkommen ausreichend und durch das einfache Interface und die transparente Bedienung sehr zu empfehlen ist.<br />
<span id="more-130"></span></p>
<p>&#8230; und der Shellshot:<br />
<a href="http://blog.pimpmyshell.de/uploads/2010/06/worklog-screenshot.jpg"><img src="http://blog.pimpmyshell.de/uploads/2010/06/worklog-screenshot-300x156.jpg" alt="worklog-screenshot" title="worklog-screenshot" width="600" class="alignnone size-medium wp-image-134" /></a></p>
<p>Die dazu passende Konfigurationsdatei:</p>
<blockquote><p>
# Worklog project file<br />
# note that projects appear in Worklog in REVERSE order</p>
<p>G:GSG-Recherche/Home-Office<br />
P:Private-Recherchen<br />
L:Linux-Gefrickel<br />
V:Videos und Serien<br />
K:Kommunikation<br />
E:Email<br />
R:RSS-Feedreader lesen
</p></blockquote>
<p>Worklog ist in den meisten Repos der Hauptdistributionen mit dem Paketmanager seiner Wahl verfuegbar. Natuerlich kann man sich alternativ, die aktuellste Version aus dem Source bauen, welcher ueber die <a href="http://sourceforge.net/projects/worklog/">Projektwebseite</a> verfuegbar ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2010/06/04/worklog-die-zeit-im-griff/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>google-reader &gt;&gt; snownews</title>
		<link>http://blog.pimpmyshell.de/2010/05/30/google-reader-snownews/</link>
		<comments>http://blog.pimpmyshell.de/2010/05/30/google-reader-snownews/#comments</comments>
		<pubDate>Sun, 30 May 2010 21:33:58 +0000</pubDate>
		<dc:creator>Gregor</dc:creator>
				<category><![CDATA[allgemein]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/?p=126</guid>
		<description><![CDATA[Es gibt Bloglines, Netvibes, Google-Reader.. All diese Webbasierten RSS-Reader sind praktisch und ueberall verfuegbar. Will man jedoch in der Konsole einen RSS-Reader einrichten, muesste man die Feedadressen aller abonnierten RSS-Feeds haendisch per Copy and Paste in die Feedliste des Konsolenreaders einpflegen, was je nach Leseverhalten eine heiden Arbeit sein kann. So ist mir aufgefallen, dass [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt Bloglines, Netvibes, Google-Reader.. All diese Webbasierten RSS-Reader sind praktisch und ueberall verfuegbar. Will man jedoch in der Konsole einen RSS-Reader einrichten, muesste man die Feedadressen aller abonnierten RSS-Feeds haendisch per Copy and Paste in die Feedliste des Konsolenreaders einpflegen, was je nach Leseverhalten eine heiden Arbeit sein kann.</p>
<p>So ist mir aufgefallen, dass es eine OPML-Export Funktion bei Google-Reader und eine OPML-Import Funktion bei <b>snownews</b> gibt, welche diese Arbeit erspart.<br />
<span id="more-126"></span><br />
Schritt 1:<br />
Im Google-Reader unter Einstellung/Reader-Einstellung/Import-Export/&#8221;Exportieren Sie Ihre Abonnements als OPML-Datei.&#8221; die XML Datei herunterladen (z.B. in das Home-Verzeichnis)</p>
<p>Schritt2:<br />
Als naechstes importiert man sich die in der von Google zur Verfuegung gestellte XML-Datei mittels opml2snow in die Abonnementdatei von snownews: </p>
<blockquote><p>opml2snow google-reader-subscriptions.xml>~/.snownews/urls</p></blockquote>
<p>Nun braucht man nur noch snownews zu starten und schon muesste er mit dem Aktualisieren der Newsfeeds beginnen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2010/05/30/google-reader-snownews/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>fbcmd &#8211; facebook in der shell</title>
		<link>http://blog.pimpmyshell.de/2010/05/28/fbcmd-facebook-in-der-shell/</link>
		<comments>http://blog.pimpmyshell.de/2010/05/28/fbcmd-facebook-in-der-shell/#comments</comments>
		<pubDate>Fri, 28 May 2010 10:06:02 +0000</pubDate>
		<dc:creator>Gregor</dc:creator>
				<category><![CDATA[how-tos]]></category>
		<category><![CDATA[programme]]></category>
		<category><![CDATA[tutorials]]></category>
<category>cmd</category><category>facebook</category><category>fbcmd</category><category>shell</category>
		<guid isPermaLink="false">http://blog.pimpmyshell.de/2010/05/28/fbcmd-facebook-in-der-shell/</guid>
		<description><![CDATA[Nachdem der Facebook-Chat nun mit bitlbee abgedeckt ist, waere es ebenso interessant, die Nachrichten und News-Streams von Facebook in der Konsole angezeigt zu bekommen. Ich habe versucht, das ganze mit w3m oder lynx zu stemmen, jedoch ist Facebook in einem Konsolenbrowser nicht wirklich benutzbar (jedenfalls für mich) also suchte ich nach einem einfachen textbasierten Interface [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem der Facebook-Chat nun mit bitlbee abgedeckt ist, waere es ebenso interessant, die Nachrichten und News-Streams von Facebook in der Konsole angezeigt zu bekommen. Ich habe versucht, das ganze mit w3m oder lynx zu stemmen, jedoch ist Facebook in einem Konsolenbrowser nicht wirklich benutzbar (jedenfalls für mich) also suchte ich nach einem einfachen textbasierten Interface welches die Facebook-API nutzt um die wichtigsten Aufgaben direkt mit einem Befehl von der Shell aus in Facebook zu erledigen. </p>
<p>Das Programm traegt den Namen <strong>fbcmd</strong> &#8211; der Name sagt eigentlich alles.<br />
Das Programm, die Funktionen und die Installation sind<a href="http://fbcmd.dtompkins.com/"> sehr gut dokumentiert</a>.</p>
<p>Ich musste unter Debian über die Repos noch <strong>php5-cli</strong> nachinstallieren um das Installationscript nutzen zu koennen. Ansonsten war es sehr angenehm zu installieren: </p>
<blockquote><p>
curl -O http://github.com/dtompkins/fbcmd/raw/master/fbcmd_update.php<br />
sudo php fbcmd_update.php<br />
sudo php fbcmd_update.php install
</p></blockquote>
<p>Nach der Installation kann man das Programm auch als User mit fbcmd starten und wird aufgefordert, den Authorisationscode von Facebook einzugeben &#8211; sehr einfach: Den generierten Link in den Browser einfügen, Bestätigen, Auth-Code Kopieren und mit folgendem Befehl dem Programm mitteilen. Danach kann es auch schon losgehen:</p>
<blockquote><p>fbcmd auth XXXXXX</p></blockquote>
<p>Nun reicht ein <strong>fbcmd inbox</strong> aus, um direkt auf der Konsole die letzten Nachrichten zu sehen, die man sich dann mit <strong>fbcmd msg nr. </strong>anschauen kann. Es gibt natuerlich noch viele weitere Befehle und Features in diesem Programm, die man sich im <a href="http://fbcmd.dtompkins.com/commands">Wiki des Projektes</a> auch genauer anschauen kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2010/05/28/fbcmd-facebook-in-der-shell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>bitlbee &#8211; alles in einem!</title>
		<link>http://blog.pimpmyshell.de/2010/05/28/bitlbee-alles-in-einem/</link>
		<comments>http://blog.pimpmyshell.de/2010/05/28/bitlbee-alles-in-einem/#comments</comments>
		<pubDate>Fri, 28 May 2010 09:23:19 +0000</pubDate>
		<dc:creator>Gregor</dc:creator>
				<category><![CDATA[berichte]]></category>
		<category><![CDATA[how-tos]]></category>
		<category><![CDATA[tutorials]]></category>
<category>bitlbee</category><category>facebook</category><category>icq</category><category>irc</category><category>irssi</category><category>jabber</category><category>msn</category><category>oscar</category><category>perl</category><category>screen</category>
		<guid isPermaLink="false">http://blog.pimpmyshell.de/2010/05/28/bitlbee-alles-in-einem/</guid>
		<description><![CDATA[Ich bin noch immer Stammgast auf div. Unix/Linux Systemen und genieße meine Zeit die ich ausserhalb meines Jobs in der Shell verbringen kann. Leider hatte ich lange das Problem &#8211; in der Shell nicht mehr mit den ueblichen Verdaechtigen der Social-Networks verbunden zu sein &#8211; also waren ICQ,Google-Talk,Jabber,Twitter und Facebook immer in anderen grafischen Applikationen [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin noch immer Stammgast auf div. Unix/Linux Systemen und genieße meine Zeit die ich ausserhalb meines Jobs in der Shell verbringen kann. Leider hatte ich lange das Problem &#8211; in der Shell nicht mehr mit den ueblichen Verdaechtigen der Social-Networks verbunden zu sein &#8211; also waren ICQ,Google-Talk,Jabber,Twitter und Facebook immer in anderen grafischen Applikationen irgendwo auf dem System und nicht in der Shell präsent, wo ich sie gerne haette.</p>
<p>Abhilfe schafft ein Programm, welches ich schon frueher genutzt, aber mittlerweile fast vergessen hatte: Bitlbee</p>
<p>Bitlbee ist ein kleiner lokaler IRC-Server, welcher mit einem rudimentären Bot ausgestattet, als Gateway zwischen ICQ,MSN,AIM,Jabber,Twitter,Facebook-Chat und dem IRC-Protokoll dient. Man kann sich nach der Installation mit dem IRC-Client seiner Wahl mit ihm verbinden und sich anmelden, die IM-Konten hinzufuegen und munter los-chatten.</p>
<p>Ich verbinde mich nun in meiner Screen-Session auf einer dezentralen Maschine über irssi auf den lokalen Bitlbee-Server und kann mich dann mit nur einem Befehl bei allen IM-Diensten anmelden und die Verwaltung der Chat anfragen und Gespräche sind wesentlich stressfreier und übersichtlicher als mit den meisten Multiprotokollmessangern die ich im grafischen Umfeld probiert habe.</p>
<p>Der Ablauf ist wie folgt:</p>
<p>Man installiert das Programm entweder per Hand oder aus den Repos seiner Distribution und verbindet sich danach mit dem IRC-Client seiner Wahl auf den IRC-Standardport(6667) des localhost.<br />
Automatisch wird man nach dem Verbinden auf den bitlbee-channel (&#038;bitlbee) geleitet, in dem zusammen mit @root erst einmal gar nichts passiert. Man kann sich jedoch über den &#8220;help&#8221; Befehl, einen Überblick über die Funktionen des Programms schaffen. </p>
<p>Um sich für die Zukunft am Bitlbee-Server anzumelden gibt man folgenden Befehl ein (mit eigenem Kennwort versteht sich): </p>
<blockquote><p>register password</p></blockquote>
<p>Nun ist man mit seinem Nicknamen am Server registriert und kann sich in zukünftigen Sessions mit folgendem Befehl anmelden:</p>
<blockquote><p>identify password</p></blockquote>
<p>Hat man Konten hinzugefügt, werde diese dann automatisch geladen und verbunden. Kommen wir genau zu diesem Punkt:<br />
Um ein Konto zu registrieren, muss man wissen welche Protokolle unterstützt werden und wie diese heißen:</p>
<ul>
<li>oscar = ICQ/AIM</li>
<li>msn = MSN</li>
<li>jabber = Jabber, Google-Talk, Facebook, GMX/WEB.de Messanger</li>
<li>twitter = twitter</li>
</ul>
<p>Nun also zur Registrierung. Nehmen wir als Beispiel ein ICQ Konto. Im &#038;bitlbee Channel geben wir folgenden Befehl ein:</p>
<blockquote><p>account add oscar icq-nummer passwort</p></blockquote>
<p>Will man einsehen, welche Konten mittlerweile registriert sind, geschieht dies durch:</p>
<blockquote><p>account list</p></blockquote>
<p>Nehmen wir an, das ICQ-Konto hat die Nummer 0, kann man sich wie folgt anmelden:</p>
<blockquote><p>account on 0</p></blockquote>
<p>Nun erscheinen die ICQ Kontakte im &#038;bitlbee-Kanal und man kann die personen per Query oder durch Voranstellen des Nicknamen ansprechen. Um Hilfe zu den div. Protokollen und der Syntax zu erhalten gibt man folgenden Befehl ein:</p>
<blockquote><p>help account add (oscar, twitter, jabber, msn, etc)</p></blockquote>
<p>Ich bin sehr von dieser Lösung überzeugt und kann sie nur weiter empfehlen. Auch die Möglichkeit, den Bitlbee-Server im Netz oder über SSH/VPN freizugeben und sich von einem beliebigen Client und OS aus darauf zu Verbinden hat seinen Charme. Viel Spaß beim Chatten und Twiitern. </p>
<p><strong>Anmerkungen:</strong></p>
<ul>
<li>Bitlbee unterstützt Twitter erst in den neueren Versionen. Ich musste die aktuellste (V.1.2.7) aus dem Quellcode kompillieren. </li>
<li>Projektwebseite:<a href="http://www.bitlbee.org">http://www.bitlbee.org/</a></li>
<li>Howto: <a href="http://www.nowhere.dk/articles/facebook-chat-in-bitlbee">Bitlbee und Facebook</a></li>
<li>Facebook-Rename-Script für Irssi: <a href="http://github.com/avar/irssi-bitlbee-facebook-rename">(Fix-nach Facebook-Update)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2010/05/28/bitlbee-alles-in-einem/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NoPaste/pastebin-Service über die Shell mit curl und sprunge.us</title>
		<link>http://blog.pimpmyshell.de/2008/05/16/nopastepastebin-service-uber-die-shell-mit-curl-und-sprungeus/</link>
		<comments>http://blog.pimpmyshell.de/2008/05/16/nopastepastebin-service-uber-die-shell-mit-curl-und-sprungeus/#comments</comments>
		<pubDate>Fri, 16 May 2008 13:59:22 +0000</pubDate>
		<dc:creator>Mattelacchiato</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[berichte]]></category>
		<category><![CDATA[webseiten]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2008/05/16/nopastepastebin-service-uber-die-shell-mit-curl-und-sprungeus/</guid>
		<description><![CDATA[NoPaste-Services sind &#8216;ne feine Sache. Wenn man im IRC oder in Foren unterwegs ist, kann man auf einer Webseite lange Ausgabe von der Shell oder ganze Configfiles dort hinterlegen, damit sich andere der Fehlersuche annehmen können, ohne das Forum oder IRC zuzuspammen. Bisher musste man allerdings das Copy und Paste noch per Hand erledigen. Mit [...]]]></description>
			<content:encoded><![CDATA[<p>NoPaste-Services sind &#8216;ne feine Sache. Wenn man im IRC oder in Foren unterwegs ist, kann man auf einer Webseite lange Ausgabe von der Shell oder ganze Configfiles dort hinterlegen, damit sich andere der Fehlersuche annehmen können, ohne das Forum oder IRC zuzuspammen. Bisher musste man allerdings das Copy und Paste noch per Hand erledigen.</p>
<p>Mit sprunge.us kann man super eine einfache Shell-Ausgabe auf dem NoPaste-Service von sprunge pipen. Als Rückgabewert bekommt man die URL, unter der die Ausgabe zu finden ist.</p>
<p>Auf der <a title="Homepage" href="http://sprunge.us">Homepage</a> ist die sehr übersichtliche manpage zu finden. Just try it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2008/05/16/nopastepastebin-service-uber-die-shell-mit-curl-und-sprungeus/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Die Heirloom-Tools &#8211; Unix unter Linux</title>
		<link>http://blog.pimpmyshell.de/2008/04/15/die-heirloom-tools-unix-unter-linux/</link>
		<comments>http://blog.pimpmyshell.de/2008/04/15/die-heirloom-tools-unix-unter-linux/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 03:54:30 +0000</pubDate>
		<dc:creator>CuleX</dc:creator>
				<category><![CDATA[berichte]]></category>
		<category><![CDATA[programme]]></category>
		<category><![CDATA[shells]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2008/04/15/die-heirloom-tools-unix-unter-linux/</guid>
		<description><![CDATA[&#8220;Häh? UNIX unter Linux?! Ich dachte, Linux sei ein Unix?&#8221; Linux ist doch kein UNIX. Nur ein UNIX-Klon. Die eigentliche Toolchain (Wenn es EMACS-Benutzer sind, auch EMACS) kommt von GNU. Das ist für den kleinsten Teil der Leser neu, doch die Frage ist, was ist nun mit &#8220;Unix unter Linux&#8221; gemeint ist. Ein gutes Beispiel, [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Häh? UNIX unter Linux?! Ich dachte, Linux <em>sei</em> ein Unix?&#8221;</p>
<ol>
<li>Linux ist doch kein UNIX. Nur ein UNIX-Klon.</li>
<li>Die eigentliche Toolchain (Wenn es EMACS-Benutzer sind, auch EMACS) kommt von <a href="http://www.gnu.org">GNU</a>.</li>
</ol>
<p>Das ist für den kleinsten Teil der Leser neu, doch die Frage ist, was ist nun mit &#8220;Unix unter Linux&#8221; gemeint ist. Ein gutes Beispiel, dies zu demonstrieren, ist ps. Für die gleiche/sehr ähnliche Ausgabe, muss ich völlig andere Parameter benutzen.<br />
<code>ps -A</code> unter BSD/OS X entspricht (Evtl. nicht ganz die selbe Ausgabe) <code>ps -ef</code> unter Linux.</p>
<p>Die <a href="http://heirloom.sourceforge.net">Heirloom-Tools</a> umgehen dieses Problem auf eine (Für den Benutzer) einfache Weise, sie stellen einfach alte Software kompilierfähig zur verfügung.</p>
<p>Beinhaltet sind Programme, die sich wie unter:</p>
<ul>
<li>SVID3/SVR4-Unix verhalten</li>
<li>SVID4/SVR4.2-Unix verhalten</li>
<li>POSIX.2 verhalten</li>
<li>POSIX.1-2001 verhalten</li>
</ul>
<p>Ausserdem werden auch Binaries im UCB-Stil installiert.<br />
Klingt ja alles schön und toll (Ganz im Gegensatz zu gewissen Ideen Schäubles&#8230;), aber, <em>was soll ich denn damit?</em></p>
<p>Nun, du hast eventuell steinalte Shellskripte auf der Arbeit gefunden, kannst sie aber nicht laufen lassen, da die Optionen inkompatibel sind.<br />
Oder, du hattest nie Kontakt zu einem echten Unix, lediglich zu Minix/GNU/Linux und willst die feinen Unterschiede sehen.<br />
Was auch sein kann ist, dass du Skripte für UnixWare oder BSD schreiben musst und diese sollte man ohne ein solches System testen können, besonders bei UnixWare.<br />
Die Neugier kann auch einfach zuschlagen.<br />
Auf der Webseite sind mehrere Dinge zu finden, nicht nur die Heirloom Toolchest, sondern auch die alte Bourne Shell, sowie die Packaging Tools.</p>
<p>Anmerkung am Rande: Alles auf der Webseite wurde aufpoliert, um heutigen Standards zu genügen. *roff kann nun auch OpenType und alle Tools (Toolchain, Packaging Tools, Doctools, Bourne Shell, Devtools, mailx) beherrschen UTF-8, also keine Sorge, dass deine Textdateien auf einmal aussehen, als würden sie durch den Fleischwolf gejagt wurden.</p>
<p>Die Bourne Shell hat wirklich eigentlich nichts, nur grundlegenden Skriptsupport, keine History, keine Tabcompletion. Dafür eine solide Shell, die nicht wegen falscher Konfiguration völlig falsch funktioniert (Und Jobs, YAY!).<br />
Mir persönlich hilft die Shell, vernünftig zu arbeiten und mich nicht ablenken zu lassen. Ich hab dafür sogar mein ganzes Home-Directory (5GB Daten!) aufgeräumt!</p>
<p>Die Packaging Tools sind sehr eigentümlich. Eigentlich erwartet man nicht, dass sie vorhanden sind, sind sie aber. Da pkgadd fragt, ob etwas überschrieben werden soll, kann es problemlos zu einem anderen Paketsystem verwendet werden.</p>
<p>Äusserst langweilig ist, dass die meisten Dinge auf einem anderen Teil der Heirloom-Tools aufbauen. Will man beispielsweise nur die Packaging Tools benutzen, muss die ganze Toolchest installiert werden, da die Tools sich nach einem Teil dieser verhalten.</p>
<p>Nichtsdestotrotz ist es äussert intressant, mit älterer Software zu arbeiten. (Ausserdem generiert troff viel schöneren Postscript output als groff :P)</p>
<p><a href="http://sam.zoy.org/wtfpl/">Dieser Artikel ist unter der WTFPL lizensiert.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2008/04/15/die-heirloom-tools-unix-unter-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>dvtm &#8211; dwm für die Konsole</title>
		<link>http://blog.pimpmyshell.de/2008/02/13/dvtm-dwm-fur-die-konsole/</link>
		<comments>http://blog.pimpmyshell.de/2008/02/13/dvtm-dwm-fur-die-konsole/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 10:43:04 +0000</pubDate>
		<dc:creator>CuleX</dc:creator>
				<category><![CDATA[programme]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2008/02/13/dvtm-dwm-fur-die-konsole/</guid>
		<description><![CDATA[Zunächst einige Zeilen, um das nachfolgende zu verstehen. dwm ist ein minimalistischer Windowmanager, der das Ziel hat, nie mehr als 2000 Codezeilen zu überschreiten. dvtm bezeichnet sich selbst als Windowmanager für die Konsole, der sich als Vorbild dwm genommen hat. Dvtm existiert noch nicht lange. Von ihm Wind bekommen habe ich durch die dwm Mailingliste. [...]]]></description>
			<content:encoded><![CDATA[<p>Zunächst einige Zeilen, um das nachfolgende zu verstehen.<br />
<a href="http://dwm.suckless.org">dwm</a> ist ein minimalistischer Windowmanager, der das Ziel hat, nie mehr als 2000 Codezeilen zu überschreiten.<br />
<a href="http://www.brain-dump.org/projects/dvtm">dvtm</a> bezeichnet sich selbst als Windowmanager für die Konsole, der sich als Vorbild dwm genommen hat. Dvtm existiert noch nicht lange. Von ihm Wind bekommen habe ich durch die dwm Mailingliste.</p>
<p>GNU Screen und dvtm existieren parallel. Doch dvtm hat ein anderes Ziel: dwm auf der Konsole. Screen dagegen ist ein Terminalmultiplexer.</p>
<p>Nun, zu dvtm selber. Dvtm kann sich wirklich der dwm der Konsole nennen, denn es gibt schlichtweg keine Konfigurationsdateien. Jegliche Modifikation oder Konfiguration geschieht in der config.h/im Code. Ausserdem besteht er aus &#8220;nur&#8221; 2369 Codezeilen. Zieht man nun aber die Library madtty hab, so sind es nur noch 1175. Dies befindet sich ungefähr im bereich des X11 dwm. Dafür gibt es kein oberes Zeilenlimit, d.h. er könnte auch mal aufgebläht werden, wie die GNU readline Library (Über 20000 Zeilen Sourcecode!).<br />
Unterstützt werden vier &#8220;Arten&#8221; von Terminalmanaging: Vertikales Teilen, Teilen im unteren Bereich (Siehe Screenshot), Grid (Alle Fenster bekommen gleich viel Platz) und Fullscreen</p>
<p>So könnte dvtm aussehen, nach erfolgter Installation und Konfiguration: <a href="http://blog.pimpmyshell.de/uploads/2008/02/2008-02-13-104240_1280x1024_scrot.png"><img src="http://blog.pimpmyshell.de/uploads/2008/02/2008-02-13-104240_1280x1024_scrot.thumbnail.png" alt="dvtm" /></a></p>
<p>Nun, dvtm aufzusetzen ist kein Mysterium. Zumindest ist es einfacher als Kopfstehend auf den Füssen zu laufen.<br />
Zunächst holt man sich den Code von <a href="http://www.brain-dump.org/projects/dvtm/">http://www.brain-dump.org/projects/dvtm</a> und entpackt ihn. Man sollte nun ein Verzeichnis dvtm-VERSIONSNUMMER vorfinden. In diesem führt man &#8220;make unicode&#8221; aus. Als root noch fix &#8220;make install&#8221; ausgeführt, sind im Path zwei neue Kommandos: Dvtm (Dank der deutschen Rechtschreibung muss ich hier &#8220;Dvtm&#8221; schreiben, es lautet jedoch &#8220;dvtm&#8221;) und dvtm-status. Dvtm ist das eigentliche Kommando, dvtm-status ist ein Beispielscript für eine Statusbar.</p>
<p><strong>Warnung:</strong> Dvtm ist im Alphastadium und hat einiges an Bugs! Für die meisten gibt es allerdings einen Workaround.</p>
<p>Nun. Startet man dvtm sieht man gleich, dass es eine Titelleiste für das Kommando hat. Toll. Für das hätte man sich dvtm auch sparen können. Der Standardprefix ist Ctrl-g. Mit &#8220;C-g c&#8221; (Ich benutze hier die Emacsnotation. C = Control, SPC = Space, Leertaste. Ein Leerzeichen steht für alles loslassen) öffnet man ein neues Terminal, welches direkt neben dem ersten, schon geöffneten erschent. Öffnen Sie ruhig noch zwei, um die Wirkung zu sehen.<br />
Drücken Sie nun &#8220;C-g SPC&#8221;. Sie befinden sich nun im Grid-Modus. Ein weiteres mal diese Prozedur ausgeführt und Sie sind im Modus, in dem alle Fenster sich den unteren Platz teilen müssen. Wiederholen Sie dies noch einmal, sind Sie im Fullscreenmodus. Danach beginnt es wieder von Vorne.<br />
Um ein anderes Terminal zu aktivieren, wird &#8220;C-g NUMMER&#8221; verwendet. Die Nummer erhalten Sie aus der Titelleiste. Zum beenden &#8220;C-g q&#8221; benutzen.<br />
So viel zum Crashkurs. C-g als Prefix können Sie, wie viele andere Dinge, in der config.h-Datei verändern.</p>
<p>Und das Beste kommt zum (fast) Schluss: Solange Screen und dvtm nicht den selben Prefix haben, können mehrere dvtm-Instanzen in screen laufen. Beispielsweise hat Screen fünf Terminals geöffnet und in diesen wird dann jeweils dvtm mit vier Unterterminals gestartet. Das macht unter dem Strich 20 Terminals.</p>
<p><strong>Bugs:</strong></p>
<ul>
<li>In vim funktionieren die Pfeiltasten nicht. Lösung: TERM=linux vim (Der Autor versucht dies zu lösen)</li>
<li>In emacs funktionieren die Home, End und Delete Tasten nicht. Lösung: TERM=linux emacs (Siehe vim)</li>
</ul>
<p>Aber warum sollte man dvtm einsetzen, GNU Screen kann das doch weitaus Bugfreier! Nun, generell gilt, dass die meisten dwm-Benutzer die Meinung, die auf <a href="http://www.suckless.org">suckless.org</a> repräsentiert wird, teilen. Das heisst: Wenig Codezeilen und nur das nötigste.<br />
Somit ist das auch Meinungssache. Ausserdem ist dvtm geeignet für Leute mit Spieltrieb, die etwas neues ausprobieren wollen.<br />
Ausserdem: Der Code von dvtm ist einfacher zu verstehen, als der von GNU Screen.</p>
<p><a href="http://sam.zoy.org/wtfpl/">Dieser Artikel ist unter der WTFPL lizensiert.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2008/02/13/dvtm-dwm-fur-die-konsole/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

