Auf der Build 2016 stellte Microsoft der Welt das Windows-Subsystem für Linux (Beta) vor , mit dem Entwickler native Ubuntu-Konsolenbinärdateien im Benutzermodus über die Bash-Shell in Windows 10 ausführen können. Wenn Sie am Windows Insider-Programm teilnehmen, hatten Sie die Möglichkeit, diese Funktion mit den neuesten Windows Anniversary Update Insider-Builds auszuprobieren.Webentwickler sind es gewohnt, schwierige Entscheidungen darüber zu treffen, welche Tools und Bibliotheken sie verwenden können, basierend auf dem Betriebssystem, an dem sie aktiv arbeiten. Die WSL wurde vom Windows-Kernel-Team entworfen und erstellt und in Zusammenarbeit mit Canonical bereitgestellt, um Windows 10-Entwicklern zu helfen, das umfangreiche Linux-Entwickler-Ökosystem und die Tools neben den großartigen Tools, die sie bereits in Windows verwenden, zu nutzen, ohne in ein anderes Betriebssystem oder eine andere VM booten zu müssen. Dies ist definitiv eine Windows 10-Funktion „von Entwicklern für Entwickler“, die speziell entwickelt wurde, um ein wenig Reibung aus dem täglichen Workflow der Entwickler zu entfernen.
In diesem Beitrag werde ich Ihnen einige der Funktionen von WSL zeigen, die ich persönlich sehr interessant finde, und Sie auf einige Ressourcen hinweisen, die Ihnen helfen, mehr zu erfahren. Zuerst zeige ich die Integration von Standardbefehlen wie ssh für die Arbeit mit Linux-Servern und -Geräten. Zweitens werde ich die Fähigkeit demonstrieren, Bash-Skripte zu verwenden, um Aufgaben auf sehr natürliche Weise zu automatisieren. Drittens werde ich ein wenig Spaß mit den großartigen Befehlszeilen-Compilern, anderen Tools und der angebotenen * Nix-Kompatibilität haben und ein wenig NetHack spielen. Schließlich zeige ich Ihnen die Möglichkeit, vorhandene Python- und andere im Web verfügbare Skripte zu verwenden.
Windows ist mein primäres Betriebssystem und meine Entwicklungsumgebung und seit Windows 3.0 auf meinem ersten 286. Trotzdem hatte ich immer Linux-Server oder -Geräte bei mir. Von IoT-Geräten wie dem Raspberry Pi über dedizierte Router / Gateway-Geräte bis hin zu Minecraft-Servern sammeln sie sich in den Regalen und Ecken meines Büros. Eine Sache, die ich immer tun muss, ist, diese Linux-Computer einfach von meinem Hauptarbeitsplatz aus zu verwalten und zu konfigurieren.
Server und Geräte verwalten
Ich betreibe derzeit einen kopflosen Ubuntu Minecraft-Server von zu Hause aus. Es war mein Weihnachtsgeschenk für meinen 10-jährigen Sohn im vergangenen Jahr, aber es hat sich herausgestellt, dass es genauso mein Spielzeug ist wie sein (ok, mehr mein Spielzeug). Früher habe ich ein paar Client-Apps verwendet, um es von meinem primären Windows 10-PC aus zu verwalten, aber jetzt verwende ich nur die Befehlszeile ssh aus Bash unter Windows 10. Die Verwendung von Apps wie PuTTY und Tera Term ist natürlich in Ordnung, ebenso wie die Verwendung der großartigen Tools, die mit Cygwin geliefert werden, aber ich wollte eine wirklich native und natürliche Erfahrung, die einfach gut lief. Cygwin fühlte sich für mich immer ein bisschen an, als würde ich Pfannengerichte in einer Pizzeria bestellen. Es war in Ordnung, aber die Ausführung fühlte sich einfach nicht richtig für die Umwelt an.
Ich habe die öffentlichen / privaten Schlüsselpaare mit ssh-keygen und ssh-copy-id von der WSL eingerichtet, also zu ssh, tippe ich einfach:
$ ssh <Benutzername><server>
Ich habe einen Alias erstellt, der das schneller macht. Dies ist eine Standard-Linux / Bash-Funktion:
$ alias mc=’ssh <Benutzer><Server>‘
Nun, um zum Minecraft-Server zu gelangen Ich tippe einfach „mc“ an der Bash-Eingabeaufforderung in Windows 10.
Derselbe Ansatz funktioniert natürlich mit allen Linux-basierten Web- oder Datenbankservern oder sogar Raspberry Pi und ähnlichen IoT-Geräten, die Sie möglicherweise als Teil Ihrer Lösung verwenden.
Die Möglichkeit, Shell über eine Konsolenaufforderung sauber zu sichern, ist nur eine Annehmlichkeit und eine Präferenz. Sobald Sie sich jedoch daran gewöhnt haben, direkt in der Shell zu arbeiten, in einer vollständigen Umgebung, die Heftklammern wie apt, Node, Ruby, Python und andere enthält, eröffnen Sie alle möglichen Möglichkeiten für die Automatisierung.
Remote Scripting
Angenommen, Sie haben eine ganze Reihe von Linux-Geräten oder -Servern und möchten einen Remote-Befehl darauf ausführen. Angenommen, Sie haben Ihre öffentlichen / privaten Schlüsselpaare bereits eingerichtet, können Sie einfach Remote-SSH-Befehle von Bash ausführen.
Um beispielsweise zu sehen, wann der letzte Neustart auf einem Remote-Server war, geben Sie Folgendes ein:
$ ssh <user><Server> ‚last -x/grep reboot‘
Dieser sichert Shells mit dem Server und führt den last -x-Befehl , und sucht nach den Zeilen, die das Wort „reboot“ enthalten.“ Wenn ich es gegen meinen Ubuntu Minecraft-Server starte, erhalte ich folgendes Ergebnis:
reboot system boot 4.4.0-28-generic Thu Jul 7 08:14 läuft noch
Das ist ein einzelner Server. Wenn Sie eine Liste von Servern haben, können Sie diesen Teil auch automatisieren. Ich habe eine Datei namens server erstellt.txt in meinem Home-Verzeichnis auf WSL. Es enthält eine Reihe von Linux-Server- / Gerätenamen – einen pro Zeile. Ich habe diese Datei dann aus einem Skript gelesen, das ich in meinem Home-Verzeichnis in WSL erstellt habe.
Nach Jahren der Arbeit mit Geräten wie dem Raspberry Pi bin ich ein Nano-Typ (auf VMS war ich eine LSEdit-Person), also sieht das Skript in meinem Lieblingskonsolen-Editor so aus:
Sie können natürlich vim oder Emacs oder einen anderen Editor verwenden, der in einer Ubuntu-Konsolensitzung funktioniert.
Die verwendete Sprache ist Bash script (auch Bash Shell Script genannt). Um das Skript auszuführen, tippe ich einfach:
$ ./foreachserver.sh ‚last -x/grep reboot‘
Und es wird über jeden Server / jedes Gerät in der Datei iterieren und diesen Befehl remote über ssh ausführen. Dies ist natürlich ein sehr einfaches Beispiel, aber Sie können erweitern, um in lokalen Skripten oder anderen nützlichen Befehlen umzuleiten. Die Bash-Skriptsprache ist reichhaltig genug, damit Sie die meisten Remote-Verwaltungsaufgaben damit ausführen können. Sie können es auch mit anderen Anwendungen erweitern, die Sie auf die WSL oder die Remotecomputer herunterladen.
Was ist, wenn Sie lokale Windows-Dateien und -Ressourcen für Ihren Workflow mit anderen Linux-Computern verwenden möchten? Was ist, wenn Sie Linux überhaupt nicht verwenden? Ist Bash in der Lage, mit lokalen Windows-Dateien und -Ressourcen zu arbeiten, oder handelt es sich um eine vollständig isolierte Umgebung?
Arbeiten mit Windows-Dateien
Die WSL hat Zugriff auf das Dateisystem Ihres Pcs über /mnt/<Laufwerksbuchstabe>/ Verzeichnisse (oder Einhängepunkte). Beispielsweise wären Ihre C: – und D: -Stammverzeichnisse in Windows über / mnt / c / bzw. / mnt / d / in der WSL verfügbar. Dies kann nützlich sein, wenn Sie Ihre Windows-Projektdateien, Downloads oder andere Dateien in einen Linux / Bash-basierten Workflow integrieren möchten.
Diese werden der SSD und dem mechanischen Laufwerk zugeordnet, die ich auf dem PC habe:
Dies sind logische Mountings, daher werden sie derzeit nicht angezeigt, wenn Sie Befehle wie mount in der Shell verwenden. Aber sie funktionieren so, wie Sie es erwarten würden. Zum Beispiel habe ich in Windows eine Textdatei mit dem Namen test abgelegt.txt im Stammverzeichnis meines Laufwerks C. Ich kann von WSL aus wie folgt darauf zugreifen:
Während der Build-Tour wollten wir sicherstellen, dass die Demos alle ohne Internetzugang funktionieren (man weiß nie, wie das Networking am Veranstaltungsort sein wird). Um sicherzustellen, dass die Bash / WSL-Demo für den Git-Teil funktioniert, und um den Zugriff auf Windows-Dateien auf dem lokalen PC zu demonstrieren, habe ich ein lokales Repo unter C: gitNetHack auf dem Windows-PC eingerichtet. Um das in WSL zu klonen, habe ich Folgendes ausgeführt:
$ git –clone file:///mnt/c/git/NetHack
Diese Befehlszeile wies git an, das file:// protocol zu verwenden und das Repo in /mnt/c/git/NetHack zu klonen. Sie können auf ähnliche Weise auf alle Ihre Windows-Dateien zugreifen.Warnung: Wie bei jeder Konsole können Sie Dateien in Ihrem Windows-Dateisystem von Bash aus ändern / löschen, wenn Sie nicht vorsichtig sind. Zum Beispiel können Sie so etwas wie das unten tun und am Ende ein gutes Stück Ihrer Windows-Installation auslöschen, vorausgesetzt, das Windows-Konto, unter dem Sie ausgeführt werden, hat die Rechte dazu:
$ rm -rf /mnt/c/ <stark></stark>
Ich bringe das zur Sprache, weil Linux-Befehle für viele von uns neu sind, während Windows-Konsolenbefehle sind nicht.
Die Magie, die diese Dateisystemintegration ermöglicht, heißt DrvFs. Wenn Sie mehr über das Dateisystem und seine Funktionsweise in der WSL erfahren möchten, hat das WSL-Team einen großartigen Blogbeitrag mit allen Details zusammengestellt.
Natürlich ist der Dateisystemzugriff nur ein Teil der Geschichte. Viele Entwicklungsaufgaben beinhalten den Zugriff auf Remote-Ressourcen über HTTP oder andere Netzwerkprotokolle.
HTTP-Anfragen stellen
Es ist oft hilfreich, einen REST- oder einen anderen HTTP- (oder FTP-) Aufruf von einem Skript oder einer Befehlszeile aus zu tätigen, anstatt von einem kompilierten Programm oder einer Webseite. Genau wie die meisten Linux-Distributionen enthält WSL Standarddienstprogramme wie curl und wget für HTTP- und andere Netzwerkaufrufe. Hier ist beispielsweise der REST-Aufruf von GitHub, um meine Profilinformationen mithilfe von curl abzurufen:
Sie können dies mit Bash-Skripten kombinieren, um Schnelltestclients für REST-APIs oder Dienstprogramme zum Pingen von Webseiten auf Servern zu erstellen und den Status zu melden. Sie können die Ausgabe einfach in eine Datei umleiten, anstatt sie auf dem Bildschirm anzuzeigen:
$ curl -i https://api.github.com/users/Psychlist1972> pete.json
Ich bin auch ein PowerShell-Benutzer und habe sogar einige interessante Erweiterungen erstellt, um Windows 10 MIDI in PowerShell zu verwenden und einige Dateibeschädigungen zu beheben, die Benutzern bestimmter Tonaufzeichnungshardware passiert sind. Als langjähriger .NET-Entwickler und Fan werde ich PowerShell weiterhin verwenden und erweitern, wie es für meine Projekte sinnvoll ist. PowerShell ist jedoch nicht die richtige Umgebung, um all diese Bash- und Linux-orientierten Open-Source-Dienstprogramme und -Beispiele im Web auszuführen. Ich möchte den einfachsten und reibungslosesten Weg verwenden, um jede Aufgabe zu erledigen, und manchmal bedeutet das, dass ich es in Bash mache.
Ich habe hier kaum an der Oberfläche gekratzt Bash, Bash Scripting, und die Aufgaben, die Sie von der Shell aus erledigen können. Bisher habe ich über Utility-Arbeit gesprochen, die nützlich, aber für die Entwicklung nebensächlich ist. Was ist mit der tatsächlichen Entwicklung und Kompilierung innerhalb der WSL? Das habe ich im Rahmen der Build Tour gezeigt.
Bash auf der Build Tour – NetHack
Anfang dieses Sommers gingen Microsoft-Sprecher um die Welt und demonstrierten einige der coolen neuen Entwicklerfunktionen in Windows und der Microsoft Cloud. Als Teil davon wollten wir die WSL auf unterhaltsame Weise demonstrieren, aber auch auf eine Weise, auf die sich Entwickler beziehen würden.
Ich persönlich wollte zeigen, wie man git und einige traditionelle Konsolenentwicklungstools verwendet. Als ich die Bash-Demo schrieb, habe ich die Grundlagen („Hello World“ in Python und Ruby) aufgenommen, wollte aber etwas abseits der ausgetretenen Pfade zeigen.
Ich dachte an meine College-Zeit zurück, als wir zwischen Unix (DEC Ultrix und SunOS) und VAX/VMS hin und her sprangen. Zu dieser Zeit war Unix fast ausschließlich eine erste Befehlszeilenumgebung. An meiner Schule haben die meisten X-Benutzer an der Handvoll Grafik-Workstations gerade mehrere Terminal-Sitzungen in verschiedenen Fenstern geöffnet, aber mit einem super coolen Mondphasen-Hintergrundbild im Hintergrund. Die Mehrheit der Schüler benutzte VT-220-Terminals für ihre Sitzungen (die Schule war nicht weit von Boston entfernt, daher hatten wir viele DEC-Geräte).
Zu dieser Zeit gab es zwei große Spiele, die alle Informatik-Majors spielten: MUDs (hauptsächlich lpMUD und das damals brandneue DikuMUD) und NetHack. NetHack und andere Roguelikes gelten als einige der einflussreichsten Spiele der Geschichte und sind die Vorläufer der vielen Dungeon-Crawl- und Rollenspiele, die wir heute genießen.
NetHack hat eine lange Geschichte und enthält heute mehr als hunderttausend Zeilen Jahrzehnte alten * nix-Codes sowie moderne Ergänzungen. Das Spiel selbst verwendet Flüche (oder seine Ersetzungen) für die Terminalinteraktion, erfordert Lex und Yacc (oder Flex und Bison) und cc (oder gcc) sowie eine Reihe anderer Entwicklertools zum Erstellen.
Es ist in C geschrieben und enthält eine Reihe von stark skriptgesteuerten Konfigurationsprogrammen, die für die Bourne-Shell geschrieben wurden. Ich dachte, es wäre ein guter und lustiger Test, um die Entwicklerfähigkeiten von WSL und Bash unter Windows 10 zu trainieren. Aufgrund der Verwendung von Flüchen (libncurses unter Linux und WSL) können auch die Funktionen der in das Windows 10-Konsolenfenster integrierten Terminalemulation demonstriert werden.
Früher dauerte der Aufbau von NetHack aus dem Quellcode auf unserem bewährten Ultrix-Server ewig. Jetzt dauert es eine Minute auf meinem PC und es ist alles fertig. Ich liebe Fortschritt. Es gibt einfache und schwierige Möglichkeiten, NetHack unter Linux oder WSL zu konfigurieren und zu kompilieren. Um Ihnen etwas Zeit zu sparen, werde ich Sie durch den einfachen Ansatz führen.
Voraussetzungen
Aktualisieren Sie zunächst Ihre WSL-Umgebung, um sicherzustellen, dass Sie auf den neuesten Softwarekatalog verweisen und auch die Basisinstallation auf dem neuesten Stand haben. Es ist im Allgemeinen eine gute Idee, dies vor der Installation neuer Pakete zu tun.
$ sudo apt update
$ sudo apt upgrade
Installieren Sie dann die wesentlichen Entwicklertools. Der einfachste Weg, dies zu tun, ist die Verwendung des Pakets build-essential. Dazu gehört fast jedes Konsolenprogramm, das ein Linux-Entwickler zum Erstellen von Apps in C / C ++ benötigt.
$ sudo apt install build-essential
Dies wird einige Minuten dauern. Wenn Sie genauer sein möchten, können Sie gcc, gdb, make, flex, Bison und die anderen in den NetHack-Dokumenten genannten Tools separat installieren. Aber wenn Sie ein Entwickler sind, werden Sie wahrscheinlich irgendwann die anderen Tools wollen. Das build-essential-Paket nimmt das Rätselraten aus der Toolset-Installation.
Als nächstes installieren Sie git. Wie Sie sich vorstellen können, ist es so einfach wie:
$ sudo apt install git
Genau wie bei Linux können Sie eine git PPA hinzufügen, um eine neuere Version zu erhalten, aber diese wird für das tun, was wir hier tun.
Und schließlich wollen wir curses (eigentlich ncurses) für die Interaktion mit dem Konsolenbildschirm installiert haben:
$ sudo apt install libncurses-dev
Sobald Sie diese Schritte ausgeführt haben, können Sie NetHack erstellen.
NetHack bauen
Das offizielle NetHack-Repo ist auf GitHub. Zuerst schnappen wir uns das und legen es in einen Unterordner außerhalb unseres Home-Verzeichnisses.
$ cd ~
$ git clone http://github.com/NetHack/NetHack
Da NetHack so viele verschiedene Betriebssysteme unterstützt, müssen Sie Folgendes tun: einige grundlegende Konfiguration, um es zu sagen, dass wir Linux auf der Kommandozeile verwenden und freie und Open-Source-Tools für Unix-Klassiker wie gcc für cc ersetzen.
Wie bereits erwähnt, gibt es verschiedene Möglichkeiten, dies zu tun. Jemand war nachdenklich genug, um einen Großteil der Konfiguration in einer Hints-Datei zu kapseln. Vertrauen Sie mir hier, die Verwendung der Hints-Datei erspart Ihnen stundenlange Kopfschmerzen bei der Konfiguration im Vergleich zu den im GitHub-Repo beschriebenen Schritten. Es ist nicht sofort offensichtlich, wie man die Hinweise verwendet, wenn man sich die README-Dateien oder andere Dokumentationen ansieht, also hier geht es los:
$ cd NetHack/sys/unix
$ ./setup.sh hinweise/linux
Das wird das Makefile einrichten, um die richtigen Werkzeuge, Bibliotheken und Pfade für Linux zu verwenden. Die Setup-Skripte sind nicht-triviale Shell-Skripte, die eine Menge Konfiguration tun; Ich bin glücklich zu berichten, dass sie perfekt in WSL arbeiten. Wenn Sie neugierig auf Shell-Skripte sind, stellen Sie sicher, dass Sie sie in Ihrem bevorzugten Editor öffnen.
Dann der endgültige Build:
$ cd ~/NetHack
$ make all
Nach dem Build möchten Sie die Installation erstellen. Hier geht es wirklich nur darum, die ausführbare Datei an einen bekannten Speicherort zu kopieren:
$ make install
Dadurch erhalten Sie einen Ordner mit dem Namen ~/nh . Nethack befindet sich im Verzeichnis ~/nh/install/games und heißt einfach nethack. Um es auszuführen, navigieren Sie zu diesem Verzeichnis (oder geben Sie den vollständigen Pfad ein) und geben Sie Folgendes ein:
$ cd ~/nh/install/games
$ nethack
Sobald Sie dies tun, wird der Bildschirm gelöscht und Sie werden aufgefordert, NetHack zu spielen. Beachten Sie, dass alles, was hier getan wird, genauso ist wie bei einer Vanille-Ubuntu-Linux-Installation; Es wurde nichts Windows-Spezifisches benötigt.
NetHack spielen
Angesichts der Einschränkungen eines Konsolenspiels und der Komplexität von NetHack kann es etwas dauern, bis man sich darauf einlässt. Zu sagen, dass es zunächst ein wenig kryptisch ist, wäre eine Untertreibung, aber ich habe noch nie einen Entwickler getroffen, der vor einer guten Herausforderung zurückschreckte.
Die Navigationstasten sind die gleichen wie in VI(M), also HJKL für Links, unten, oben und rechts. Zum Beenden finden Sie die Treppe auf der obersten Ebene und verwenden Sie sie, oder drücken Sie Strg-C, um das Beenden des Spiels zu erzwingen.
In NetHack sind Sie das @ -Symbol. Jede Ebene besteht aus Räumen, Fluren, Türen und Treppen nach oben und unten. Monster, Schätze und Gegenstände werden als verschiedene ASCII-Zeichen dargestellt, mit denen Sie beim Spielen vertraut werden. Wie bei Roguelikes üblich, gibt es keine Ersparnis und Sie erhalten nur ein Leben. Wenn du stirbst und erneut spielst, wird der Dungeon zufällig neu generiert und die Gegenstände werden verschlüsselt.
Der Sinn von NetHack ist es, die Dungeons zu überleben, Gold und Gegenstände zu sammeln und so viele Monster wie möglich zu töten. Es gibt Ziele, die weit darüber hinausgehen, aber Sie müssen eine Weile spielen (oder nachlesen), um sie zu entdecken. Regeln lose folgen Dungeons & Drachen Regeln für Waffen, Fähigkeiten, etc.
Hier ist ein Screenshot von NetHack mit drei Räumen und zwei Korridoren. Die Treppe hinauf befindet sich im oberen linken Raum, und ich bin derzeit im oberen rechten Raum, zusammen mit einigen Schätzen und anderen Gegenständen.
Wenn Sie keine Farbe in Ihrer Version haben, erstellen Sie eine Datei mit dem Namen ~/.nethackrc und fügen Sie Folgendes ein:
OPTIONS=color:true,dark_room:true,menucolors:true
.: Wenn ASCII-Zeichengrafiken nicht Ihr Ding sind, Ihnen das Konzept jedoch gefällt, suchen Sie im Microsoft Store nach „Roguelike“ und genießen Sie die visuelleren Spiele in diesem beliebten Genre.
Sicher, NetHack ist eine uralte Codebasis, die uns in einem bestimmten Alter am herzen liegt. Der Aufbau erfordert jedoch eine beträchtliche Anzahl wichtiger Entwicklertools und -funktionen von * nix-Betriebssystemen sowie die Terminalemulation. Es ist großartig zu sehen, dass alles, von gcc, gdb, make, Bison und flex bis hin zu modernerem Git, heute auf WSL funktioniert.
Wenn Sie die obige Demo wie auf der Build Tour sehen möchten, sehen Sie sich diese Keynote von der Build Tour Canada an. Die WSL-Demo beginnt um 6:20 Uhr. (Und ja, es ist Windows-Subsystem für Linux, trotz allem, was ich in diesem Video gesagt habe.)
https://channel9.msdn.com/Events/Build/Build-Tour-2016-Toronto/Keynote
Ich hoffe, ihr genießt euren Ausflug in die Dungeons von NetHack!
C und C ++ sind großartig, ebenso wie all diese klassischen Entwicklertools. Sie können sogar viel mit einfachen Bash-Skripten machen. Aber viele Entwickleraufgaben beinhalten Skriptsprachen wie Python.
Python
Sie können Beispiel-Python-Skripte überall im Web finden, was bedeutet, dass Python für viele Entwickler sowohl beliebt als auch nützlich ist. Die meisten dieser Beispiele gehen natürlich davon aus, dass Sie Linux ausführen. In der Vergangenheit bedeutete dies, sie in einer Linux-Installation entweder auf einem anderen Computer, einer VM oder einer Boot-Option auszuführen oder alle erforderlichen Änderungen vorzunehmen, um sie mit den Windows-Distributionen von Python auszuführen.
Dies sind keineswegs unüberwindbare Probleme, aber im täglichen Leben eines Entwicklers summieren sich solche Reibungen. Mit WSL haben Sie immer ein kompatibles Python-fähiges Subsystem und Shell zur Verfügung, ohne Ihre Zone verlassen zu müssen.
Um die neueste Entwicklungsversion von Python und das Python-Paketinstallationsprogramm „pip“ zu installieren, führen Sie an der Bash-Shell–Eingabeaufforderung Folgendes aus:
$ sudo apt install python-pip python-dev
$ sudo pip install -upgrade pip
Nachdem Python installiert ist, wollte ich zeigen, wie Sie ein typisches Linux-Python-Beispiel von einer Site abrufen und direkt damit arbeiten können. Ich ging zur Activestate Python-Rezeptseite und wählte das Top-Python-Beispiel aus. OK, ich habe gelogen. Die oberste ist für das Drucken von Namen von ganzen Zahlen, und das klang nicht super aufregend, also wählte ich die zweite: Tetris. Ich dachte, Sie alle sehen jeden Tag genug praktische Python, also werde ich für ein anderes Spiel gehen.
Ich öffnete nano, kopierte die 275 Zeilen Python-Code direkt von der Seite in meinem Browser unter Windows, fügte sie in nano in meinem WSL-Konsolenfenster ein, speicherte sie als tetris.py und dann einfach ausgeführt:
$ python tetris.py
Das löschte sofort den Bildschirm und brachte eine grundlegende Tetris-Anwendung auf. Wie bei NetHack verwenden Sie die gleichen VI-Standard-Bewegungstasten. (Zurück in den Tagen vor der Maus und WASD-Tasten für Bewegung, war die rechte Hand auf der Tastatur HJKL Tasten.)
Wie bereits erwähnt, können Sie Python natürlich unter Windows ohne WSL ausführen. Für schnelle Dienstprogramme und Beispiele ist es jedoch ein großer Produktivitätsschub für Entwickler, ein Linux-Python-Beispiel ohne Änderungen ausführen zu können, indem einfach Code aus einer bekannten Quelle eingefügt wird.
Das ist der Punkt, wirklich. Es geht nicht darum, andere Windows-native Tools wie Python, PowerShell, C # und mehr zu ersetzen. Es geht darum, Reibungsverluste zu beseitigen, wenn Sie in einem modernen Entwicklungsworkflow nur schnell und effizient arbeiten müssen.
Zwischen Bash, Python und allen nativen Befehlszeilen-Linux-Entwicklungstools hat WSL meine Linux-Workflow-Anforderungen abgedeckt. Es ist kein Linux-Server oder gar ein vollständiger Linux-Client. Stattdessen ist es genau das, was ich brauche, um die tägliche Reibung zu reduzieren und die Entwicklung unter Windows noch produktiver und angenehmer zu gestalten.
Zurücksetzen der WSL-Umgebung
Experimentieren Sie. Wenn Sie Ihre WSL-Installation beschädigen, ist die Neuinstallation einfach genug. Achten Sie darauf, Kopien von allem Wichtigen aufzubewahren.
C:> lxrun.exe /deinstallieren /voll
C:> lxrun.exe /install
Wie benutzt du Bash und die WSL?
Wir hoffen, dass WSL und insbesondere Bash unter Windows 10 Ihnen dabei helfen, ein wenig effizienter zu sein und ein wenig Reibung von Ihren täglichen Entwicklungsaufgaben zu entfernen.
Wie verwenden Sie die WSL unter Windows 10? Wie möchten Sie es verwenden?
Das Team leistet viel Arbeit, um sicherzustellen, dass WSL ein großartiges Konsolen-Tool für Entwickler ist. Wenn Sie Feedback haben oder auf Probleme stoßen, empfehlen wir Ihnen, die GitHub-Problemseite sowie die UserVoice-Feedback- und Abstimmungsseite zu überprüfen. Wir würden wirklich gerne von Ihnen hören.
Zusätzliche Referenzen und weiterführende Literatur
Linux Shell Scripting ist ein riesiges Thema und es gibt viele großartige Tutorials im Web. Wenn Sie damit noch nicht vertraut sind und mehr erfahren möchten, funktionieren die meisten Bash-Tutorials für Sie. Hier ist einer, mit dem ich anfangen soll.