Ich liebe Windows, sowohl privat, als auch zur Software Entwicklung. Trotzdem vermisse ich manchmal das überaus mächtige Terminal der diversen *nix Systeme. Die normale Windows Konsole cmd.exe hat dabei gleich zwei Schwächen gegenüber ihrem *nix Pendant. Einerseits ist sie überaus unansehnlich und bietet relativ wenige Komfortfunktionen. Anderseits stehen auf *nix Systemen mächtige Werkzeuge in der Konsole zur Verfügung, welche unter Windows ohne weiteres nicht vorhanden sind. Punkt 1 kann man sehr leicht durch eine der diversen Ersatz-Guis für die Windows beheben. Beispiele sind ColorConsole oder mein absoluter Liebling Console2. Punkt 2 macht scheinbar mehr Probleme, doch wenn man ein wenig recherchiert stößt man früher oder später auf GnuWin32. Dieses Projekt stellt einen Großteil der Standard Konsolenbefehle von *nix Umgebungen unter Windows zur Verfügung. Damit alles gut zusammen arbeitet und das normale Windows System nicht gestört wird, sollte man etwas Arbeiten in das einrichten stecken.

Die Installation von Console2 ist kein Problem. Bei GnuWin32 hat man zwei Möglichkeiten. Man kann die Tools einzeln laden und installieren oder das ganze automatisiert (und standardmäßig komplett) via GetGnuWin32 laden und installieren lassen. Ich empfehle letzteres. Dann ist lediglich die Ausführung der download.bat und der install.bat notwendig und anschließend stehen alle Tools in einem gemeinsamen Ordner zur Nutzung bereit. Die beiliegende Readme macht einige Vorschläge, wie man diese Programme am besten in das System einbindet, aber ich gehe in diesem Tutorial einen leicht anderen Weg.

Zunächst sollte man Console2 konfigurieren. Das sollte zum größten Teil kein Problem sein. Eine kleine Übersicht meiner bevorzugten Settings im Folgenden:

  • “Console”: Den Haken bei “Save on exit” setzen.
  • “Appearance”: Haken bei “Use tab titles”, “Show command”, “Show Command in tabs” und “Trim tab titles to”. Kein Haken bei “Use console window title”. Font auf “Consolas”. “Inital position” und “Save on exit” können ebenfalls nützlich sein.
  • “More…”: Haken bei “Show menu”, “Show toolbar” und “Show status bar” entfernen. Außerdem “Alpha” für aktiv und inaktiv setzen. Gut ist bei beidem 40.
  • “Behavior”: Haken bei “Copy on select” setzen.
  • “Hotkeys”: Hotkey für “New Tab 1” auf “Ctrl + T” (“Strg + T”).

Unter “Tabs” kommen die eigentlichen Einstellungen. Doch zunächst müssen wir noch GnuWin32 vorbereiten. Eine Möglichkeit zur Nutzung ist den Ordner GnuWin32/bin in die PATH-Variable einzutragen. Das kann aber aber zu Problemen führen. Beispielsweise ist der Befehl “sort” unter Windows schon vorhanden. Setzt man den GnuWin32/bin Ordner am Anfang von PATH, wird der native “sort” Befehl überschrieben. Setzt man es am Ende von PATH, wird der *nix Befehl nicht aktiv. GetGnuWin32 schlägt aus diesem Grund auch ein dynamisches aktiveren mithilfe eines einfachen Batchskripts vor. Ich muss gestehen, bei mir hat es nicht funktioniert und ich finde es auch recht unbequem, jedes mal ein zuerst ein Skript von Hand starten zu müssen. Gleichzeitig möchte ich aber auch keine Probleme mit nativen Windowsfunktionen riskieren. Aus diesem Grund habe ich folgendes kleines Batchskript geschrieben:

@echo off

:: DOSKey Manual: http://en.wikipedia.org/wiki/DOSKey

:: Inject Linux commands into PATH.
set PATH=<Pfad zum Ordner>\gnuwin32\bin;%PATH%

:: Greeting
echo Hello tea2code

Dieses Skript setzt den GnuWin32/bin Ordner automatisch an den Anfang der PATH-Variable (überschreibt somit alle nativen Befehle) und schreibt noch eine kleine Begrüßung in die Ausgabe. Zusätzlich könnte man hier noch weitere Befehle ausführen, wie zum Beispiel Aliase mit Doskey setzen.

Mit Hilfe dieses Skripts kann man jetzt unter “Tabs” in den Console2 Settings die wichtige Einstellung vornehmen. Ich habe zu diesem Zweck den Standardtab umbenannt in “Linux” und ihm einen hübschen Pinguin als Icon spendiert. Auf diese Weise erkennt man leicht in welcher Umgebung man sich gerade bewegt. Unter “Shell” wird jetzt folgendes eingetragen: “%comspec% /k <Pfad zum obigen Batchskript>”

Beim öffnen eines neuen “Linux”-Tabs wird jetzt das obige Skript ausgeführt und anschließend stehen die von GnuWin32 gelieferten Tools zur Verfügung. Sie sind dabei jedoch nur in der gerade offenen Konsole aktiv und stören somit nicht das restliche System. Sofern ich mal ein Terminal ohne *nix Befehle benötige, habe ich einen zweiten Tab angelegt, welcher unter “Shell” nichts enthält. Ähnlich kann man beispielsweise auch die Powershell in Windows einbinden.

Siehe auch: hanselman.com

Weitere nützliche *nix Konsolen Programme für Windows:

Einen Eintrag in das Kontextmenü kann man mit folgender Registry-Datei erreichen:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\open_console]
@="Open Console2 Here"

[HKEY_CLASSES_ROOT\Directory\shell\open_console\Command]
@="<Pfad zu Console2>\\Console.exe -d \"%v\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\open_console]
@="Open Console2 Here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\open_console\Command]
@="<Pfad zu Console2>\\Console.exe -d \"%v\""
Advertisements