Cygwin-Alias

Alias für Shell- und Konsolen-Befehle

Cygwin ist die kostenlose Portierung der Shell-Konsole (bash) und vieler leistungsfähiger Linux-Dienstprogramme auf Windows.
Ein Alias ist ein frei wählbarer Alternativ-Name für einen (Shell)-Befehl, allenfalls auch inklusive Switches und Options.
Alle Linux Shell-Programme bieten die Möglichkeit zur Definition und Verwendung globaler und privater Alias.
Auf dieser Seite wird gezeigt, wie man mit Cygwin Alias-Befehle definiert und an der Cygwin-Konsole oder auf der Windows-cmd-Konsole verwendet.
Cygwin Linux Shell-Konsole auf Windows: Installation, Konfiguration
Voraussetzung Saubere Cygwin-Installation und Konfiguration
Alias Definition Erzeugung und Verwendung eigener Alias-Befehle
Alias Liste Ausgabe aller definierten Alias-Befehle
Windows CMD Linux Shell-Programme an der Windows-Konsole
Beispiele für einige praktische Alias-Befehle
Windows-Programm (ipconfig) + Shell-Programm (grep)
Zugriff auf die Registry-Datenbank
Gleichnamige Windows- und Shell-Programme
Ausblick Komplexe Programme: Shell, Perl

Voraussetzungen

Für alle auf dieser Seite beschriebenen Beispiele muss Cygwin auf Windows vollständig installiert und sauber konfiguriert sein.
Details zur Installation von Cygwin auf Windows
Falls sie → Linux verwenden, dann ergibt Cygwin keinen Sinn, da alle damit portierten Funktionen in ihrem System bereits enthalten sind. Sie können den Shell-Teil aller gezeigten Beispiele sofort und ohne Installation an ihrer Shell-Konsole ausprobieren.

Cygwin-Pfad

Cygwin sollte in diesem Pfad installiert sein:
C:\Programme\Cygwin
Wenn sie einen anderen Pfad verwenden, dann müssen sie alle Pfad-Angaben dieser Seite sinngemäß ändern.

Eigene Programme

Sie sollten ein Verzeichnis für eigene Programme angelegt haben, z.B.
C:\Programme\_myprox

Umgebungs-Variable

In Windows sollte eine Umgebungs-Variable mit dem Namen cyg und dem Pfad zu den Dienstprogrammen als Wert installiert sein:
C:\Programme\Cygwin\bin\
Test (Pfad, Test-Programm ascii.exe) mit
C:\> path
C:\> echo %cyg%
C:\> ascii
Die Umgebungs-Variable PATH sollte folgende Pfade enthalten:
Den Pfad %cyg% zu den Cygwin Programmen
Den Pfad zu ihren eigenen Programmen

Details zur Konfiguration von Cygwin und zu Windows Umgebungs-Variablen.

Dienstprogramme

Wenn sie mit Cygwin nur die Grundfunktionen installiert haben, dann sollten sie die → Installation aller verfügbaren Linux Shell Dienstprogramme nachholen.

Die Linux Shell Dienstprogramme sollten in diesem Pfad enthalten sein:
C:\Programme\Cygwin\bin
Für die Beispiele dieser Seite werden mindestens folgende Programme benötigt:
bash.exe, date.exe, expr.exe, info.exe, man.exe, regtool.exe, sh.exe

Alias Definition

Was ist ein Shell-Alias

Die Linux Shell bietet die Möglichkeit zur Erstellung von Alias - Das sind Namen für bestimmte Befehlstexte. Alias sind unter dem Namen Macro auch in anderer Entwicklungs-Umgebung üblich.

Man kann selbst gewählte Alias-Namen für beliebige Shell-Befehle inkl. Optionen vergeben und verwenden. Cygwin portiert diese Möglichkeiten in das Windows-System.

Beispiel:

Alle gängigen Linux-Systeme und Cygwin bieten den Shell-Befehl env zur Anzeige aller Umgebungs-Variablen. Starten sie Cygwin und geben sie ein:
$ en
Besser wäre eine sortierte Liste, z.B. mit
$ env | sort

Für diesen Befehl kann man ein Alias definieren:
$ alias umgebung="env | sort"
und verwenden:
$ umgebung
Dieses Alias bleibt bis zum Ende der Sitzung (Session) gültig.
Einzige Einschränkung: Verwenden sie als Alias-Namen keine bereits bestehenden Befehle (Programm-Namen).

User-Alias

Wenn sich ein Alias-Befehl als hilfreich erwiesen hat, dann wird er in den Vor-Einstellungen festgelegt. Beim Start von Cygwin wird das Alias für den jeweiligen User definiert und ist dann ohne jede Vorbereitung in jeder Cygwin-Sitzung verwendbar.
Dazu trägt man die Alias-Definition am Ende dieser Text-Datei ein:
/home/ich/.bashrc
Ersetzen sie 'ich' durch den jeweiligen User-Namen. Auf Cygwin wird für jeden Windows-User bei der ersten Verwendung ein Ordner angelegt, in welchem sich diese Datei befindet, z.B.
C:\Programme\Cygwin\home\ich\.bashrc

Die Datei ist wegen des führenden . Punktes normalerweise unsichtbar. Je nach Programm müssen sie daher eine Option wie 'unsichtbare Dateien anzeigen' wählen. Das Ende dieser Text-Datei kann anschließend so aussehen:
alias umgebung="env | sort"
Diese Konfigurations-Datei wird beim Start jeder Cygwin-Session verwendet. Das Alias ist nach dem nächsten Start von Cygwin verwendbar.
Alias für alle User
Wenn man eine Alias-Definition in diese Datei einträgt
/etc/bash.bashrc
dann ist das Alias für alle User verwendbar.

Der Windows-Pfad zu dieser Datei lautet
C:\Programme\Cygwin\etc\bash.bashrc

Skelett für neue User

Wenn man eine Alias-Definition in diese Datei einträgt
/etc/skel/.bashrc
dann wird diese Datei in das Home-Verzeichnis jedes neu angelegten Cygwin-Users kopiert.

Der Windows-Pfad zu dieser Datei lautet
C:\Programme\Cygwin\etc\skel\.bashrc

Alias-Liste

Mit diesem Befehl wird eine Liste aller aktuellen Alias angezeigt:
$ alias
Damit wird nur die Existenz der Alias angezeigt. Es bedeutet nicht, dass der jeweilige Befehl auch funktioniert wie erwartet.

Alias auf der Windows-CMD-Konsole

Batch-Script-Dateien

Die Windows-Konsole bietet keine Alias. Auch die Cygwin-Shell-Alias sind an dieser Konsole nicht verwendbar.
An deren Stelle kann man Befehle in eine Text-Datei *.cmd eintragen und danach diese Datei wie einen Befehl ausführen.
Jede dieser Batch-Script-Dateien sollte sich in einem jener Pfade befinden, die in der Windows Umgebungs-Variablen PATH angegeben sind.

Anzeige von Path an der Windows- und Cygwin-Konsole:
C:\> path
$env | grep "^PATH="
Tipp: Legen sie ein Verzeichnis für eigene Programme an, z.B.
C:\Programme\_myprox
und tragen sie diesen Pfad am Ende der Umgebungs-Variablen PATH ein:
...;%CYG%;C:\Programme\_myprox;
Unmittelbar davor ist hier die Umgebungs-Variable CYG eingetragen = der Pfad zu den Cygwin-Shell-Programmen.

Umgebungs-Variable CYG

Darüber hinaus wird angenommen, dass eine Windows Umgebungs-Variable CYG definiert wurde, welche den Pfad zu den Cygwin-Programmen angibt.

Anzeige der Umgebungs-Variablen CYG
C:\> set cyg
CYG=C:\Programme\Cygwin\bin\
Der Wert (Text) dieser Variablen sollte mit einem \ Backslash enden.

CMD-Datei

Erzeugen sie eine Text-Datei umgebung.cmd in einem durch PATH angegebenen Pfad und tragen sie diesen Text ein:
%cyg%env | sort

Öffnen sie eine Windows-Konsole cmd.exe und testen sie den selbst angelegten 'Befehl':
C:\> umgebung
Die sortierte Liste der Windows Umgebungs-Variablen sollte angezeigt werden.
Dieses einfache Beispiel dient nur zur Demonstration der Arbeitsweise.
Das kleine Alias lohnt kaum den vorgestellten Aufwand.
Mit der gleichen Methode kann man jedoch auch alle anderen Cygwin Shell-Befehle, -Programme und -Alias auf die Windows-CMD-Konsole übertragen.

Beispiel 'ipv4'

(1) Cygwin

Testen sie diesen Befehl an einer Cygwin-Konsole:
$ ipconfig | grep "Adresse"
Dieses Beispiel verwendet das Windows-Programm ipconfig zur Ausgabe der Netzwerk-Konfiguration.
Der Ausgabe-Text wird mit dem Cygwin-Shell-Programm grep gefiltert: Nur die Zeilen mit IPv4-Adressen werden angezeigt.

(2) Shell-Alias

Schließen sie Cygwin. Tragen sie am Ende der Text-Datei
C:\Programme\Cygwin\etc\bash.bashrc
diese Alias-Definition ein:
alias ipv4='ipconfig | grep "Adresse"'

Öffnen sie Cygwin und testen sie das Alias:
$ ipv4

(3) Windows-CMD-Konsole

Öffnen sie eine Windows-Konsole cmd.exe und geben sie ein:
C:\> ipconfig | grep "Adresse"

(3) Windows Batch Datei

Erzeugen sie in einem durch PATH angegebenen Pfad die Text-Datei ipv4.cmd und tragen sie diesen Text ein:
ipconfig | grep "Adresse"

Öffnen sie eine Windows-Konsole cmd.exe und testen sie das Script:
C:\> ipv4

Beispiel 'msie_home'

(1) Cygwin

Testen sie diesen Befehl an einer Cygwin-Konsole:
$ regtool get '/HKCU/Software/Microsoft/Internet Explorer/Main/Start Page'
Dieses Beispiel verwendet das Cygwin-Programm regtool zur Ausgabe von Daten aus der Windows Registry-Datenbank. Diese Aufgabe lässt sich auch anders lösen, das Beispiel zeigt jedoch die Verwendung des Cygwin-Programmes regtool

(2) Shell-Alias

Schließen sie Cygwin. Tragen sie am Ende der Text-Datei
C:\Programme\Cygwin\etc\bash.bashrc
diese Alias-Definition ein:
alias msie_home="regtool get '/HKCU/Software/Microsoft/Internet Explorer/Main/Start Page'"

Öffnen sie Cygwin und testen sie das Alias:
$ msie_home

(3) Windows-CMD-Konsole

Öffnen sie eine Windows-Konsole cmd.exe und geben sie ein:
C:\> regtool get '/HKCU/Software/Microsoft/Internet Explorer/Main/Start Page'

(3) Windows Batch Datei

Erzeugen sie in einem durch PATH angegebenen Pfad die Text-Datei msie_home.cmd und tragen sie diesen Text ein:
regtool get '/HKCU/Software/Microsoft/Internet Explorer/Main/Start Page'

Öffnen sie eine Windows-Konsole cmd.exe und testen sie das Script:
C:\> msie_home

Beispiel 'date_iso'

(1) Cygwin

Testen sie diesen Befehl an einer Cygwin-Konsole:
$ date "+%F %T"
Dieses Beispiel verwendet das Cygwin-Programm date zur Anzeige von Datum und Zeit im Standard-Format ISO-8601. Das Cygwin-Shell-Programm date bietet viel mehr Optionen als das gleichnamige (!) Windows-Programm.

(2) Shell-Alias

Schließen sie Cygwin. Tragen sie am Ende der Text-Datei
C:\Programme\Cygwin\etc\bash.bashrc
diese Alias-Definition ein:
alias date_iso="date '+%F %T'"

Öffnen sie Cygwin und testen sie das Alias:
$ date_iso

(3) Windows-CMD-Konsole

Öffnen sie eine Windows-Konsole cmd.exe und geben sie ein:
C:\> %cyg%date "+%F %T"
Damit das Shell-Programm date und nicht das gleichnamige Windows-Programm verwendet wird, wird der Pfad zu den Cygwin-Programmen ausdrücklich angegeben. Die Umgebungs-Variable CYG dient zur Vereinfachung und zur zentralen Steuerung: Wenn der Cygwin-Pfad sich ändern sollte, dann muss man lediglich den Wert dieser Variablen anpassen.

(3) Windows Batch Datei

Erzeugen sie in einem durch PATH angegebenen Pfad die Text-Datei date_iso.cmd und tragen sie diesen Text ein:
%cyg%date "+%F %T"

Öffnen sie eine Windows-Konsole cmd.exe und testen sie das Script:
C:\> date_iso

Ausblick: Komplexe Programme

Bash

Die Linux-Shell bietet eine einfache 'Programmiersprache', die jedoch in Kombination mit den mächtigen Linux Shell-Programmen ein enormes Potential darstellt. Mit wenigen einfachen Befehlen lassen sich sehr komplexe Verwaltungs-Aufgaben lösen.
Im Internet und in der Literatur findet man zahlreiche Beispiele für Shell-Programme. Nur wenige sind allerdings portabel, die meisten dienen nur als Beispiel bzw. müssen an Windows angepasst werden.
Ein funktionierendes Shell-Programm lässt sich jedenfalls mit Cygwin rasch und einfach auch auf Windows nutzen.
Details zur Linux-Shell Konsole

Perl

Ist eine vollwertige modulare Programmiersprache mit allen Möglichkeiten.
Perl-Programme werden auf Linux häufig eingesetzt und ergänzen die Shell-Programme, wenn schwierigere Aufgaben zu lösen sind.
Perl für Windows kann man kostenfrei aus dem Internet laden.
Im Internet und in der Literatur findet man zahlreiche Beispiele. Viele davon sind portabel und laufen auf jedem Betriebssystem. Allerdings muss man auch Perl-Programme anpassen, wenn man damit spezifische Windows-Aufgaben lösen will.
Details zur Programmiersprache Perl und zur Installation von Perl auf Windows.