¿Por qué, cuando creo un archivo desde Windows, por ejemplo, no puedo verlo bajo el subsistema Linux en Windows 10 (bash.exe)
La captura de pantalla debería explicar.
Carpeta: OMG se creó desde el Explorador de Windows. La carpeta OMGBash se creó con el subsistema Linux bash.exe
Cuando se crea una carpeta O un archivo fuera de bash.exe, nunca puedo verlo, independientemente de los permisos y la propiedad.
Para mostrar la información que tuve que usar Cygwin para mostrar los permisos de archivo, también modifiqué los permisos para ver si aparecería la carpeta. (Las dos ventanas de comando en la parte inferior)
Captura de pantalla que muestra los permisos de carpeta, bash.exe y Cygwin:
Estoy tratando de mover todos mis scripts de Cygwin al subsistema de Linux, pero no me gusta recrear cada archivo, luego tener que copiar y pegar usando bash, luego reformatear y luego usar Dos2unix (sin aliento).
Encontré esto en GitHub para el subsistema Linux:
no se admite copiar directamente en el subsistema de Linux desde Windows, según se explica en otros tickets. Hay un directorio bajo AppData en alguna parte (no recuerdo dónde) que parece contener los archivos para el sistema de archivos WSL. Pero si coloca archivos nuevos allí o modifica archivos existentes allí, sus cambios no se reflejan correctamente dentro de WSL.
Mi mejor conjetura es que Linux necesita almacenar metadatos diferentes (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 de Linux en una base de datos de algún tipo, y simplemente usando el sistema de archivos de Windows como un conveniente BLOB-store para esa base de datos.
Si realmente necesita hacer esto, una solución sería escribir un script .bat o drag de drag'n'drop que haga bash.exe -c "mv% 1 / home / $ USER /". (Tendrá que hacer un trabajo inteligente con sed y tr, probablemente, para traducir% 1 a una ruta WSL válida).
Alternativamente, ¿podría colocar sus archivos en un directorio de Windows y, dentro de WSL, hacer "cd ~; ln -s / mnt / c / path / to / my / files" para que aparezcan en su homedir de WSL?
fuente
cp -r --no-preserve=all
eliminar los permisos anteriores. Aún así, si desea realizar cambios importantes, no puede usar una aplicación de Windows para editar el archivo en LinuxSubSystem. Debe editarlo en su Directorio de Windows y luego copiarlo. Ahora sé esto, es viable, PERO tenía la impresión de que el subsistema Linux era más nativo / integrado en Windows que un sistema operativo aislado%LocalAppData%\Packages\<some-long-name-of-distro>\LocalState\rootfs
.Respuestas:
No estoy seguro si estoy malinterpretando su pregunta, pero su ubuntu bash (ventana superior derecha) debería tener acceso a sus discos basados en Windows debajo
/mnt
. Por ejemplo, en mi máquina/mnt/c/Users/Scott/Desktop
está mi escritorio de Windows y puedo leer / escribir archivos desde vi por ejemplo. No creo que lo contrario sea cierto todavía. Es decir, no creo que pueda explorar su mundo bash desde el explorador de Windows.Lo que he estado haciendo como desarrollador es alojar proyectos en mi d: y apuntar las herramientas basadas en Linux a esa
/mnt/d/projects/someproject/
carpeta.Asegúrese de actualizar periódicamente sus compilaciones de Windows, ya que parecen estar solucionando muchos problemas con cada compilación, especialmente alrededor de enlaces simbólicos y cruzando los límites de FS entre Linux / Windows.
fuente
@ scottt732 respondió maravillosamente.
Solo un consejo para los desarrolladores que trabajarían en Windows y les gustaría acceder a esos archivos en el Subsistema Linux de manera muy rápida. Puedes usar enlaces simbólicos .
Por ejemplo, si está trabajando en un proyecto en
d:/projects/web-project
, puede crear un enlace simbólico en la ubicación/var/www/web-project
y todos los archivos que cambie en Windows estarán fácilmente disponibles para acceder en Linux Bash.Para esto usarás un
ln
comando como esteEn la línea anterior
/mnt/d
estaba destinado a ser su disco d en Windows. Configure su host virtual Apache en esta ruta y estará listo para comenzar.fuente
css-file.css
,. He publicado sobre este tema aquí .Recomendamos que no copie / cree / actualice archivos Linux utilizando aplicaciones de Windows .
En su lugar, almacene archivos en el sistema de archivos de Windows (p
c:\dev\project
. Ej. ) Que desea editar usando las herramientas de Windows y / o compile / pruebe / ejecute usando las herramientas / tiempos de ejecución / plataformas de Linux (p/mnt/c/dev/project
. Ej., Vía ).En su escenario específico, si quiere copiar los archivos en Cygwin Bash, a continuación, Bash abierta y copiar los archivos de la carpeta de Cygwin en C: en
~/
, por ejemplo:cp /mnt/c/Users/dave/Documents/Cygwin/* ~/
)HTH.
fuente
Necesitaba trabajar con PyCharm / eclipse en Windows 10 mientras que para ejecutar / testind necesitaba un entorno Linux;
Tuve problemas para retirar de git al subsistema Linux y la edición con archivos PyCharm no se vio de inmediato y tuve problemas;
Tenía lo anterior en mi .bashrc en el área de Ubuntu. Funciona a la perfección. Podría editar Windows y ejecutar / probar en Ubuntu sin ningún problema.
fuente
Tenía una necesidad similar de copiar archivos entre WSL y win10. Terminé habilitando sshd en la instalación de Ubuntu para poder ingresar a Linux desde win10. Luego uso winscp para copiar archivos de un lado a otro. No es óptimo, pero no copio archivos con mucha frecuencia. Traté de encontrar la publicación que usé para habilitar sshd pero no puedo localizarla.
fuente