Ausführen einfacher WSL-Befehle

Abgeschlossen

Wir haben uns bereits einige einfache WSL-Verwaltungsbefehle angesehen, darunter wsl --install und wsl --list --online, sowie einige einfache Linux-Befehle, darunter mkdir zum Erstellen eines Verzeichnisses und sudo apt install <package> zum Installieren von Software. Aber lassen Sie uns noch ein paar weitere erkunden und versuchen, einige gängige Aufgaben zu erledigen.

Ausprobieren einiger einfacher WSL-Befehle

Die WSL-Befehle in dieser Schulung sind in einem Format aufgeführt, das von PowerShell oder der Windows-Eingabeaufforderung (Cmd.exe) unterstützt wird. Um diese Befehle an einer Bash-Befehlszeile in einer Linux-Distribution auszuführen, müssen Sie wsl durch wsl.exe ersetzen. Das liegt daran, dass WSL vom Windows-Dateisystem als ausführbare Datei verwaltet wird. Aber ausführbare Windows-Dateien können auch unter Linux ausgeführt werden, sofern Sie die Dateierweiterung einschließen.

Öffnen Sie eine PowerShell-Befehlszeile und lassen Sie uns einige einfache WSL-Verwaltungsaufgaben mithilfe der WSL-Verwaltungsbefehle ausführen:

  1. Überprüfen Sie, welche WSL-Version installiert ist: wsl --version. Es wird eine Version für Folgendes aufgeführt:

    • WSL
    • der vom WSL verwendeten Linux-Kernel
    • die Version für WSLg, die Linux-Apps mit grafischer Benutzeroberfläche ausführt
    • die Version für MSRDC, die den Microsoft-Remotedesktopclient darstellt, der WSL unterstützt
    • die Versionen von Direct3D und DXCore, die für das Rendern von Grafiken verwendet werden
    • die Version von Windows, die Sie nutzen
  2. Verwenden Sie den Befehl wsl --update, um sicherzustellen, dass Sie über die neuesten WSL-Updates verfügen.

  3. Listen Sie die derzeit installierten Linux-Distributionen auf, indem Sie Folgendes eingeben: wsl --list --verbose.

  4. Prüfen Sie, welche Distributionen im Microsoft Store verfügbar sind. Verwenden Sie wsl --list --online, und versuchen Sie, eine neue Distribution zu installieren, indem Sie wsl --install <Distribution Name> eingeben. Bestätigen Sie, dass die Distribution installiert ist, indem Sie erneut den Befehl wsl --list eingeben.

  5. Versuchen Sie, die Linux-Standarddistribution von Ubuntu (oder was auch immer Sie zuerst installiert haben, wenn es nicht die Standarddistribution ist) in die Distribution zu ändern, die Sie gerade installiert haben, indem Sie diesen Befehl verwenden: wsl --set-default <Distribution Name>. Sie können sie mit demselben Befehl wieder zurücksetzen.

  6. Öffnen Sie die Bash-Befehlszeile (Ihrer als Standard festgelegten Linux-Distribution) im Startverzeichnis Ihres WSL-Dateisystems, indem Sie den Befehl wsl ~ aus PowerShell eingeben. Sie werden feststellen, dass Sie sich weiterhin in demselben Fenster der PowerShell-Befehlszeile befinden, aber Ihre Eingabeaufforderung wird in Bash geändert und sieht in etwa so aus: <user>@<CPU-name>:~$. Geben Sie den Befehl ein pwd, um zu bestätigen, dass der Verzeichnispfad jetzt etwa /home/<username> lautet. Geben Sie den Befehl explorer.exe . ein, um das Verzeichnis im Datei-Explorer von Windows zu öffnen (achten Sie auf den Punkt, der angibt, dass der aktuelle Verzeichnispfad geöffnet werden soll). Nach dem Öffnen können Sie bestätigen, dass der Dateipfad etwa wie folgt aussieht: \\wsl.localhost\Ubuntu\home\<username>.

Screen capture of PowerShell terminal with wsl ~ command entered showing path.

  1. Verlassen Sie die Bash-Befehlszeile, und kehren Sie mit exit zu PowerShell zurück. Rufen Sie den Befehl pwd erneut auf, um den Pfad anzuzeigen, in dem Sie sich gerade befinden. Er sollte etwa C:\Users\<username>\... lauten. Sie können also sehen, dass Sie zwischen dem Windows-Dateisystem (Laufwerk C:\) und dem Linux-Dateisystem (Netzwerklaufwerk \\wsl.localhost\<distro name>) umgeschaltet haben. Als Nächstes versuchen wir, das aktuelle Windows-Dateisystemverzeichnis in Bash zu öffnen, indem wir den Befehl wsl ohne ~ ausführen (was angibt, dass Bash im Linux-Basisverzeichnis geöffnet werden soll). Sie werden feststellen, dass der Verzeichnispfad jetzt /mnt/c/Users/<username>/... lautet, da Bash auf Ihren Windows-Dateisystempfad auf dem eingebundenen Laufwerk C verweist. Das Verzeichnis des Laufwerks C ist eingebunden, denn Sie sehen es jetzt innerhalb des Linux-Dateisystems. Weitere Informationen zum Arbeiten mit dem Windows- und Linux-Dateisystem in WSL werden in einer separaten Schulung behandelt, zu der Sie in der Zusammenfassung am Ende dieses Moduls einen Link finden.

Führen Sie wsl --help aus, um eine vollständige Liste der Befehle anzuzeigen.

Einfache Bash- und PowerShell-Befehle

Bash ist die standardmäßige Befehlszeilenschnittstelle (CLI) für Linux. Am Ende dieses Moduls finden Sie in der Zusammenfassung einen Link zu einer ausführlichen Einführung in Bash. PowerShell ist die Standardbefehlszeile für Windows (und ersetzt die vorherige Windows-Eingabeaufforderung). Beide können im Windows-Terminal gehostet werden, das an Ihre bevorzugten Einstellungen angepasst werden kann.

Die Bash-Befehlszeile unterscheidet sich zwar von der PowerShell-Befehlszeile (und der älteren Windows-Eingabeaufforderung), aber die Unterschiede zwischen den Befehlszeilen sind minimal. Mit WSL funktionieren die meisten Befehle in beiden gleich. In der Vergangenheit lautete der Befehl zum Auflisten von Dateien in einem Verzeichnis beispielsweise in einer Bash-/Linux-Umgebung ls und in einer PowerShell-/Windows-Umgebung dir, aber mit WSL können Sie beide Befehle austauschbar verwenden. Die für die Installation und Verwendung verfügbaren Hilfsprogramme unterscheiden sich zwischen Bash und PowerShell, aber nach der Installation können auch diese Tools austauschbar zwischen den Befehlszeilen verwendet werden. Sowohl Bash als auch PowerShell eignen sich für die Erstellung von Skripts zur Automatisierung von Aufgaben. Bash ist jedoch besser für die Automatisierung von Aufgaben unter Linux-Betriebssystemen geeignet, während PowerShell besser für Aufgaben unter Windows-Betriebssystemen geeignet ist.

Wir probieren jetzt ein paar einfache Bash-Befehle aus, die sowohl in Bash als auch in PowerShell funktionieren. Öffnen Sie eine Ubuntu-Befehlszeile (oder Ihre bevorzugte Linux-Distribution), und geben Sie diese Befehle ein:

  1. pwd: Dieser Befehl zum Ausgeben des Arbeitsverzeichnisses zeigt den Pfad des aktuellen, in der Befehlszeile ausgewählten Verzeichnisses an.
  2. ls oder dir: Dieser Befehl listet den Inhalt des aktuellen Verzeichnisses auf. Einige Befehle enthalten Flags, die einen Vorgang ändern können. Geben Sie beispielsweise ls -l ein, um weitere Details zum Inhalt des Verzeichnisses aufzulisten, wie z. B. Größe, Besitzer und Datum der letzten Änderung. Geben Sie ls -a ein, um ALLE Inhalte eines Verzeichnisses einzuschließen, einschließlich aller versteckten Dateien. Bash schließt versteckte Dateien des Typs .bash_history, .bash_logout, .bashrc und .profile ein, die für Bash-Verwaltungsaufgaben und benutzerdefinierte Anpassungen nützlich sein können.
  3. cd: Der Befehl zum Ändern des Verzeichnisses muss von einer kleinen Information begleitet werden, die angibt, zu welchem Verzeichnis Sie wechseln möchten. Sie können einen Verzeichnisnamen angeben, z. B. cd project-folder, mit cd .. eine Verzeichnisebene höher gehen oder mit cd ~ zu Ihrem Basisverzeichnis wechseln.
  4. mkdir: Legen Sie ein neues Verzeichnis an, indem Sie diesen Befehl sowie den Namen des neuen Verzeichnisses eingeben. Beispielsweise mkdir new-folder.
  5. cp: Dieser Befehl dient zum Kopieren einer Datei oder eines Verzeichnisses. Zum Beispiel: cp file.txt oder cp folder-1. Wenn Sie eine Kopie erstellen, die denselben Namen wie eine vorhandene Datei hat, wird diese Datei automatisch ersetzt. Es wird daher empfohlen, das interaktive Flag -i anzugeben, das Sie warnt, ehe Sie eine vorhandene Datei löschen/ersetzen. Beispielsweise cp -i file.txt.
  6. rm: Dieser Befehl dient zum Entfernen einer Datei oder eines Verzeichnisses. Beispielsweise rm file.txt. Um in Bash ein Verzeichnis zu entfernen, müssen Sie das Flag -r hinzufügen. Beispielsweise rm -r folder-1. Wie beim Befehl cp empfiehlt es sich, das Flag -i zu verwenden, um zu bestätigen, was Sie löschen/entfernen möchten. Das Flag -f erzwingt das Entfernen und unterdrückt alle Eingabeaufforderungen. Es wird im Allgemeinen empfohlen, das Flag -f zu vermeiden, es sei denn, Sie wissen genau, was Sie tun.
  7. clear: Dieser Befehl leert den Bildschirm des Terminals.

Screen capture of Ubuntu terminal showing basic Bash commands.

Es gibt einige Tastenkombinationen, die sowohl in PowerShell als auch in Bash funktionieren, z. B. die Verwendung der NACH-OBEN-TASTE, um die zuletzt eingegebenen Befehle abzurufen.

Lassen Sie uns nun ein paar einfache Bash-Befehle ausprobieren, die in PowerShell nicht funktionieren.

  1. sudo: Mit dem „superuser do“-Befehl in Bash können Sie Ihr aktuelles Benutzerkonto für die Befehlszeile vorübergehend höher stufen, sodass Sie über Root- bzw. Administratorberechtigungen verfügen. Sudo wird häufig für Aufgaben wie die Installation neuer Software benötigt und erfordert die Eingabe Ihres Linux-Kennworts. Sudo hat in PowerShell keine Entsprechung. Sie müssen stattdessen eine separate Instanz der PowerShell-Befehlszeile im Administratormodus öffnen, indem Sie mit der rechten Maustaste klicken und „Als Administrator ausführen“ wählen.
  2. touch: Mit diesem Befehl wird eine leere Datei erstellt. Beispielsweise touch file.txt. Die Entsprechung in PowerShell ist New-Item file.txt oder ni file.txt.
  3. cat: Der Verkettungsbefehl dient zum Lesen des Inhalts einer oder mehrerer Dateien. Beispielsweise zeigt cat file.txt file2.txt den Inhalt von „file“ und „file2“. Fügen Sie das Flag -n hinzu, um Zeilennummern einzuschließen. Einige Befehle wie z. B. cat verhalten sich in Bash und PowerShell etwas unterschiedlich. In Bash erstellt der Befehl cat > file.txt eine neue Datei und ermöglicht Ihnen die Eingabe von Text in diese Datei, bis Sie STRG+D drücken, um zu beenden und die Datei zu schließen. In PowerShell ist der Befehl cat nicht die herkömmliche Form, und cat > file.txt funktioniert nicht, cat > newfile file.txt dagegen erstellt eine neue Datei.

Wir haben hier einige einfache Befehle, die Sie in Ihren Workflow integrieren können, sowie einige der Gemeinsamkeiten und Unterschiede der Befehlszeilen behandelt. Es gibt oft mehrere Möglichkeiten, denselben Befehl auszuführen, wobei die Befehlszeilen von Bash und PowerShell jeweils ihre eigenen bevorzugten Vorgehensweisen für die Verwendung von Befehlen und Skripts aufweisen. Mit WSL können Sie Bash- und PowerShell-Befehle kombinieren, und es ist empfehlenswert, sich mit beiden als unterschiedliche Möglichkeiten zur Automatisierung von Aufgaben vertraut zu machen.