Copier des fichiers de Windows vers le sous-système Ubuntu [fermé]

96

J'ai activé le mode développeur et installé Bash on Ubuntu on Windows.

Mon répertoire personnel peut être trouvé sous %localappdata%\Lxss\home\<ubuntu.username>\, j'ai créé un sous-répertoire appelé Pictures de sorte que le chemin complet soit

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

sur bash: /home/<ubuntu.username>/Pictures

si je crée un fichier à partir de bash à l'aide de la commande, touch hello.txtje peux librement voir ce fichier dans l'interface utilisateur de Windows et le copier sur mon bureau. Cependant, si je crée un nouveau fichier texte à partir de l'interface utilisateur Windows et que je l'enregistre C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures, même si je redémarre bash ou Windows, le fichier n'est pas visible lorsque je le fais ls -l.

Pourquoi bash ne peut-il pas voir les fichiers créés du côté Windows dans son propre répertoire personnel?

EDIT Utiliser /mnt/cn'est pas une solution, j'essaie de comprendre pourquoi il ne voit pas ces fichiers et s'il existe un remède à cela afin qu'il puisse voir les fichiers créés par l'interface utilisateur, plutôt que d'essayer d'utiliser le terminal pour copier- coller ou déplacer des fichiers.

JordanGS
la source
2
Intéressant! Je suppose - et ce n'est qu'une supposition - que le sous-système Linux garde la trace de ses propres fichiers et ne cherche jamais à voir si d'autres ont été ajoutés. Cela aurait du sens, car sinon, il serait difficile de donner au système de fichiers virtuel une sémantique UNIX pour des choses comme la suppression de fichiers et le respect de la casse. Je soupçonne que vous constaterez que si vous créez hello.txtet à HELLO.TXTpartir de Bash, l'un des fichiers sera sous un nom différent lorsque vous le regardez dans Windows.
Harry Johnston
Stack Overflow est un site pour les questions de programmation et de développement. Cette question semble hors sujet car elle ne concerne ni la programmation ni le développement. Consultez la rubrique Quels sujets puis-je poser ici dans le centre d'aide. Peut-être que Super User ou Unix & Linux Stack Exchange serait un meilleur endroit pour demander. Voir également Où puis-je publier des questions sur Dev Ops?
jww
Comme le supposait @HarryJohnston, les noms sont différents. À la fois long et court. Mais seulement dans le cas, même les plus courts (!)
Serhii Kheilyk
Je vote pour clore cette question comme hors sujet car elle est liée à la communauté ask-ubuntu.
OmG
2
@jpaugh je sais. Mais, cette question est justifiée de poser des circonstances Ubuntu et non hors sujet.
OmG

Réponses:

142

Vous devriez pouvoir accéder à votre système Windows sous le /mntrépertoire. Par exemple à l'intérieur de bash, utilisez ceci pour accéder à votre répertoire d'images:

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

J'espère que cela t'aides!

zoecarver
la source
Je crois que vous avez mal compris. J'ai un JPG sur mon bureau, je l'ai copié avec l'interface utilisateur dans le répertoire du sous-système bash. J'essaie de comprendre pourquoi bash ne peut pas voir ces images alors qu'elles sont dans son répertoire personnel. Il s'agit du comportement de base de cygwin, glisser-déposer ou copier-coller des fichiers sans compter sur les commandes Linux pour faire le travail.
JordanGS
vous êtes probablement dans le mauvais dossier.
zoecarver
Le sous-système Linux n'a pas les mêmes critères de conception que Cygwin. Vous ne pouvez pas nécessairement vous attendre à ce qu'ils se comportent de la même manière.
Harry Johnston
cela a fonctionné pour moi, mais ubuntu.usernamen'est pas nécessaire le nom d'utilisateur pour Windows .. au moins ce n'est pas le cas pour moi;)
user2804070
1
Je t'aime pour ça.
Gubatron
53

Vous ne devez accéder au système de fichiers Linux (ceux situés dans le dossier lxss) qu'à partir de WSL ; NE créez / ne modifiez aucun fichier dans le dossier lxss de Windows - c'est dangereux et WSL ne verra pas ces fichiers.

Les fichiers peuvent être partagés entre WSL et Windows, cependant; placez le fichier en dehors du dossier lxss. Vous pouvez y accéder via drvFS ( /mnt) comme /mnt/c/Users/yourusername/filesdans WSL. Ces fichiers restent synchronisés entre WSL et Windows.

Pour plus de détails et pourquoi, voir: https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

reker
la source
Voir également Prise en charge du système de fichiers WSL .
Harry Johnston
1
Dans WSL File System Support, il décrit pourquoi le comportement se produit: la "traduction" du fichier est effectuée dans le sous-système lsxx (côté Linux) uniquement.
Chris Buck
Sur une machine virtuelle Linux, je peux utiliser SFTP pour transférer des fichiers, que dois-je utiliser pour transférer correctement des fichiers de Windows au sous-système Linux? cela ne fournit pas de solution.
Ambroise Rabier
1
@AmbroiseRabier Dans la dernière version de WSL, utilisez SFTP, fichier tar ou protocole 9p intégré.
reker