[LINUX] Auf Wiedersehen zur Eingabeaufforderung in WSL, VSCode und Windows Terminal

Ich bin von macOS zu Windows zurückgekehrt und habe PowerShell Core verwendet, weil dort "Eingabeaufforderung, zumindest PowerShell" stand. Übrigens fiel mir ein, dass es WSL (Windows Subsystem for Linux) gab. Ich habe mich entschieden, WSL vollständig für die Entwicklungsumgebung zu verwenden. Notieren Sie sich daher das Verfahren.

Die Entwicklungsumgebung bezieht sich hier auf die Entwicklung des Frontends der Webanwendung mit Angular und des Backends mit node.js (und da ich mit Linux, WSL, Distribution und Shell nicht wirklich vertraut bin Ich bin zuversichtlich, dass es verwirrt ist.)

1. Einführung der WSL

Führen Sie die WSL unter Bezugnahme auf ein.

2. Einführung in Windows Terminal

Windows Terminal ist ein Terminal-Client für Windows, und obwohl es sich noch in der Vorschau-Version befindet, finde ich es toll, weil es einfach zu bedienen und hochgradig anpassbar ist.

Wenn Sie WSL installieren, wird in Ihrem Windows-Terminal ein zusätzliches Profil mit dem Namen "Ubuntu" angezeigt. Um Ubuntu Terminal beim Starten von Windows Terminal standardmäßig zu öffnen, drücken Sie Strg +, um profile.json zu öffnen und defaultProfile zu ändern.

Andere,

Verändert sich. Windows Terminal macht Spaß, da Sie es auf verschiedene Arten anpassen können, indem Sie diese profile.json bearbeiten. Als Referenz werde ich meine Einstellungen veröffentlichen.

profiles.json

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",

    "profiles":
    [
<Ausgelassen>
        {
            "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
            "hidden": false,
            "name": "Ubuntu",
            "colorScheme": "Campbell",
            "cursorShape": "emptyBox",
            "acrylicOpacity": 0.85,
            "useAcrylic": true,
            "cursorColor": "#FFFFFF",
            "fontFace": "Cascadia",
            "fontSize": 12,
            "startingDirectory": "C:\\dev",
            "source": "Windows.Terminal.Wsl"
        }
    ],
    "schemes": [
        {
            "name": "Campbell",
            "foreground": "#F2F2F2",
            "background": "#0C0C0C",
            "colors": [
                "#0C0C0C",
                "#C50F1F",
                "#13A10E",
                "#C19C00",
                "#0037DA",
                "#881798",
                "#3A96DD",
                "#CCCCCC",
                "#767676",
                "#E74856",
                "#16C60C",
                "#F9F1A5",
                "#3B78FF",
                "#B4009E",
                "#61D6D6",
                "#F2F2F2"
            ]
        }
<Ausgelassen>
    ],

    // Add any keybinding overrides to this array.
    // To unbind a default keybinding, set the command to "unbound"
    "keybindings": [
        { "command": "copy", "keys": [ "ctrl+c" ] },
        { "command": "paste", "keys": [ "ctrl+v" ] }
    ]
}

3. VScode-Standardterminal für WSL

Mit der Einführung der WSL hat sich "wsl" auch im Terminal von Visual Studio Code erhöht. Ändern Sie es daher mit "Strg + Umschalt + P" in "wsl" → "Terminal: Standard-Shell auswählen".

Es scheint, dass Sie das Terminal für jeden Arbeitsbereich wechseln können, indem Sie Terminal in ".code-workspace" angeben, aber ich empfehle es nicht, da es einige Umgebungen gibt, in denen wsl nicht enthalten ist.

4. VSCode-Taskausführung in WSL

Selbst wenn ich das Standardterminal von VScode in WSL ändere, scheinen die Aufgaben von VScode auf der Windows-Seite ausgeführt zu werden, und ich möchte sie auch auf der WSL ausführen. Um dies zu lösen, müssen Sie leider "WSL-abhängige Aufgaben" schreiben.

./vscode/tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "ng-serve",
      "type": "shell",
      "isBackground": true,
      "command": "ng serve",
      "problemMatcher": {
        "owner": "custom",
        "pattern": {
            "regexp": "^$"
        },
        "background": {
          "activeOnStart": true,
          "beginsPattern": ".*Angular Live Development Server.*",
          "endsPattern": ".*Compiled successfully.*"
        }
      }
    },
    {
      "label": "ng-serve-wsl",
      "type": "shell",
      "isBackground": true,
      "command": "\"ng serve\"",
      "options": {
        "shell": {
          "executable": "C:\\Windows\\System32\\wsl.exe",
          "args": [ "bash -ic" ]
        }
      },
      "problemMatcher": {
        "owner": "custom",
        "pattern": {
            "regexp": "^$"
        },
        "background": {
          "activeOnStart": true,
          "beginsPattern": ".*Angular Live Development Server.*",
          "endsPattern": ".*Compiled successfully.*"
        }
      }
    }
  ]
}

Zum Beispiel definiert das obige Beispiel task.json eine Aufgabe namens ng-serve zum Debuggen von Angular, funktioniert aber unter Windows Darüber hinaus gibt es eine Aufgabe namens "ng-serve-wsl" mit Einstellungen, die auf der WSL ausgeführt werden sollen.

Der Unterschied zwischen der WSL-Version besteht in den Informationen von wsl.exe, die in options: {} festgelegt sind. Dies ist die Eingabeaufforderung.

wsl.exe bash -ic "ng serve"

Entspricht der Ausführung. Das Wichtigste ist das Bash-Ausführungsargument -i, andernfalls wird .bashrc nicht gelesen (= PATH ist nicht gesetzt), sodass ng zu einem Befehl führt, bei dem kein Fehler gefunden wurde. Ich werde am Ende.

5. Erstellen Sie eine Entwicklungsumgebung auf der WSL-Seite

Für die Entwicklung erforderliche Tools wie git, node, npm, angle, python, aws-cli, firebase-cli usw. werden in die WSL gestellt. Für Ubuntu wird es normalerweise mit apt-get installiert.

Zusammenfassung und ein wenig lästiger (redundanter) Ort

Ich habe mich gefragt, ob ich bis WSL2 warten kann, aber es war sehr praktisch, es auch mit WSL1 zu verwenden.

Terminal und VSCode, die häufig während der Entwicklung verwendet werden, können jetzt fast ausgegeben werden, ohne zu wissen, dass es sich um Windows handelt. Die Skripte usw. sind fast die gleichen wie bei macOS, und es ist einfacher geworden, CI unter Linux zu proben.

Die Interoperabilität mit Windows ist höher als erwartet, und wenn ich dem Befehl ".exe" hinzufüge, kann ich den Windows-Befehl über die WSL ausführen, sodass ich das Gefühl hatte, den juckenden Ort (über die WSL) erreichen zu können. Sie sollten in der Lage sein, .NET-Apps zu erstellen, die nur unter Windows ausgeführt werden, indem Sie auf "msbuild.exe" klicken. Natürlich können Sie die Funktionsweise von .NET-Programmen überprüfen, die plattformübergreifend ausgeführt werden, indem Sie .NET Core zunächst auf die WSL-Seite stellen. Ist möglich).

Als etwas überflüssig,

Git-Anmeldeinformationen müssen in Win / WSL gespeichert werden

Manchmal drücke ich den Befehl git in bash, manchmal verwende ich eine Git-Client-App (wie GitKraken oder VSCode) und weiß, wie man den Anmeldeinformationsspeicher allgemein macht. Ich habe es nicht, also merke ich es mir vorerst in beiden.

Konvertieren eines Windows-Pfads in einen UNIX-Pfad

Um "den Pfadnamen in Windows Explorer und" cd "in bash zu kopieren", benötigen Sie einen Befehl ähnlich dem folgenden:

cd $(wslpath -u "C:\dev\hoge")

Sie können eine Windows-Pfadzeichenfolge mit der Funktion "wslpath" in einen UNIX-Pfad konvertieren, also beiße ich sie und verschiebe das Verzeichnis.

Die meisten anderen Mitglieder des Teams sind Windows

Wenn Sie ein Skript unter der Annahme schreiben müssen, dass es in der Umgebung funktioniert, müssen Sie PowerShell zusammen verwenden, um den Betrieb zu überprüfen, und schließlich müssen Sie den Knoten auch auf der Windows-Seite installieren. Nun, das ist eine Teamsituation. Trotzdem ist Windows Terminal einfach zu verwenden, da Sie sowohl WSL als auch PowerShell in Registerkarten verwalten können.

Eine andere Lösung oder ein Favorit

Angenommen, VSCode kann mithilfe von Remote --WSL Extension die gesamte Projektentwicklung in WSL durchgeführt werden. Sie werden es schaffen. Das oben beschriebene Terminal und die Aufgabenausführung sind alle.

Derzeit handelt es sich noch um eine Preivew-Version, daher ist die Stabilität ungewiss. Die WSL scheint langsam (subjektiv) zu sein, da es sich um eine Remote-Prämisse handelt. Die VS-Code-Erweiterung muss je nach Objekt für Remote weiter installiert werden. Ich habe es ein wenig versucht und auf Eis gelegt, weil es einige Punkte gibt, auf die ich neugierig bin.

Recommended Posts

Auf Wiedersehen zur Eingabeaufforderung in WSL, VSCode und Windows Terminal
Im Python-Befehl zeigt Python auf Python3.8
Bringen Sie Dateien in Windows zur WSL
Drücken Sie den Echo-Befehl im Mac-Terminal, um Hello World auszugeben
Ich habe den Befehl gegeben, einen farbenfrohen Kalender im Terminal anzuzeigen
Twitter-Streaming-Client zum Genießen im Terminal
Wie füge ich eine Anaconda Powershell-Eingabeaufforderung zum Windows-Terminal hinzu?
So starten Sie das Python-Projekt im Jahr 2020 (Windows WSL und Mac Common)
Verwenden Sie libsixel, um Sixel in Python auszugeben und das Matplotlib-Diagramm an das Terminal auszugeben.
Jedi-vim-Verknüpfungsbefehl, mit dem Sie auf die Definitionsquelle und das Definitionsziel in Python verweisen können
So führen Sie eine Python-Datei an einer Windows 10-Eingabeaufforderung aus
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
Lösung für das Problem, dass die Anzeige beschädigt ist, wenn der Befehl .exe in der while-Schleife in wsl2 enthalten ist
[sh] Das Speichern der Befehlsausführung führt zu Variablen
Wiederholen Sie mit While. Skript zum Twittern oder Suchen vom Terminal aus
Erfassen Sie das Betriebsprotokoll automatisch im Terminal, wenn Sie sich bei Linux anmelden
Geben und meinen Sie die Einschränkungsoption in scipy.optimize.minimize
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
[EC2] So installieren und laden Sie chromedriver über die Befehlszeile herunter
Informationen zum Verknüpfen von Visual Studio Code für Windows und WSL
[Fenster + Anakonda] Aktiviert die Umgebung automatisch, wenn die Eingabeaufforderung gestartet wird
So zeigen Sie Bytes in Java und Python auf die gleiche Weise an
Gründe, warum die Tool- / Umgebungsküche den Haupt-PC von Linux auf Windows + WSL2 und Arbeitsnotizen geändert hat
Programmieren, um in der Welt zu kämpfen ~ 5-1
Programmierung, um in der Welt zu kämpfen ~ 5-5,5-6
Programmieren, um in der Welt zu kämpfen 5-3
Python 3.6 unter Windows ... und zu Xamarin.
Programmierung für den Kampf in der Welt - Kapitel 4
Befehl [linux] kill, um den Prozess abzubrechen
Probieren Sie Cython in kürzester Zeit aus
Programmieren, um in der Welt zu kämpfen ~ 5-2
Ergänzung zur Erklärung von vscode
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
Ersetzen Sie den Verzeichnisnamen und den Dateinamen im Verzeichnis zusammen mit einem Linux-Befehl.
Erstellen Sie Verknüpfungen, um Python-Dateien auf dem Terminal mit VScode auszuführen
Abrufen, Testen und Senden von Testfällen im AtCoder-Wettbewerb über die Befehlszeile
[Linux] Ein Befehl zum Abrufen einer Liste der in der Vergangenheit ausgeführten Befehle
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Ich möchte einen beliebigen Befehl im Befehlsverlauf von Shell belassen
Ich habe das VGG16-Modell mit Keras implementiert und versucht, CIFAR10 zu identifizieren
Ich habe versucht, die Netzwerkbandbreite und -verzögerung mit dem Befehl tc zu steuern