Cygwin: Einführung. Cygwin-Laufprogramm in Windows installieren und konfigurieren

Wer gerne in einer Konsole ähnlich der Linux-Konsole arbeitet, kann Cygwin, Unix, installieren ähnliche Umgebung, wo Standard-Konsolenprogramme von Linux verfügbar sein werden.

Die Installation von Cygwin ist ziemlich einfach. Während des Installationsvorgangs in einem der Modi können Sie die Kontrollkästchen neben den Softwarepaketen aktivieren, die Sie installieren möchten. Ich habe Nano, Git und andere Pakete ausgewählt.

Nach der Installation erscheint auf dem Desktop eine Cygwin-Verknüpfung zum Starten der Umgebung.

Starten Sie Cygwin aus einem beliebigen Ordner

Da ich TotalCommander verwende, ist es für mich bequem, Programme direkt aus dem Verzeichnis zu starten, das ich benötige. Erstellen wir eine praktische Bat-Datei zum Ausführen von Cygwin.

Kopieren Sie sofort und ohne viel Nachdenken die Zeichenfolge „Object“ aus der Eigenschaft dieser Verknüpfung in die neue Datei, die wir erstellt haben: C:\bin\bash.bat
Der vollständige Inhalt der Datei sieht folgendermaßen aus:

@start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -

Bitte beachten Sie, dass der Pfad zur exe-Datei bei Ihnen unterschiedlich sein kann. Zu Hause habe ich Cygwin im Verzeichnis C:\cygwin installiert.
Auch wenn das Verzeichnis C:\bin noch nicht zur Umgebungsvariablen PATH hinzugefügt wurde, sollte dies getan werden.

Cygwin-Startup-Setup

Nach einiger Arbeit mit Cygwin habe ich festgestellt, dass ich Cygwin zwar von jedem Verzeichnis aus ausführen kann, indem ich einfach das Wort bash schreibe, die Startumgebung selbst jedoch immer im Home-Verzeichnis Ihres Benutzers geöffnet wird. (Das Home-Verzeichnis wird in der Umgebungsvariablen HOME festgelegt).

Das sieht nicht sehr praktisch aus, denn wenn ich im Verzeichnis D:\xyz einen Bash-Befehl schreibe, erwarte ich, dass Cygwin auch im Verzeichnis D:\xyz ausgeführt wird.

Wenn Sie aufmerksam sind, werden Sie feststellen, dass die Desktop-Verknüpfung das Dienstprogramm mintty.exe startet. Wir verstehen sofort, dass es notwendig ist, sich mit der Liste der eingehenden Attribute für diesen Befehl vertraut zu machen.
Öffnen Sie Cygwin und geben Sie ein

Mann minzig

Nachdem wir das Handbuch sorgfältig studiert haben, freuen wir uns über einige Funktionen, die wir nicht vermutet hatten, nämlich: die Möglichkeit, die Größe und Koordinaten des Cygwin-Startfensters festzulegen.

Öffnen Sie unsere Bat-Datei und ändern Sie ihren Inhalt wie folgt:

@start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120.77 --position -4.0 -

In diesem Fall stelle ich die Größe des benötigten Cygwin-Fensters und die Position ein, an der das Fenster angezeigt wird (ein negativer Wert von -4 ist erforderlich, damit der Rand des Fensters außerhalb des Monitors liegt und nicht sichtbar ist).

Jetzt erscheint mein Fenster immer in den für mich passenden Koordinaten und verschiebt sich nicht bei jedem neuen Start um +8 Pixel in x, y.

Aber was ist mit dem Cygwin-Startverzeichnis?

Schließlich ist der Wechsel von zu Hause in das gewünschte Verzeichnis furchtbar umständlich!

Die Lösung ist gefunden! Um das aktuelle Verzeichnis beim Starten von Cygwin festzulegen, können wir das Autorun-Skript für die Bash-Startumgebung verwenden.

Daher müssen wir unsere bash.bat-Datei verbessern, damit sie eine Autorun-Datei für die Ausführung der Bash-Konsole erstellt

Wir starten Cygwin, geben den Befehl „man bash“ ein und lesen die Dokumentation auf der Suche nach dem, was wir brauchen. Wir finden mehrere Optionen für Dateinamen für das Home-Verzeichnis des Benutzers, die bei der Autorisierung in Bash gestartet werden.
Dateien werden bei der Bash-Anmeldung ausgeführt:

~/.bash_profile ~/.bash_login ~/.profile

Datei wird gestartet, wenn „bash“ ohne Autorisierung gestartet wird

~/.bashrc

Wichtiger Hinweis: Autorun-Datei ~/.bash_login (oder was auch immer) muss in UTF-8-Kodierung geschrieben sein! Und sollte keine \r-Zeichen verwenden. (Zum Beispiel funktionierte der Befehl pwd bei mir nicht, wenn die Datei am Ende das Zeichen \r enthielt, was für das Windows-System charakteristisch ist.)

Wie sich herausstellte, ist die Ausgabe von UTF-8-Text aus CMD nicht so einfach, aber möglich!
Hier ist ein Beispiel, wie das geht:

Cmd /u /c chcp 65001 | Geben Sie einen Text zurück > „Dateiname“

Verbessern wir unsere Datei C:\bin\bash.bat, sie hat nun folgenden Inhalt:

@echo off SET file=.bash_login cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%\%file%" cmd /u /c chcp 65001 | echo cd "%CD:\=/%" >> "%HOME%\%file%" @start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120.77 -- Position -4,0 -

Beim Start führt die Bash-Konsole den Inhalt der Datei ~/.bash_login aus. Diese Datei muss im UTF-8-Format vorliegen. Dazu rufen wir CMD mit dem Flag /u auf, das uns mitteilt, dass die gestartete Konsole das Ergebnis im UTF-8-Format zurückgeben soll.

Wie Sie sehen, senden wir zwei durch | getrennte Befehle . Mit diesem Zeichen können wir die beiden benötigten Befehle in eine Zeile schreiben.

Der erste Befehl chcp 65001 setzt in der laufenden Konsole die Kodierung auf UTF-8. (Um herauszufinden, welche aktuelle Kodierung in der Konsole eingestellt ist, rufen Sie einfach den Befehl chcp ohne Parameter auf.)

Zweites Team echo text > „%HOME%\%file%“ druckt den entsprechenden Text in eine Datei mit dem Namen „%HOME%\%file%“, wobei sich die Variablennamen in den Pfad zum Home-Verzeichnis und den Dateinamen .bash_login erweitern.

Beachten Sie den ungewöhnlichen Verweis auf die CD-Variable, die das aktuelle Verzeichnis der cmd-Konsole enthält. Wenn die Variable normalerweise durch Schreiben erweitert wird

Dann verwenden wir in unserem Fall die Notation

%CD:\=/%

Dadurch können Sie alle Schrägstriche im Windows-Stil sofort durch Schrägstriche im Linux-Stil / ersetzen.

Vergessen Sie nicht, alle Datei- und Verzeichnisnamen einzugeben Anführungszeichen, so dass es möglich ist, Verzeichnisse zu treffen, die Leerzeichen enthalten.

Aufgrund der Tatsache, dass UTF-8 verwendet wird, ermöglicht diese Konstruktion das erfolgreiche Öffnen von Cygwin in Verzeichnissen mit russischen Namen.

Daher wird jedes Mal, wenn Sie den Bash-Befehl in der Konsole ausführen, das Skript C:\bin\bash.bat ausgeführt, das die Autoload-Datei der Bash-Umgebung in Cygwin überschreibt. Jetzt können wir die Bash-Konsole einfach und bequem von jedem Verzeichnis aus starten und sofort in dasselbe Verzeichnis in der Bash-Konsole gelangen.

Wir freuen uns und freuen uns über das Ergebnis!

Zusammenfassen

  1. Wir haben Cygwin installiert
  2. Erstellte Datei C:\bin\bash.bat mit Inhalt @echo off SET file=.bash_login cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%\%file%" cmd /u /c chcp 65001 | echo cd "%CD:\=/%" >> "%HOME%\%file%" @start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120.77 -- Position -4,0 - (Hinweis: Der Pfad C:\bin\ muss in der Umgebungsvariablen PATH enthalten sein)
    Dadurch haben wir Folgendes erreicht:
    • Starten Sie das Cygwin-Terminal an der angegebenen Bildschirmposition (Parameter --position).
    • ein Fenster einer bestimmten Größe starten (Parameter --size )
    • Starten Sie Cygwin aus einem beliebigen Verzeichnis, indem Sie das Wort „bash“ in die Konsole eingeben
    • Gleichzeitig befindet sich das laufende Cygwin im selben Verzeichnis, aus dem es gestartet wurde!

Das Skript cygwin.bat wird von ausgeführt Befehlszeile DOS, installiert die Cygwin-Umgebung und startet den Bash-Interpreter unter Windows. Cygwin richtet Unix-Umgebungsvariablen so ein, dass sie mit Windows-Umgebungsvariablen übereinstimmen. Auf meinem Computer habe ich mich beispielsweise als Benutzer bjohnson bei Windows angemeldet. Wenn ich Cygwin starte, startet es standardmäßig als Benutzer bjohnson.

Unten sehen Sie ein Fenster mit einigen Standard-Unix-Befehlen in Cygwin.


Abhängig von den von Ihnen installierten Paketen können Sie problemlos die entsprechenden Unix-Dienstprogramme ausführen. Wenn Sie ein Unix-Benutzer sind, wünschen Sie sich zweifellos, dass Windows einen ps-Befehl hätte, um aktuell laufende Prozesse anzuzeigen, ohne den Task-Manager zu verwenden. Wenn Sie das Flag -aW verwenden, können Sie sehen Windows-Prozesse, wie alle Laufende Prozesse Cygwin. Nachfolgend finden Sie eine Liste der Windows-Prozesse, die durch die Ausführung des Cygwin-Befehls (ps -aW | less ) verfügbar sind.

PID PPID PGID WINPID TTY UID STIME COMMAND 3193213 0 0 4291774083 ? 0 31. Dez. C:\WINDOWS\SYSTEM\KERNEL32.DLL 63753 0 0 4294903543 ? 0 31. Dez. C:\WINDOWS\SYSTEM\MSGSRV32.EXE 60569 0 0 4294906727 ? 0 31. Dez. C:\WINDOWS\SYSTEM\MPREXE.EXE 77349 0 0 4294889947 ? 0 31. Dez. C:\WINDOWS\SYSTEM\RPCSS.EXE 196093 0 0 4294771203 ? 0 31. Dez. C:\WINDOWS\SYSTEM\mmtask.tsk 191237 0 0 4294776059 ? 0 31. Dez. C:\WINDOWS\EXPLORER.EXE 237709 0 0 4294729587 ? 0 31. Dez. C:\WINDOWS\TASKMON.EXE 230713 0 0 4294736583 ? 0 31. Dez. C:\WINDOWS\SYSTEM\SYSTRAY.EXE 217533 0 0 4294749763 ? 0 31. Dezember C:\PROGRAMFILES\DIRECTCD\DIRECTCD.EXE 5.1.

Verzeichnisstruktur und Dateiberechtigungen

Cygwin mountet Ihre lokalen Laufwerke im Verzeichnis /cygdrive. Dazu gehören Abschnitte Festplatte, Diskettenlaufwerke, CD-ROM-Lesegeräte, ZIP-Lesegeräte. Lassen Sie uns den df-Befehl auf meinem Computer ausführen. Wir erhalten eine Struktur ähnlich der folgenden.

[email protected]$ df Dateisystem 1k-Blöcke Verwendet Verfügbar Verwendung% Eingehängt auf C:\cygwin\bin 2096832 0 2096832 0% /usr/bin C:\cygwin\lib 2096832 0 2096832 0% /usr/lib C:\cygwin 2096832 0 2096832 0 %/c: 2096832 0 2096832 0 % /cygdrive/c d: 670496 670496 0 100 % /cygdrive/d

Nach der Installation von Cygwin habe ich das Installationsprogramm angewiesen, die Dateien im Verzeichnis C:\cygwin\ zu speichern. Cygwin verwendete dieses Verzeichnis als Root-Punkt Dateisystem-Mounts. Es hat C:\cygwin\ bin in /usr/bin und C:\cygwin\lib in /usr/lib gemountet. Die Verzeichnisse /usr/bin , /bin und /usr/local/bin wurden mit Cygwin-Umgebungsvariablen (jedoch nicht mit Windows-Umgebungsvariablen) aktualisiert. Die Verzeichnisse aus der Windows-Umgebung wurden in die Cygwin-Umgebung importiert, um darauf zugreifen zu können.

Cygwin verwendet auch ein vernünftiges Berechtigungssystem für Unix-Dateien. Aber was könnte das für alle Ihre Windows-Dateien bedeuten? Wer ist der Eigentümer der Dateien und welche Standardberechtigungen gelten? Lassen Sie uns den Befehl ls -al für einige Windows-Dateien ausführen, um die Antwort zu erhalten.

[email protected]/cygdrive/c/cyginstall $ ls -al total 273 drwxr-xr-x 1 bjohnson unbekannt 0 13. März 17:48 . drwxr-xr-x 1 bjohnson unbekannt 0 31. Dezember 1969 .. drwxr-xr-x 1 bjohnson unbekannt 0 13. März 18:06 1 bjohnson unbekannt 218112 13. März 17:48 setup.exe -rw-r--r-- 1 bjohnson unbekannt 60607 13. März 17:54 setup.ini

Cygwin wird versuchen, Informationen über die Eigentümer der Datei (Benutzer und Gruppe) von Windows abzurufen. Während ich das Auto unten benutzte Windows-Steuerung 98 mit einem Benutzer, alle Dateien gehörten mir (bjohnson) mit „unbekannt“ als Gruppe. Dadurch werden die Berechtigungen für alle Windows-Verzeichnisse und ausführbaren Dateien auf 755 (Lesen und Ausführen für alle, Schreiben nur für Besitzer) und alle festgelegt Windows-Dateien Autorität 644 (Lesen für alle, Schreiben nur für Eigentümer). Der Befehl chmod für Windows-Dateien wird ignoriert.

Die Entwicklung plattformübergreifender Anwendungen ist keine leichte Aufgabe. Insbesondere dank Windows ist es nicht einfach, in dem nicht alles wie bei den Menschen ist. Hier haben Sie weder ein normales Terminal noch normale Konsolen-Dienstprogramme, überhaupt nichts! Da ich erneut mit diesem Problem konfrontiert war, beschloss ich, es noch einmal mit Cygwin zu versuchen. Und wissen Sie, es stellt sich heraus, dass es wirklich etwas aus Windows macht, das man fast verwenden kann!

Sie können das Cygwin-Installationsprogramm hier herunterladen. Tatsächlich handelt es sich dabei weniger um einen Installer als vielmehr um einen Paketmanager, der beim Start direkt fragt, welche Pakete Sie installieren möchten. Leute! Paket-Manager! Unter Windows! Das Installationsprogramm erstellt einen Cache in dem Verzeichnis, von dem aus es ausgeführt wird. Daher ist es besser, vor dem Start einen speziellen Ordner auf dem Desktop zu erstellen und das Installationsprogramm darin abzulegen.

Welche Pakete muss ich installieren:

  • öffnetsh- Impressum;
  • inetutils, bind-utils, Klingeln, nc Und NC6- Impressum;
  • wget, Locken- Impressum;
  • Python und/oder Python3– Ich denke, das Impressum;
  • vim, gvim- zum Bearbeiten kleiner Dateien wird es nicht überflüssig sein;
  • diffutils, pwgen, entpacken, rzync- lass sie für alle Fälle sein;
  • gcc und/oder klirren, cmake, gdb- wenn benötigt;
  • Bildschirm, tmux, mc- für Liebhaber;
  • Idiot- unter sehr groß Frage, siehe unten;

Beachten Sie! Um pip auf Cygwin zu installieren, überprüfen Sie die Pakete python-setuptools und/oder python3-setuptools. Sagen Sie nach der Installation im Terminal:

easy_install-2.7 pip

easy_install-3.4 pip

... abhängig davon, welche Version oder Versionen von Python Sie installiert haben.

Nach der Installation von Cygwin können Sie also ein Terminal öffnen:

Leute! Mit einem normalen Terminal, das die Größe ändert, können Sie Text kopieren und einfügen, und das war's! Unter Windows! Mit allen bekannten und vertrauten Befehlen id, ls, pwd, cat, ssh, scp und anderen. Mit einer menschlichen Umgebung – .bashrc, ~/.ssh/config usw. Außerdem schleppt Cygwin im Gegensatz zu der beschämenden Software namens PowerShell nicht das .NET Framework mit sich. Wir können sogar mehrere Terminals öffnen und mit Strg + Tab zwischen ihnen wechseln. Es ist fast wie Taba! Natürlich funktioniert auch das gute alte Alt + Tab.

Ich habe oben nicht empfohlen, Git zu installieren, und hier erfahren Sie, warum. Tatsache ist, dass es in Cygwin merklich langsamer wird. Es wird empfohlen, die folgenden Befehle auszuführen:

git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256

Aber das löst das Problem leider nicht vollständig. Bei einem großen Projekt kann der Befehl „git status“ also 20 Sekunden lang ausgeführt werden. Unter Linux funktioniert der Befehl auf genau demselben Repository sofort.

Was ist CYGWIN Nach Chris Kasperskys Artikel „How to make Unix out of Windows“ in CG #3 vom 23. Januar 2001 wollte ich Windows-Benutzern unbedingt etwas mehr darüber erzählen, was Cygwin ist. Ich verwende es schon seit längerem und kann unter Windows nicht mehr effektiv arbeiten, ohne dass Cygwin installiert ist.

Das Wort Cygwin besteht aus zwei Komponenten: Cygnus ist der Name des Unternehmens und Windows, aber es wäre falsch zu sagen, dass alles in Cygwin von den Jungs von Cygnus geschrieben wurde. Cygwin ist eine Windows-Portierung der Gnu-Dienstprogramme und Gnu (www.gnu.org) ist ein Projekt von Free Software(Free Software Foundation, oder einfach FSF), deren Ziel es ist, ein nichtkommerzielles Unix-System zu schaffen, das niemandem gehört und frei von Lizenzen ist, die die Freiheit zur Verbreitung und Änderung von Software einschränken. Im Rahmen dieses Projekts wurden fast alle Standard-UNIX-Dienstprogramme neu geschrieben. Die drei wichtigsten FSF-Beiträge sind gcc (der Gnu C Compiler oder Gnu Compiler Collection), Bash (die Bourne Again Shell) und Emacs. Ohne gcc gäbe es kein Linux und Bash ist die Standard-Shell für viele moderne Unix-Systeme. Erfahrene Leute sagen, dass das erste, was Systemadministratoren nach der Installation kommerzieller Unixe tun, die Installation von GNU-Dienstprogrammen ist. Im Prinzip sind GNU und FSF an sich ein umfangreiches Thema und verdienen einen separaten ausführlichen Artikel.

Der gesamte Satz der Gnu-Dienstprogramme besteht aus einer Reihe kleiner (normalerweise) Programme, die die meisten Aufgaben abdecken, denen ein Unix-Systembenutzer (und nicht nur Unix) täglich gegenübersteht. Jedes dieser Programme erledigt eine Aufgabe und erledigt sie gut. Diese Programme können dann kombiniert werden, um verschiedene Probleme zu lösen.

Versuche, Gnu auf andere Nicht-Unix-Plattformen zu portieren, wurden mehr als einmal unternommen, was übrigens von ihrer Beliebtheit zeugt.

Erwähnenswert ist das Projekt zur Portierung von Dienstprogrammen unter DOS - DJGPP. Gehen Sie zu http://www.delorie.com/djgpp/, es ist wirklich interessant.

Cygnus hat nicht jedes Dienstprogramm einzeln kompiliert und sich jedes Mal darum gekümmert, die gleichen Probleme zu lösen. Stattdessen wurde eine Art „Dichtung“ zwischen den GNU-Dienstprogrammen und geschrieben Betriebssystem. Dieses Shim – cygwin1.dll (1 – Versionsnummer) – bietet Emulation Systemaufrufe UNIX, das die Kompilierung und Ausführung von Unix-Programmen ohne oder mit geringen Änderungen ermöglicht Quellcode. Im Grunde handelt es sich bei dieser DLL um Cygwin selbst, und alles andere sind GNU-Softwarepakete, die für die Zusammenarbeit mit Cygwin kompiliert wurden.

Das Vorhandensein von gcc und Bibliotheken ermöglicht die Übertragung unter Windows am besten verschiedene Anwendungen und macht Cygwin zu einer vollständigen Plattform – man findet manchmal den Ausdruck „Cygwin-Plattform“. Seit den ersten Beta-Versionen von Cygwin haben verschiedene Leute unter Cygwin kompiliert, was ihnen unter Windows fehlte, die Standardverteilung von Cygwin ist nach und nach gewachsen, auch durch diese selbst erstellten Kompilierungen. Zum Beispiel während Beta-Versionen 20 Ich musste den vim-Editor separat herunterladen und jetzt wird er zusammen mit dem gesamten Set installiert.

So installieren Sie alles

Cygnus hat ein praktisches Paketverwaltungsprogramm geschrieben, das ein wenig an einige erinnert ähnliche Programme aus Linux-Betriebssystemdistributionen. Der erste Schritt besteht darin, es von der Cygnus-Website http://sources.redhat.com/cygwin/setup.exe herunterzuladen. Wenn Sie es ausführen, können Sie einen Standardsatz an Paketen von einem der vielen Spiegel herunterladen. Sie können dies auch selektiv tun und einzelne Pakete überspringen.

Für die Zukunft: Wenn Sie dieses Programm später im selben Verzeichnis ausführen, können Sie sehen, welche neuen Pakete oder neue Versionen bestehender Pakete erschienen sind.

Das gleiche Programm installiert Cygwin für Sie und bietet Ihnen erneut die Möglichkeit, selbst zu entscheiden, was Sie installieren möchten und was nicht. Die Installation erstellt für Sie Verzeichnisse, die in der Unix-Dateihierarchie üblich sind – bin, usr, sbin usw. – daher ist es praktisch, sie alle in einem Verzeichnis abzulegen, damit sie nicht mit Ihren Windows-Ordnern verwechselt werden.

Und wie man alles nutzt

Wenn Sie Cygwin starten, sehen Sie ein Konsolenfenster, das der normalen Windows-Konsole ähnelt: command.com unter Win9x oder cmd.exe unter NT. Aber nein! Sie haben einen herrlichen Nachkommen der Unix-Befehlsinterpreter unter Windows gestartet, den command.com damit zu imitieren versuchte BAT-Dateien. Bash und sein älterer Bruder sh sind der Klebstoff, der zusammenhält Unix-System, es kann zu Recht als Programmiersprache bezeichnet werden, das heißt, man kann darauf schreiben.

Manche Grundbefehle und ihre Gegenstücke in Windows

ls = dir – den Inhalt eines Verzeichnisses anzeigen;
cd = chdir – in ein anderes Verzeichnis wechseln;
cp = copy – eine Datei kopieren;
mv = mv – Datei verschieben/umbenennen;
rm = del – Datei löschen;
mkdir = mkdir – ein Verzeichnis erstellen;
pwd – Zeigt das aktuelle Verzeichnis an.

Denken Sie daran – ein großes „A“ ist nicht mehr gleich einem kleinen „a“, das \-Zeichen muss jetzt durch / ersetzt werden. Der Befehl cd / in Cygwin führt Sie in das Verzeichnis, in dem sich bin, usr usw. befinden. Unter Unix gibt es nichts über /, aber in Cygwin können Sie zum Durchlaufen von Windows-Partitionen den Befehl cd //c/ verwenden (cd //d/MyDir usw.).

Eine der praktischsten Funktionen von Bash ist die automatische Vervollständigung. Lassen Sie uns einige Dateien mit dem Befehl cat erstellen:

cat > erste_Datei ENTER

Geben Sie etwas ein und drücken Sie dann Strg+C.

und das gleiche für eine andere Datei:

cat > zweite_Datei ENTER.

Stellen Sie sicher, dass die Dateien vorhanden sind:

Geben Sie nun einen beliebigen Befehl wie ls ein, gefolgt vom ersten Buchstaben der ersten Datei. Drücken Sie die Tabulatortaste. Bash hängt den Dateinamen selbst an. Wenn die Dateien auf die gleiche Weise beginnen, z. B. file_one und file_two, hängt Bash nur file_ an und wartet darauf, dass Sie zur Eindeutigkeit einen weiteren Buchstaben eingeben.

Einige Beispiele für die Verwendung einiger Dienstprogramme.

Nehmen wir an, Sie haben es getan Textdatei in.txt. Sie können die Anzahl der darin enthaltenen Wörter folgendermaßen zählen:

Anzahl der Zeilen:

Suchen Sie nach Zeilen, die die Larry-Zeichenfolge enthalten:

grep „Larry“ in.txt

Teilen Sie Zeilen in Wörter auf und ersetzen Sie Leerzeichen durch Zeilenendezeichen:

cat.txt | gawk „gsub(“+“,\n“)“

Der Gawk-Befehl „gsub(“ +“,\n“)“ bedeutet, ein oder mehrere Leerzeichen („+“) durch ein Zeilenendezeichen („\n“) zu ersetzen.

Machen Sie dasselbe, aber mit der Möglichkeit der bequemen Anzeige (PageUp, PageDown, Exit - q)

cat.txt | gawk "gsub("+","\n")" | weniger

Zeilen (Wörter) sortieren:

cat.txt | gawk "gsub("+","\n")" | sortieren | weniger

Doppelte Zeilen (Wörter) entfernen:

cat.txt | gawk "gsub("+","\n")" | sortieren | einzigartig | weniger

cat.txt | gawk "gsub("+","\n")" | sortieren | einzigartig | wc -l

Entfernen Sie identische Zeilen (Wörter) und zählen Sie deren Anzahl:

cat.txt | gawk "gsub("+","\n")" | sortieren | uniq --count | weniger

Sortieren Sie erneut und erhalten Sie so das Häufigkeitswörterbuch des Textes:

cat.txt | gawk "gsub("+","\n")" | sortieren | uniq --count | sort-r | weniger

Dasselbe, mit der Ausgabe der Ergebnisse in eine Textdatei:

cat.txt | gawk "gsub("+","\n")" | sortieren | uniq --count | sort -r > out.txt

Das Gleiche, mit Zwischenergebnissen, die in der Datei „intermediate.txt“ gespeichert sind:

cat.txt | gawk "gsub("+","\n")" | tee-intermediate.txt | sortieren | uniq --count | sort-r | weniger

Mit der Leistungsfähigkeit von Bash können Sie diesen Befehl jetzt für mehrere Dateien wiederholen. Geben Sie das Skript direkt in die Konsole ein und wechseln Sie in eine neue Zeile, wie sie im Artikel abgedruckt ist. Bash erkennt, dass der Befehl nicht abgeschlossen ist, und ändert die Eingabeaufforderung in „>“:

für Datei in *.txt; Tun

cat $file | gawk "gsub("+","\n")" | sortieren | uniq --count | sort -r > $file.out

So. Einfache Aufgaben- einfache Lösungen.

Um herauszufinden, wie ein bestimmter Befehl funktioniert, können Sie ihn mit der Taste --help ausführen oder den man-Befehl (manuell) verwenden – man awk, man grep. Sie können man mit q verlassen.

WAS SONST IN CYGWIN IST

Compiler

Eine einfache (man sagt, 1 Tag Schulung) Programmiersprache für die Textverarbeitung, einer der Vorfahren von Perl

Stream-Editor

C-Parser-Generator

C-Parser-Generator

Programmiersprache. Eigentlich hat es keinen direkten Bezug zu den GNU-Dienstprogrammen, es wurde eine Zeit lang von der Sun Corporation unterstützt. Sie können cd /usr/share/tk8.0/demos aufrufen und widget -./widget ausführen. Sie sehen eine Demo von Tk, einer Tcl-Erweiterung zum Erstellen von GUIs.

Archivierer

Leistungsstarker Archivierer

Dateivergleichsprogramm

Und vieles mehr. Gehen Sie einfach in den Papierkorb und sehen Sie, was Sie dort haben. Paketeinzahlungen finden Sie unter http://www.hirmke.de/software/develop/gnuwin32/cygwin/porters/Hirmke_Michael/GNUWin32-contents.html. Viele Informationen und Links zum Thema gibt es auch auf der Cygnus-Website http://sources.redhat.com/cygwin/.

So richten Sie CYGWIN ein

Erstens müssen Sie Bash nicht ausführen, wenn Sie Angst vor der Konsole haben. Sie können alle Programme von Far, Windows Commander usw. verwenden, Sie müssen lediglich die Pfade zum bin-Verzeichnis festlegen. Unter Windows 9x erfolgt dies in der Datei autoexec.bat, unter NT müssen Sie unter Arbeitsplatz/Eigenschaften/Umgebung den Pfad zu bin zur Umgebungsvariablen PATH hinzufügen.

Für mehr komfortable Bedienung In Bash empfehle ich Ihnen Folgendes: Wenn sich Ihre Cygwin-Verzeichnisse in c:\cygwin befinden, erstellen Sie das Verzeichnis c:\cygwin\root (mkdir /root) und fügen Sie eine Zeile zur Datei cygwin.bat hinzu, die sich in befindet c:\cygwin:

HOME=d:\cygwin\root

Im Stammverzeichnis sollten Sie zwei Dateien erstellen, die mit einem Punkt beginnen: .inputrc und .bashrc. Beide Dateien werden von Bash beim Start ausgeführt, .inputrc ist dafür verantwortlich, dass alle Schlüssel korrekt funktionieren, und .bashrc enthält verschiedene Informationen. Als Beispiel nenne ich meine .bashrc:

export PS1="\w > "

export PATH=".:$PATH"

Alias ​​ls="ls --color"

Alias ​​untar="tar xvf"

echo Willkommen bei CygWin!

Die erste Zeile gibt den Bash-Pfad an. So behandelt Unix alle Interpreter. Wenn Sie beispielsweise das Perl-Skript hello.pl und Perl selbst in /usr/bin haben, können Sie in die erste Zeile schreiben:

und führe es so aus:

Somit ist es möglich, Programme auszuführen, ohne sich Gedanken darüber machen zu müssen, in welcher Sprache sie geschrieben sind.

PS1 ist eine Variable, die den Bash-Prompt, den Job-Prompt, wie er auch genannt wird, speichert. \w ist das aktuelle Verzeichnis.

Nach dieser Ergänzung zu PATH können Sie es auf die Art und Weise tun, wie Windows-Benutzer es gewohnt sind:

Als nächstes verwende ich Synonyme oder Alias ​​"s. Beispielsweise färbt der Befehl ls seine Ausgabe nicht standardmäßig ein, je nachdem, um welche Dateien es sich handelt. Dazu müssen Sie ihn mit der Taste --color ausführen. Das ist unpraktisch. Mit Mit dem Alias ​​ls="ls command --color" löse ich dieses Problem. Jetzt bedeutet ls ls --color. Es ist nicht notwendig, denselben Befehlsnamen zu verwenden, Sie können ll="ls --color" ausführen und verwenden neuer ll-Befehl. Etwas in der Art mache ich, wenn ich den untar-Befehl zum Entpacken von tar-Archiven erstelle, anstatt jedes Mal tar xvf einzugeben. Pipes (Pipes, Pipelines) können auch im Alias ​​platziert werden: alias sort_un_sort=" sort | uniq --count | sort-r".

Tatsächlich sind die Möglichkeiten zur Gestaltung des Arbeitsplatzes grenzenlos und meine Beispiele sind primitiv und einfach. Es gibt weitere Funktionen, interaktive Befehle in .bashrc, Funktionen, die über eine Eingabeaufforderung ausgeführt werden ...

Ich hoffe, Sie haben Lust, mit Cygwin zu experimentieren. Senden Sie Ihre Kommentare an

Cygwin (Cygwin) ist eine Reihe von Unix-Programmen und -Bibliotheken, die unter dem Windows-Betriebssystem kompiliert und in gehostet werden Dateisystem auf die gleiche Weise wie im echten Unix. Dadurch erhalten wir ein vollständiges Äquivalent der Unix-Umgebung von Bash- bis zu GCC-Compilern, mit denen Projekte für die Ausführung unter Windows ohne große Portierung des Quellcodes erstellt werden können (eine ziemlich große Anzahl plattformübergreifender Anwendungen verwendet diesen Ansatz, da er ist die einfachste und schnellste).

Cygwin installieren

Sie können Cygwin als 32x- oder 64x-Bit-Version auf der Website herunterladen https://cygwin.com/install.html. Die Installation ist sehr einfach – Sie können einfach im Fenster „Pakete auswählen“ auf „Weiter“ klicken. Hier öffnet sich vor Ihnen eine Datenbank mit Paketen, von denen einige bereits zum Stoppen markiert sind (einfach), andere können Sie selbst markieren. Um ein Paket zur Installation zu markieren, müssen Sie seinen Namen in das Feld „Suchen“ eingeben, dann die Kategorien erweitern und dieses Paket finden. Klicken Sie dann auf „Überspringen“. Als Ergebnis sollte anstelle von „Überspringen“ die Version erscheinen, die installiert wird. Überprüfen Sie das Paket auf weitere Arbeiten wget, der Rest kann vorerst unangetastet bleiben. Pakete können jederzeit durch einfaches erneutes Ausführen des Installationsprogramms installiert oder entfernt werden. Dies ist jedoch nicht sehr praktisch. Daher werde ich Ihnen später in diesem Artikel erklären, wie Sie Pakete über die Befehlszeile installieren (dafür benötigen wir wget).

Standardmäßig läuft Cygwin in einem Standard-Windows-Terminal, was nicht sehr praktisch ist.

Terminalkonsole

Pakete für Python mit Pip installieren

Pakete in Python werden häufig mit Pip installiert, das in den Sigwin-Repositorys nicht zu finden ist.

Daher muss es separat installiert werden:

MAN-Seiten für libc-Funktionen

Cygwin enthält bereits Manpages für Standardbefehle, man für libc-Funktionen kann jedoch separat installiert werden:

Cygwin ist übrigens in gewisser Weise mit eingebetteten Systemen verwandt, da es verwendet wird Newlib libc-Implementierung, die bekanntermaßen in verschiedenen ARM-Toolchains weit verbreitet ist.

vim in Cygwin

Installation:

Die Konfiguration erfolgt in der .vimrc-Datei in Ihrem Home-Verzeichnis:

Ich verwende diese Einstellungen:

set backspace=indent,eol,start

Syntaxaktivierung

setze Shiftwidth=4

setze tabstop=8

setze softtabstop=4

Erweitern Sie die Registerkarte

Nummer setzen

setze cmd anzeigen

Cursorlinie setzen

Dateityp-Einrückungs-Plugin aktiviert

Wildmenü festlegen

setze lazyredraw

Show-Match festlegen

set incsearch

Verwendung des „nativen“ Cygwin-Terminals

Das Standard-Cygwin-Installationsprogramm stellt ein eigenes Mintty-Terminal bereit (gestartet über das Cygwin-Terminal-Symbol). Im Vergleich zur Konsole ist die Funktionalität etwas schlechter (z. B. verfügt sie über keine Registerkarten), verfügt aber auch über eine gute Funktionalität und es gibt weniger Gesten. Eines der netten Features ist die Unterstützung für 256-Bit-Farben im Terminal:

Dadurch können Sie praktische Syntaxhervorhebungsthemen für vim verwenden, wie zum Beispiel badwolf:

Um es zu aktivieren, fügen Sie zu .vimrc Folgendes hinzu:

Es wird so aussehen:

Wie speichere ich den Befehlsverlauf in Bash Cygwin?

In der .bashrc-Datei müssen Sie Folgendes finden:

Der erste gibt die Größe der Verlaufsdatei an (10.000 Befehle), der zweite umfasst das Entfernen doppelter Befehle (wenn der eingegebene Befehl bereits im Verlauf vorhanden ist, wird der alte gelöscht, um Platz zu sparen) und der dritte umfasst die Führung des Bash-Verlaufs .

Wie navigiere ich in Cygwin zu einem Pfad im Windows-Stil?

Sie können das Dienstprogramm cygpath verwenden, um einen Win-ähnlichen Pfad in einen Pfad im Unix-Stil umzuwandeln.

Dadurch wird der Pfad in „/cygdrive/d/projects/some/src“ umgewandelt und als Argument an cd übergeben.