Aktualisieren:

Aktualisieren:

Ich verwende Ubuntu unter Windows.

newFolderWenn ich unter Windows einen Ordner im Stammverzeichnis erstelle und C:\Users\myuser\AppData\Local\lxss\root\Newfolderihn dann in Bash ausführe, lswird mir der gerade erstellte neue Ordner nicht angezeigt.

Wie kann ich das beheben, sodass ich Ordner und Dateien unter Windows erstellen und dann von Bash aus darauf zugreifen kann?

Antwort1

Aktualisieren:

Seit Windows 10 Version 1903 ist es möglich, von Windows aus auf Linux-Dateien zuzugreifen \\wsl$\. Sie können also explorer.exe .von bash aus ausführen oder \\wsl$\direkt in die Adressleiste des Explorers eingeben

SehenWas ist neu für WSL in Windows 10, Version 1903?

Auch hier gibt es noch die Warnung, dass Siedürfen NICHT über den AppData-Ordner auf Ihre Linux-Dateien zugreifen!

Für ältere Versionen von Windows 10 siehe unten


Linux-Dateien im WSL-Root-Dateisystem werden speziell mit POSIX-Berechtigungen erstellt, die in erweiterten NTFS-Attributen gespeichert sind. Sie können dies sehen, indem Sie ausführen fsutil file layout lxss\rootund die$EAStromdort. Wenn Sie die Dateien direkt von Windows aus erstellen, werden Sie einiges durcheinander bringen, da Win32-Apps nichts über Linux und seine Dateimetadaten wissen

Das Problem entsteht beispielsweise, wenn Sie eine Windows-App/ein Windows-Tool verwenden, um eine Datei unter Ihrem Distributionsstamm zu öffnen, zu erstellen und/oder zu ändern: Da die Datei mit einem Windows-Tool erstellt wurde, verfügt die Datei nicht über Linux-Dateimetadaten (z. B. Berechtigungen, Eigentümer, Zugriffs-/Aktualisierungszeitstempel usw.). Für Linux (das nur Linux-Dateimetadaten empfängt) bedeutet dies also, dass die Datei keine Linux-Dateimetadaten enthält.Die Datei wird möglicherweise als leer gemeldet, existiert möglicherweise nicht einmal oder verfügt über einige Metadaten, aber diese Metadaten spiegeln möglicherweise nicht die Details der Datei wider, was dazu führte, dass der Inhalt der Datei beschädigt wurde.

Deshalb hat MS eindringlich gewarnt:

Erstellen und/oder ändern Sie unter KEINEN Umständen Linux-Dateien mit Windows-Apps, -Tools, -Skripten, -Konsolen usw.

Das Erstellen/Ändern von Linux-Dateien unter Windows führt wahrscheinlich zur Beschädigung von Daten und/oder Ihrer Linux-Umgebung, sodass Sie Ihre Distribution deinstallieren und neu installieren müssen!

Ändern Sie keine Linux-Dateien mit Windows-Apps und -Tools

Dateien, die nur für Linux relevant sind, sollten nur aus WSL erstellt werden. Wenn Sie Dateien erstellen möchten, auf die beide Systeme zugreifen können, erstellen Sie sieaußerhalb der WSL-Wurzelund Zugriff von WSL über den Einhängepunkt in /mntwie/mnt/drive/path

Wenn Sie Dateien auf Windows-Dateisystemen erstellen möchten, aber die Groß- und Kleinschreibung beibehalten möchten, verwenden Sie

fsutil file setCaseSensitiveInfo <directory name> enable

Die Flagge kann auch überprüft werden mitfsutil file queryCaseSensitiveInfo <directory name>

Siehe auchWie greife ich von Windows 10 WSL auf Linux-/Ubuntu-Dateien zu?

Antwort2

Sie können in Ubuntu keine Ordner erstellen und von Windows aus darauf zugreifen. Aber Sie können das Gegenteil tun.

Sie können auf Ihre Windows-Laufwerke unter zugreifen /mnt. Wenn Sie das tun, ls /mntwerden Ihnen alle Ihre Laufwerke angezeigt. /mnt/c ist also der Pfad Ihres Laufwerks C. Ebenso /mnt/c/Users/username/Desktopkönnen Sie über Bash auf Ihren Desktop zugreifen.

Rufen Sie also einfach mit Bash den gewünschten Pfad auf und greifen Sie auf Windows-Dateien und -Ordner zu. Weitere Informationen zum schnellen Zugriff auf Ihre Windows-Dateien finden Sie unter Verwendung von Symlinks.hier zu finden

Antwort3

Denken Sie anders: Wenn Sie Dateien mit Windows-Apps und -Tools erstellen und von Bash aus darauf zugreifen möchten, erstellen Sie diese Dateien usw. in Ihrem Windows-Dateisystem und greifen Sie von Bash aus darauf zu bzw. kopieren Sie sie.

Hier ist ein Beispiel für das Erstellen einer Datei in PowerShell, das anschließende Aufrufen von Bash zum Kopieren der erstellten Datei in den Home-Ordner und das anschließende Aufrufen von Bash zum Schreiben des Dateiinhalts:

PS C:\dev\temp> Set-Content ./hello.txt -Value "Hello, World!" -Encoding ASCII
PS C:\dev\temp> cat .\hello.txt
Hello, World!
PS C:\dev\temp> bash -c "cp /mnt/c/dev/temp/hello.txt ~/"
PS C:\dev\temp> bash -c "cat /mnt/c/dev/temp/hello.txt"
Hello, World!

HTH.

verwandte Informationen