Windows Linux Subsystem – Acceso a archivos fuera de Ubuntu

¿Por qué, al crear un archivo desde Windows por ejemplo, no puedo verlo bajo el sub sistema Linux en Windows 10 (bash.exe)

La captura de pantalla debe explicar.

Carpeta: OMG se creó desde el Explorador de Windows. La carpeta OMGBash fue creada con el sub sistema Linux bash.exe

Cuando una carpeta O archivo se crea fuera de bash.exe nunca lo puedo ver, independientemente de los permisos y la propiedad.

Para mostrar la información que he tenido que utilizar Cygwin para mostrar permisos de archivo, también he alterado los permisos para ver si la carpeta aparecería. (Las dos ventanas de comando en la parte inferior)

Captura de pantalla que muestra los permisos de carpeta, bash.exe y Cygwin:

Introduzca aquí la descripción de la imagen

Estoy intentando mover todos mis scripts de Cygwin al subsistema de Linux, pero no me apetece recrear cada archivo, luego tener que copiar y pasar usando bash, luego reformatear y usar Dos2unix (muy largo).

Lo encontré en GitHub para el subsistema Linux:

Copiar directamente en el subsistema de Linux desde Windows no es compatible, de acuerdo con la discusión en otros boletos. Hay un directorio bajo AppData en algún lugar (se me olvida dónde) que parece contener los archivos para el sistema de archivos WSL. Pero si coloca nuevos archivos allí o modifica los archivos existentes, sus cambios no se reflejan correctamente en WSL.

Mi mejor conjetura es que Linux necesita almacenar diferentes metadatos (y más información de almacenamiento en caché, etc., ya que su modelo de almacenamiento en disco también es diferente) sobre sus archivos que Windows y que esto se implementa actualmente almacenando la copia maestra de la estructura Del sistema de archivos Linux en una base de datos de algún tipo, y usar el sistema de archivos de Windows como una conveniente BLOB-store para esa base de datos.

Si realmente necesitas hacer esto, una solución sería escribir un script .bat de drag'n'drop o algo así que bash.exe -c "mv% 1 / home / $ USER /". (Tendrás que hacer un trabajo inteligente con sed y tr, probablemente, para traducir% 1 a una ruta WSL válida.)

Alternativamente, ¿podrías poner tus archivos en un directorio de Windows y, dentro de WSL, hacer "cd ~; ln -s / mnt / c / path / to / my / files" para que aparezcan en tu homedir WSL?

No estoy seguro si estoy malentendiendo tu pregunta, pero tu ubuntu bash (ventana superior derecha) debería tener acceso a tus discos basados ​​en Windows bajo /mnt . Por ejemplo, en mi máquina /mnt/c/Users/Scott/Desktop es mi escritorio de Windows y puedo leer / escribir archivos allí desde vi para ex. No creo que lo contrario es cierto todavía. Es decir, no creo que puedas explorar tu mundo bash desde el explorador de Windows.

Lo que he estado haciendo como desarrollador es alojar proyectos en mi d: y señalar las herramientas basadas en linux a esa carpeta /mnt/d/projects/someproject/ .

Asegúrese de actualizar sus compilaciones de Windows periódicamente, ya que parecen estar arreglando una gran cantidad de problemas con cada compilación, especialmente alrededor de enlaces sim y cruce fronteras FS entre Linux / Windows.

@ Scottt732 respondió maravillosamente.

Sólo una sugerencia para los desarrolladores que trabajan en Windows y le gustaría acceder a esos archivos en Linux subsistema real rápido. Puede usar enlaces simbólicos .

Por ejemplo, si está trabajando en un proyecto en d:/projects/web-project , puede crear un enlace simbólico en /var/www/web-project y todos los archivos que cambie en windows estarán disponibles para ser accesados ​​en Linux Bash.

Para esto harás uso comando ln como este

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

Encima de la línea /mnt/d estaba destinado a ser su unidad d en las ventanas. Configure su host virtual Apache en esta ruta y ya está listo.

Recomendamos que no copie / cree / actualice archivos de Linux usando las aplicaciones de Windows .

En su lugar, almacene archivos en el sistema de archivos de Windows (p. Ej., c:\dev\project ) que desee editar archivos utilizando las herramientas de Windows y / o construya / pruebe / ejecute utilizando las herramientas / runtimes / plataformas Linux (por ejemplo, via /mnt/c/dev/project ).

En su situación específica, si desea copiar sus archivos Cygwin en Bash, abra Bash y copie los archivos de su carpeta Cygwin en C: en ~/ , como esto: cp /mnt/c/Users/dave/Documents/Cygwin/* ~/ )

HTH.