Als jemand, der WSL (Windows Subsystem for Linux) von Anfang an verwendet, erkläre ich die Vorteile von WSL für Linux- und Programmiereranfänger.
Vor ein paar Jahren wurde mit dem Anniversary Update von Windows 10 das Windows Subsystem for Linux eingeführt. Auch bekannt als Bash on Ubuntu on Windows, allgemein WSL genannt. Um genau zu sein, bezieht sich WSL nicht nur auf Ubuntu/Bash, sondern umfasst auch andere Linux-Distributionen wie Debian und Kali Linux. In der Realität ist es jedoch in Ordnung, WSL als Bash on Ubuntu on Windows zu betrachten.
Wie der Name schon sagt, ist WSL ein System zum Ausführen von Linux unter Windows. Sie können fast alle standardmäßig verfügbaren Linux-Befehle verwenden und mit apt auch externe Pakete wie Python installieren und verwenden.
Zusätzlich können Sie die Standardausgabe von in Windows integrierten Befehlszeilen wie cmd.exe zur Verarbeitung an WSL übergeben und umgekehrt.
Es ist bekannt, dass macOS auch eine ähnliche Befehlszeile, Bash, hat, aber macOS’s Bash ist nicht vollständig. (WSL ist allerdings auch nicht vollständig.) Entwickler, die zuvor macOS nutzten, um Bash zu nutzen, könnten jetzt eine Migration zu Windows in Betracht ziehen.
Es gibt jedoch eine Sache, die mit Sicherheit gesagt werden kann.
WSL hat die Konventionen von Windows 10 vollständig zerschlagen.
Warum WSL verwenden
Für diejenigen, die nicht regelmäßig mit Linux oder der Befehlszeilenschnittstelle (CLI) arbeiten, mag dies schwer zu erfassen sein, aber CLI-Schnittstellen sind sehr nützliche Software. Für einfache Programmierung ist es oft schneller, eine eigene Lösung zu erstellen, als Software zu suchen und herunterzuladen.
CLI arbeitet hauptsächlich mit Dateioperationen und I/O. Zum Beispiel Dinge wie diese:
** Möchten Sie Hunderte von Dateien nach einer Regel generieren. (1.txt enthält den Text 1, 2.txt enthält den Text 2, usw.) **
seq 1 3 | xargs -I {} bash -c “echo {} > {}.txt”
** Möchten Sie den Pfad der neuesten Datei im Downloads-Ordner in die Zwischenablage kopieren **
find /mnt/e/_downloads/ -type f -printf ‘%T+ %p\n’ | sort -r | head -n 1 | sed -Ee ‘s/^.(/mnt.)/\1/g’ | clip.exe
** Möchten Sie alle mp4-Dateien in einem Ordner als wav-Dateien kopieren **
for i in *.mp4; do ffmpeg -i “$i” -vn -acodec pcm_s16le -ar 44100 -ac 2 “$i.wav”; done
Alle .mp4-Dateien in einem Ordner in .wav konvertieren
** Möchten Sie Wasserzeichen zu Bildern hinzufügen **
convert -size 280x160 xc:none -fill grey \
-pointsize 24 \
-gravity NorthWest -draw "text 10,10 'https://fumiya.org'" \
-gravity SouthEast -draw "text 5,15 'https://fumiya.org'" \
-channel alpha -evaluate multiply 0.30 \
miff:- |\
composite -tile - /mnt/c/_sharex/Screenshots/2019-02/ShareX_ScreenShot_6740af35-df45-4114-84d7-1ce0a124f851.png wmark_text_tiled.png
Bilder mit Wasserzeichen aus CLI mit ImageMagick erstellen
Sobald Sie diese Dinge programmieren können, können Sie die meiste kleine Software erstellen. Sie können mit einem kleinen Aufwand zu Ihren bevorzugten Einstellungen umschreiben. Bei kommerzieller Software können Sie nur vorhandene Konfigurationen ändern.
CLI-Programmierung ist der Grundstein von allem und sehr wichtig. Selbst für die Programmierung mit Ruby oder Python ist CLI-Wissen erforderlich. CLI ist nicht nur praktisch, sondern auch nützlich.
Die CLI in Linux’s Ubuntu wird Bash genannt, und WSL ist, wie der alternative Name Bash on Ubuntu on Windows nahelegt, die Bash-Sprache. Diese Art der Dateimanipulation-Programmierung mit Bash wird unter Windows durch WSL ermöglicht.
Wenn Sie derzeit täglich Windows verwenden, noch nie Linux verwendet haben oder damit nicht vertraut sind, gibt es umso mehr Gründe, WSL auszuprobieren.
Tatsächlich existieren solche Befehlszeilen nicht nur in Linux, sondern auch in Windows mit cmd.exe und powershell.exe. Sie können mit dieser Befehlszeilensoftware ähnliche Dinge tun. Der Code ist jedoch völlig anders, sodass das, was Sie lernen müssen, völlig unterschiedlich ist. Wenn Sie in Zukunft weiter programmieren möchten, Systemingenieur werden möchten, mit Linux arbeiten möchten oder interessantere Dinge erstellen (schreiben) möchten, empfehle ich, Bash (Linux) statt PowerShell zu wählen.
Warum WSL allein nicht ausreicht
Obwohl WSL allmächtig erscheint, hat es Nachteile.
Beachten Sie zunächst, dass nicht alles möglich ist.
Die obige Antwort besagt, dass GUI-Anwendungen nicht unterstützt werden sollen, aber sie sind möglich, wenn Sie einen X-Server verwenden. Das heißt, es stimmt, dass nicht alle Anwendungen verwendet werden können.Can I run ALL Linux apps in WSL? No! WSL is a tool aimed at enabling users who need them to run Bash and core Linux command-line tools on Windows.
WSL does not aim to support GUI desktops or applications (e.g. Gnome, KDE, etc.) Frequently Asked Questions (FAQ) | Microsoft Docs
Lassen Sie mich ein konkretes Beispiel geben. Erstens “Ruby on Rails”. Ich hatte ziemlich lange mit Rails gearbeitet, also versuchte ich natürlich, es auf WSL auszuführen. Aber das war ein Fehler.
Was ist als Ergebnis passiert? Es traten Fehler auf. Unlösbare, nicht reproduzierbare Fehler.
Der Missing helper file helpers/c:/pg/rails/tool/app/helpers/application_helper.rb_helper.rb-Fehler ist auf GitHub immer noch ungelöst. Er tritt plötzlich auf WSL auf, ohne zu wissen, was ihn verursacht.
Die Neuinstallation von Rails löst dieses Problem nicht. Es ist diese Art von sehr lästigem Bug.
Solche Fehler haben mehr als genug Macht, um Anfänger dazu zu bringen, aufzugeben und mit dem Programmieren aufzuhören.
Was noch? Die Unfähigkeit, das fuse-Paket zu verwenden, ist ebenfalls ein großes Problem.
Add FUSE (Filesystem in Userspace) support in WSL – Welcome to the Windows developer feedback site!
Was ist gut daran, fuse verwenden zu können? Erstens können Sie sshfs verwenden. Dies ist Software zum Mounten entfernter Linux-Dateisysteme unter Linux. Sie können von WSL aus auf entfernte Dateien zugreifen und diese verarbeiten.
Wie Sie sehen, hat WSL viele Mängel und Dinge, die es nicht kann. Um diese zu kompensieren, ist die einzige Lösung, pures Linux zu verwenden.
Warum nicht ein Computer mit installiertem Linux
Ich habe so weit erklärt, aber einige von Ihnen denken vielleicht:
** Nein, es gibt keinen Vorteil darin, sich die Mühe zu machen, eine Linux-Umgebung unter Windows zu erstellen. Verwenden Sie einfach normal Linux (Ubuntu). **
So dachte ich auch einmal.
Obwohl ich hauptsächlich Windows 10 verwende, arbeitete ich tatsächlich über ein Jahr lang an einem Computer mit installiertem Linux. Wenn Sie unter Linux arbeiten, gibt es tatsächlich keine Bugs, keine Einschränkungen, und es ist keine schlechte Wahl. Ich empfehle es jedoch nicht. Warum?
Weil Linux viele Bugs hat. Zunächst einmal, nachdem ich Windows fast 7 Jahre lang verwendet habe, spüre ich tief die Stabilität von Windows. Die Umgebung bricht nicht zusammen, Daten verschwinden nicht. Was ist mit Linux? Ich hatte mindestens zweimal Startprobleme. Die meisten Dinge können gelöst werden, wenn man sie nachschlägt. Das gilt, wenn Sie die Fähigkeit haben, sie zu lösen (hauptsächlich Englischkenntnisse), aber es gibt dennoch Fälle, die nicht gelöst werden können. Bei Windows benötigen Sie nicht viel Englischkenntnisse, um etwas nachzuschlagen oder Fragen zu stellen, und wie oben erwähnt, ist das Risiko, dass die Umgebung zusammenbricht, gering.
Und hier ist eine grundlegende Prämisse, die nicht vergessen werden sollte: Linux ist ein für die Entwicklung konzipiertes Betriebssystem, nicht zum Ausführen von Middleware wie Excel für Arbeit oder allgemeine Aufgaben. Heutzutage sind benutzerfreundliche Linux-Distributionen entstanden und die Entwicklung hat Fortschritte gemacht, sodass die Verwendung als kostenlose Alternative zu Mac oder Windows eine Option ist, aber in Wirklichkeit ist es immer noch in Arbeit.
Einige Menschen mögen sich dagegen sträuben, das Beliebte zu wählen, aber bei OSS (Open Source Software) ist Beliebtheit alles, wenn es um Auswahlkriterien geht. (Zumindest in meiner Philosophie seit über 3 Jahren.) Beliebte Dinge haben viele Entwickler und aktive Entwicklung. Projekte mit aktiver Entwicklung finden und lösen auch Bugs schnell. Kennen Sie die Verteilung von Linux-, Mac- und Windows-Benutzern? Grob gesagt ist es 1:3:7. Denken Sie an die Entwicklungseffizienz von Linux als 7-mal langsamer als die von Windows, und es wird einfach.
Zusammenfassend empfehle ich nicht, Linux als Grundlage für alle Umgebungen zu verwenden. Zumindest nicht ab 2019.
Ich überspringe hier die Details, da es vom Thema abweicht, aber bei der Verwendung von Linux wählen wir Optionen wie Docker oder VirtualBox. Mit Docker bauen wir nicht auf Windows, sondern über SSH auf purem Linux. (Ich empfehle Docker auf WSL (Windows) nicht, da es zu ähnlichen Ergebnissen wie bei Ruby on Rails führt, wie bereits erwähnt.)
WSL ist nicht allmächtig. Es liegt jedoch in einem Bereich, der für die praktische Nutzung keine Probleme bereitet. Auch als einfache Gelegenheit, praktische Erfahrungen mit Linux zu sammeln, ist die Einstiegshürde für Nicht-Programmierer gering. Es gibt keinen Grund zu zögern, mit WSL zu beginnen. Wenn Sie in Zukunft mit Linux, Programmierung oder Systemtechnik arbeiten möchten, wird WSL ein guter Übungspartner für Sie sein.
Vielen Dank für Ihre Aufmerksamkeit.
Der folgende Artikel erklärt die Installation von WSL.
WSL bash on ubuntu on windows Installationsverfahren
Empfohlene WSL-Artikel sind unten:
[Windows-Ausführungsdateien aus WSL bash ausführen](https://yuis-programming.com/?p=690)
[Bash on Windows (WSL) Ausgabe in Zwischenablage kopieren](https://yuis-programming.com/?p=1045)
[Grafische Fenster-Apps mit Ubuntu VPS -> WSL -> Windows X11-Weiterleitung öffnen](https://yuis-programming.com/?p=1351)
[Eine einfache Timer-App mit WSL Bash und PowerShell erstellen](https://yuis-programming.com/?p=1514)
Empfohlene Bash-Artikel sind unten:[Internetgeschwindigkeit in Bash messen (Download/Upload)](https://yuis-programming.com/?p=1361)
[So deaktivieren Sie die Freeze-Funktion mit Bash ctrl-s](https://yuis-programming.com/?p=1239)
[Befehle ausführen, wenn sich Dateien mit Bash inotifywait ändern](https://yuis-programming.com/?p=1363)
[bash: Bildkonvertierung mit imagemagick optimieren](https://yuis-programming.com/?p=339)