Обновлять:

Обновлять:

Я использую Ubuntu из Windows.

Когда я создаю папку из Windows, которая находится newFolderв корневом каталоге, C:\Users\myuser\AppData\Local\lxss\root\Newfolderа затем при запуске из Bash lsя не вижу новую папку, которая была только что создана.

Как это исправить, чтобы можно было создавать папки и файлы из Windows, а затем получать к ним доступ из Bash?

решение1

Обновлять:

Начиная с Windows 10 версии 1903, можно получить доступ к файлам Linux из Windows с помощью \\wsl$\. Так что вы можете запустить explorer.exe .из bash или ввести \\wsl$\напрямую в адресную строку Explorer

ВидетьЧто нового для WSL в Windows 10 версии 1903?

Опять же, есть предупреждение, что выНЕ ДОЛЖЕН получать доступ к файлам Linux через папку AppData!

Для более старых версий Windows 10 см. ниже


Файлы Linux в корневой файловой системе WSL создаются специально с разрешениями POSIX, хранящимися в расширенных атрибутах NTFS. Вы можете увидеть это, запустив fsutil file layout lxss\rootи заметив$EAтранслироватьтам. Если вы создаете файлы напрямую из Windows, вы все испортите, потому что приложения win32 ничего не знают о Linux и его метаданных файлов

Проблема возникает, например, когда вы используете приложение/инструмент Windows для открытия, создания и/или изменения файла в корневом каталоге вашего дистрибутива: поскольку файл был создан с помощью инструмента Windows, у него не будет никаких метаданных файла Linux (например, разрешений, владельца, временных меток доступа/обновления и т. д.). Таким образом, для Linux (который получает только метаданные файла Linux),файл может быть отмечен как пустой, может даже не существовать или иметь некоторые метаданные, но эти метаданные могут не отражать детали файла, что приводит к повреждению содержимого файла.

Поэтому MS смело предупредил, что

НИ при каких обстоятельствах не создавайте и/или не изменяйте файлы Linux с помощью приложений, инструментов, скриптов, консолей Windows и т. д.

Создание/изменение файлов Linux из Windows, скорее всего, приведет к повреждению данных и/или повреждению вашей среды Linux, что потребует удаления и переустановки вашего дистрибутива!

Не изменяйте файлы Linux с помощью приложений и инструментов Windows.

Файлы, которые относятся только к Linux, должны создаваться только из WSL. Если вы хотите создать файлы, которые доступны обеим системам, то создайте ихвне корня WSLи доступ из WSL через точку монтирования в /mntподобном/mnt/drive/path

Если вы хотите создавать файлы в файловых системах Windows, но при этом сохранять чувствительность к регистру, используйте

fsutil file setCaseSensitiveInfo <directory name> enable

Флаг также можно проверить с помощьюfsutil file queryCaseSensitiveInfo <directory name>

Смотрите такжеКак получить доступ к файлам Linux/Ubuntu из Windows 10 WSL?

решение2

Вы не можете создавать папки в Ubuntu и получать к ним доступ из Windows. Но вы можете сделать наоборот.

Вы можете получить доступ к дискам Windows по адресу /mnt. Если вы это сделаете, ls /mntто увидите все свои диски. Так что /mnt/c — это путь к вашему диску C. Аналогично /mnt/c/Users/username/Desktopможно получить доступ к рабочему столу в Bash.

Так что просто перейдите к нужному пути с помощью Bash и получите доступ к файлам и папкам Windows. Для получения более подробной информации о том, как сделать быстрый доступ к файлам Windows, используйте символические ссылки, подробности можно найтинайдено здесь

решение3

Переверните свой подход: если вы хотите создавать файлы с помощью приложений и инструментов Windows и получать к ним доступ из Bash, то создайте эти файлы и т. д. в файловой системе Windows и скопируйте их из Bash.

Вот пример создания файла в PowerShell, затем вызова Bash для копирования созданного файла в домашнюю папку, а затем вызова bash для записи содержимого файла:

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!

НТН.

Связанный контент