Dateien von Windows auf das Ubuntu-Subsystem kopieren [geschlossen]

96

Ich habe den Entwicklermodus aktiviert und installiert Bash on Ubuntu on Windows.

Mein Home-Verzeichnis finden Sie unter %localappdata%\Lxss\home\<ubuntu.username>\, ich habe ein Unterverzeichnis namens Pictures erstellt, so dass der vollständige Pfad sein sollte

unter Windows: C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures

auf Bash: /home/<ubuntu.username>/Pictures

Wenn ich eine Datei aus Bash mit dem Befehl erstelle, touch hello.txtkann ich diese Datei in der Windows-Benutzeroberfläche frei sehen und auf meinen Desktop kopieren. Wenn ich jedoch eine neue Textdatei über die Windows-Benutzeroberfläche erstelle und sie speichere C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures, ist die Datei nicht sichtbar, selbst wenn ich Bash oder Windows neu starte ls -l.

Warum kann bash keine von Windows erstellten Dateien in seinem eigenen Home-Verzeichnis anzeigen?

BEARBEITEN Verwenden /mnt/cist keine Lösung. Ich versuche zu verstehen, warum diese Dateien nicht angezeigt werden. Wenn dies behoben werden kann, werden die von der Benutzeroberfläche erstellten Dateien angezeigt, anstatt zu versuchen, das Terminal zum Kopieren zu verwenden. Dateien einfügen oder verschieben.

JordanGS
quelle
2
Interessant! Meine Vermutung - und es ist nur eine Vermutung - ist, dass das Linux-Subsystem seine eigenen Dateien verfolgt und nie nachschaut, ob andere hinzugefügt wurden. Das wäre irgendwie sinnvoll, da es sonst schwierig wäre, dem virtuellen Dateisystem UNIX-Semantik für Dinge wie das Löschen von Dateien und die Groß- und Kleinschreibung zu geben. Ich vermute, Sie werden feststellen, dass beim Erstellen hello.txtund Erstellen HELLO.TXTvon Bash eine der Dateien unter einem anderen Namen angezeigt wird, wenn Sie sie in Windows anzeigen.
Harry Johnston
Stack Overflow ist eine Site für Programmier- und Entwicklungsfragen. Diese Frage scheint nicht zum Thema zu gehören, da es nicht um Programmierung oder Entwicklung geht. Siehe Welche Themen kann ich hier in der Hilfe erfragen? Vielleicht ist Super User oder Unix & Linux Stack Exchange ein besserer Ort, um zu fragen. Siehe auch Wo poste ich Fragen zu Dev Ops?
JWW
Wie @HarryJohnston vermutet, sind die Namen unterschiedlich. Lang und kurz. Aber nur in dem Fall, auch kurze (!)
Serhii Kheilyk
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da sie mit der Ask-Ubuntu-Community zusammenhängt.
OmG
2
@jpaugh ich weiß. Diese Frage ist jedoch gerechtfertigt, um Ubuntu-Umstände zu stellen und nicht außerhalb des Themas.
OmG

Antworten:

141

Sie sollten in der Lage sein, unter dem /mntVerzeichnis auf Ihr Windows-System zuzugreifen . Verwenden Sie dies beispielsweise innerhalb von Bash, um zu Ihrem Bilderverzeichnis zu gelangen:

cd /mnt/c/Users/<ubuntu.username>/Pictures

Hoffe das hilft!

Zoecarver
quelle
Ich glaube du hast es falsch verstanden. Ich habe ein JPG auf meinem Desktop, ich habe es mit der Benutzeroberfläche in das Bash-Subsystem-Verzeichnis kopiert. Ich versuche zu verstehen, warum bash diese Bilder nicht sehen kann, wenn sie sich im Home-Verzeichnis befinden. Dies ist das grundlegende Verhalten von Cygwin. Ziehen Sie Dateien per Drag & Drop oder kopieren Sie sie, ohne sich auf Linux-Befehle zu verlassen.
JordanGS
Sie befinden sich wahrscheinlich im falschen Ordner.
Zoecarver
Das Linux-Subsystem hat nicht die gleichen Entwurfskriterien wie Cygwin. Sie können nicht unbedingt erwarten, dass sie sich ähnlich verhalten.
Harry Johnston
es hat bei mir funktioniert, obwohl ubuntu.usernameder Benutzername für Windows nicht notwendig ist .. zumindest ist es bei mir nicht der Fall;)
user2804070
1
Ich liebe dich dafür.
Gubatron
53

Sie sollten nur innerhalb der WSL auf das Linux-Dateisystem (das sich im Ordner lxss befindet) zugreifen . Erstellen / ändern Sie KEINE Dateien im Ordner lxss in Windows - dies ist gefährlich und WSL sieht diese Dateien nicht.

Dateien können jedoch zwischen WSL und Windows gemeinsam genutzt werden. Legen Sie die Datei außerhalb des Ordners lxss ab. Sie können über drvFS ( /mnt) darauf zugreifen, z. B. /mnt/c/Users/yourusername/filesinnerhalb der WSL. Diese Dateien bleiben zwischen WSL und Windows synchronisiert.

Einzelheiten und warum finden Sie unter: https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

reker
quelle
Siehe auch WSL-Dateisystemunterstützung .
Harry Johnston
1
In der WSL-Dateisystemunterstützung wird beschrieben, warum das Verhalten auftritt: Die Datei "Übersetzung" wird nur im lsxx-Subsystem (auf der Linux-Seite) ausgeführt.
Chris Buck
Auf einer Linux-VM kann ich SFTP zum Übertragen von Dateien verwenden. Was verwende ich, um Dateien RICHTIG vom Fenster zum Linux-Subsystem zu übertragen? Dies bietet keine Lösung.
Ambroise Rabier
1
@AmbroiseRabier Verwenden Sie in der neuesten Version von WSL SFTP, TAR-Datei oder integriertes 9p-Protokoll.
Reker