Question Sous-système Windows Windows - Accès aux fichiers en dehors d'Ubuntu


Pourquoi, lorsque je crée un fichier à partir de Windows par exemple, puis-je ne pas le voir sous le sous-système Linux de Windows 10 (bash.exe)

La capture d'écran devrait expliquer.

Dossier: OMG a été créé à partir de Windows Explorer. Le dossier OMGBash a été créé avec le sous-système Linux bash.exe

Lorsqu'un dossier OU un fichier est créé en dehors de bash.exe, je ne peux jamais le voir, quelles que soient les autorisations et la propriété.

Pour afficher les informations que j'ai eu à utiliser Cygwin pour afficher les autorisations de fichiers, j'ai également modifié les autorisations pour voir si le dossier apparaîtrait. (Les deux fenêtres de commandes en bas)

Capture d'écran montrant les autorisations de dossier, bash.exe et Cygwin:

enter image description here

J'essaye de déplacer tous mes scripts Cygwin vers le sous-système Linux, mais Je n'ai pas envie de recréer chaque fichier, puis de copier et de passer en utilisant bash, puis de reformater puis d'utiliser Dos2unix (très long).

Trouvé ceci sur GitHub pour le sous-système Linux: 

copier directement dans le sous-système Linux à partir de Windows n'est pas   pris en charge, selon la discussion sur d'autres billets. Il y a un   répertoire sous AppData quelque part (j'oublie où) qui semble   contient les fichiers du système de fichiers WSL. Mais si vous mettez de nouveaux fichiers   là, ou modifier les fichiers existants là-bas, vos modifications ne sont pas reflétées   correctement dans WSL.

Je suppose que Linux doit stocker différentes métadonnées (et   plus d'informations de mise en cache, etc., puisque son modèle de mise en mémoire tampon est également   différent) de ses fichiers que Windows, et que c'est   actuellement mis en œuvre en stockant la copie maîtresse de la structure de   le système de fichiers Linux dans une base de données quelconque, et en utilisant simplement le   Système de fichiers Windows en tant que magasin BLOB pratique pour cette base de données.

Si vous avez vraiment besoin de le faire, une solution serait d'écrire un   Drag'n'drop .bat script ou somesuch qui fait bash.exe -c "mv% 1   / home / $ USER / ". (Vous devrez faire un travail astucieux avec sed et tr,   probablement pour traduire% 1 en un chemin WSL valide.)

Alternativement - pourriez-vous mettre vos fichiers dans un répertoire Windows et,   dans WSL, faites "cd ~; ln -s / mnt / c / chemin / à / mes / fichiers" pour les rendre   semble être dans votre homedir WSL?


55
2018-06-03 09:32


origine


Est-il possible de monter le disque dur Windows sous l'environnement Linux? De cette façon, il devrait afficher tous les fichiers en temps réel ... (ou même seulement le répertoire de la maison Cygwin) - Hastur
Excellente idée, mais malheureusement les fichiers ne sont pas visibles. La solution consiste à copier des fichiers du répertoire Windows vers le sous-répertoire Linux via Bash.exe. cp -r --no-preserve=all  Pour supprimer les autorisations précédentes. Toutefois, si vous souhaitez apporter des modifications importantes, vous ne pouvez pas utiliser une application Windows pour modifier le fichier dans LinuxSubSystem. Vous devez le modifier dans votre répertoire Windows, puis le copier. Maintenant, je le sais, c'est réalisable, mais je pensais que le sous-système Linux était plus natif / intégré dans Windows qu'un système d'exploitation isolé - Dave Hamilton
Vous pouvez suivre l’évolution de ce problème (traitement des fichiers entre Windows et WLS) à github.com/Microsoft/BashOnWindows/issues/1051 - Gaia


Réponses:


Je ne sais pas si je ne comprends pas bien votre question, mais votre ubuntu bash (fenêtre en haut à droite) devrait avoir accès à vos disques Windows sous /mnt. Par exemple, sur ma machine /mnt/c/Users/Scott/Desktop est mon bureau Windows et je peux lire / écrire des fichiers à partir de vi pour ex. Je ne crois pas que le contraire soit vrai pour l'instant. C'est-à-dire que je ne pense pas que vous puissiez explorer votre monde à partir de l'explorateur Windows.

Ce que je fais en tant que développeur, c’est d’héberger des projets sur mon d: et d’orienter les outils Linux vers ceux-ci. /mnt/d/projects/someproject/ dossier.

Assurez-vous de mettre à jour régulièrement vos compilations Windows, car elles semblent résoudre de nombreux problèmes avec chaque version, en particulier autour des liens de symétrie et du franchissement des limites de FS entre Linux / Windows.


58
2018-06-03 23:40



Vous avez raison, je pense que j'ai un peu sauté le fusil. Bien que Bash puisse accéder aux fichiers Windows, Windows ne peut pas copier les fichiers dans le répertoire Linux Sub System. (il peut copier alors, mais Bash ne peut pas les voir car il conserve les permissions des fichiers) Quand j'ai installé bash, je pensais que la chose la plus logique était de déplacer mes projets d'un environnement Linux vers un autre (Tentative to bin of Cwygin) C'est ce qui m'a lancé sur la route des maux de tête. J'ai configuré mon Bashrc maintenant pour avoir un répertoire de départ de mon environnement Linux précédent maintenant et à partir de là. Merci pour votre réponse. - Dave Hamilton
Attendez, comment obtenez-vous / mnt / d pour apparaître? Par exemple, lorsque je connecte un téléphone via MTP, il apparaît sous un chemin comme "This PC \ PhoneName", mais aucune lettre de lecteur n'est associée. - Michael
Les liens symboliques fonctionnent si vous ne disposez pas de barre oblique. De plus, vous devez disposer de fichiers du côté Windows du système de fichiers pour exécuter des tâches telles que l'exécution locale de projets Django et y accéder dans le navigateur. - Zags
mais les fichiers Linux ne sont pas mis à jour lorsque je modifie les fichiers Windows?!?! - user2230470


@ scottt732 a répondu magnifiquement.

Juste un conseil pour les développeurs qui travailleraient sous Windows et voudraient accéder à ces fichiers dans le sous-système Linux très rapidement. Vous pouvez utiliser liens symboliques.

Par exemple, si vous travaillez sur un projet dans d:/projects/web-project, vous pouvez créer un lien symbolique à l'emplacement /var/www/web-project et tous les fichiers que vous modifiez dans Windows seront facilement accessibles dans Linux Bash.

Pour cela vous allez utiliser ln commande comme ça

ln -s  /mnt/d/projects/web-project  /var/www/web-project

Dans la ligne ci-dessus /mnt/d était censé être votre disque dur sur Windows. Configurez votre hôte virtuel Apache sur ce chemin et vous êtes prêt à partir.


11
2018-04-07 14:30



il ne synchronise pas réellement ... à moins que je doive redémarrer le serveur à chaque fois? - user2230470
@Anthony son lien symbolique, vous ne devriez donc pas avoir besoin de redémarrer le serveur pour cela. En fait, ce n'est pas sync, il suffit de pointer vers ce dossier / chemin. - Riz
J'ai compris le problème. C'était parce que le fichier CSS avait un tiret dans le nom comme, par exemple, css-file.css. J'ai posté sur ce problème ici. - user2230470


Nous vous recommandons ne pas copier / créer / mettre à jour des fichiers Linux à l'aide des applications Windows.

Au lieu de cela, stockez les fichiers dans le système de fichiers Windows (par ex. c:\dev\project) que vous souhaitez éditer des fichiers en utilisant les outils Windows et / ou créer / tester / exécuter en utilisant des outils / runtimes / plates-formes Linux (par exemple via /mnt/c/dev/project).

Dans votre scénario spécifique, si vous souhaitez copier vos fichiers Cygwin dans Bash, ouvrez Bash et copiez les fichiers de votre dossier Cygwin sur C: into ~/, comme ça: cp /mnt/c/Users/dave/Documents/Cygwin/* ~/)

HTH.


7
2018-04-09 19:50





J'ai eu un besoin similaire de copier des fichiers entre WSL et win10. J'ai fini par activer sshd sur l'installation d'Ubuntu afin de pouvoir utiliser ssh sous Linux à partir de win10. Ensuite, j'utilise winscp pour copier des fichiers dans les deux sens. Pas optimal, mais je ne copie pas les fichiers très fréquemment. J'ai essayé de trouver le post que j'utilisais pour activer sshd mais je ne le trouve pas.


0
2017-08-03 07:00