223 votes

Copiez les fichiers de Windows vers le sous-système Windows pour Linux (WSL)

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

Mon répertoire personnel se trouve sous %localappdata%\Lxss\home\\, j'ai créé un sous-répertoire appelé Pictures de sorte que le chemin complet devrait être

sous windows : C:\Users\\AppData\Local\lxss\home\\Pictures

sous bash : /home//Pictures

si je crée un fichier depuis bash en utilisant la commande touch hello.txt, je peux le voir librement dans l'interface Windows et le copier sur mon Bureau. Cependant, si je crée un nouveau fichier texte depuis l'interface Windows et que je le sauvegarde dans C:\Users\\AppData\Local\lxss\home\\Pictures, même si je redémarre bash ou Windows, le fichier n'est pas visible quand je fais ls -l.

Pourquoi bash ne voit-il pas les fichiers créés depuis le côté Windows dans son propre répertoire personnel ?

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

2 votes

Intéressant! Mon hypothèse - et ce n'est qu'une hypothèse - est que le sous-système Linux garde une trace de ses propres fichiers et ne regarde jamais pour voir si d'autres ont été ajoutés. Cela aurait un certain sens, car sinon il serait difficile de donner au système de fichiers virtuel des aspects UNIX pour des choses comme la suppression de fichiers et la sensibilité à la casse. Je soupçonne que vous constaterez que si vous créez hello.txt et HELLO.TXT depuis Bash, l'un des fichiers sera sous un nom différent lorsque vous le regardez sous Windows.

1 votes

Stack Overflow est un site de questions sur la programmation et le développement. Cette question semble être hors-sujet car elle ne concerne pas la programmation ou le développement. Voir Les sujets sur lesquels je peux poser des questions ici dans le Centre d'aide. Peut-être que Super Utilisateur ou Unix & Linux Stack Exchange serait un meilleur endroit pour poser la question. Voir également Où puis-je poser des questions sur Dev Ops?

0 votes

Comme @HarryJohnston l'a supposé, les noms sont différents. À la fois longs et courts. Mais uniquement dans le cas, même les courts (!)

402voto

zoecarver Points 1314

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

cd /mnt/c/Users//Pictures

0 votes

Je crois que vous avez mal compris. J'ai un fichier 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 lorsqu'elles sont dans son répertoire de base. C'est un comportement de base de Cygwin, faites glisser et déposez ou copiez-collez des fichiers sans avoir besoin de faire appel à des commandes Linux pour effectuer le travail.

0 votes

Vous êtes probablement dans le mauvais dossier.

0 votes

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 manière similaire.

80voto

reker Points 799

Vous ne devriez accéder qu'au système de fichiers Linux (ceux situés dans le dossier lxss) depuis l'intérieur de WSL; NE CRÉEZ PAS ou ne modifiez pas de fichiers dans le dossier lxss dans 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) tel que /mnt/c/Users/yourusername/files dans 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/

0 votes

1 votes

Dans Prise en charge du système de fichiers WSL, il est expliqué pourquoi ce comportement se produit : la "traduction" de fichiers est effectuée uniquement dans le sous-système de lxss (côté linux).

1 votes

Sur une machine virtuelle Linux, je peux utiliser SFTP pour transférer des fichiers, que dois-je utiliser pour transférer des fichiers CORRECTEMENT de Windows au sous-système Linux ? cela ne fournit pas de solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X