Estoy ejecutando Ubuntu desde Windows.
Cuando creo una carpeta desde Windows llamada newFolder
en el directorio raíz C:\Users\myuser\AppData\Local\lxss\root\Newfolder
y luego desde Bash, cuando ejecuto ls
no veo la nueva carpeta que se acaba de crear.
¿Cómo puedo solucionar este problema para poder crear carpetas y archivos desde Windows y luego acceder a ellos desde Bash?
Respuesta1
Actualizar:
Desde Windows 10 versión 1903, es posible acceder a archivos de Linux desde Windows con \\wsl$\
. Para que puedas ejecutar explorer.exe .
desde bash o ingresar \\wsl$\
directamente en la barra de direcciones del Explorador
Ver¿Qué hay de nuevo para WSL en Windows 10 versión 1903?
De nuevo todavía existe la advertencia de que¡NO debe acceder a sus archivos de Linux a través de la carpeta AppData!
Para versiones anteriores de Windows 10, consulte a continuación
Los archivos de Linux en el sistema de archivos raíz WSL se crean especialmente con permisos POSIX almacenados en atributos extendidos NTFS. Puedes ver eso ejecutando fsutil file layout lxss\root
y notando el$EA
arroyoallá. Si crea los archivos directamente desde Windows, arruinará las cosas porque las aplicaciones win32 no saben nada sobre Linux y sus metadatos de archivos.
El problema surge cuando, por ejemplo, utiliza una aplicación/herramienta de Windows para abrir, crear y/o modificar un archivo en la raíz de su distribución: dado que el archivo se creó con una herramienta de Windows, el archivo no tendrá metadatos de archivo de Linux. (por ejemplo, permisos, propietario, marcas de tiempo de acceso/actualización, etc.). Por lo tanto, para Linux (que solo recibe metadatos de archivos de Linux),el archivo puede ser reportado como vacío, es posible que ni siquiera exista o que tenga algunos metadatos, pero es posible que esos metadatos no reflejen los detalles del archivo y que el contenido del archivo esté dañado..
Por lo tanto, MS ha advertido audazmente que
NO, bajo NINGUNA circunstancia, cree ni modifique archivos de Linux utilizando aplicaciones, herramientas, scripts, consolas, etc. de Windows.
Crear/cambiar archivos de Linux desde Windows probablemente resultará en corrupción de datos y/o dañará su entorno Linux, lo que requerirá que desinstale y reinstale su distribución.
No cambie archivos de Linux usando aplicaciones y herramientas de Windows
Los archivos que sólo son relevantes para Linux deben crearse únicamente desde WSL. Si desea crear archivos a los que se pueda acceder en ambos sistemas, créelosfuera de la raíz WSLy acceda desde WSL a través del punto de montaje en /mnt
me gusta/mnt/drive/path
Si desea crear archivos en sistemas de archivos de Windows pero conserva la sensibilidad entre mayúsculas y minúsculas, utilice
fsutil file setCaseSensitiveInfo <directory name> enable
La bandera también se puede comprobar confsutil file queryCaseSensitiveInfo <directory name>
Ver también¿Cómo acceder a archivos de Linux/Ubuntu desde Windows 10 WSL?
Respuesta2
No puedes crear carpetas en Ubuntu y acceder a ellas desde Windows. Pero puedes hacer lo contrario.
Puede acceder a las unidades de Windows en /mnt
. Si lo hace, ls /mnt
verá todas sus unidades. Entonces /mnt/c es la ruta de su unidad C. De igual forma /mnt/c/Users/username/Desktop
puede darte acceso a tu escritorio en Bash.
Así que simplemente acceda a la ruta deseada usando Bash y acceda a los archivos y carpetas de Windows. Para obtener más detalles sobre cómo acceder rápidamente a sus archivos de Windows, utilice enlaces simbólicos, los detalles pueden serencontrado aquí
Respuesta3
Invierta su pensamiento: si desea crear archivos usando aplicaciones y herramientas de Windows y acceder a ellos desde Bash, cree esos archivos, etc. en su sistema de archivos de Windows y acceda/cópielos desde Bash.
A continuación se muestra un ejemplo de cómo crear un archivo en PowerShell, luego llamar a Bash para copiar el archivo creado en la carpeta de inicio y luego llamar a bash para escribir el contenido del archivo:
PS C:\dev\temp> Set-Content ./hello.txt -Value "Hello, World!" -Encoding ASCII
PS C:\dev\temp> cat .\hello.txt
Hello, World!
PS C:\dev\temp> bash -c "cp /mnt/c/dev/temp/hello.txt ~/"
PS C:\dev\temp> bash -c "cat /mnt/c/dev/temp/hello.txt"
Hello, World!
HTH.