Как выполнять операции с файлами в Ubuntu в Windows с помощью проводника?

Использование Bash на Ubuntu в Windows 10 Я знаю, что моя домашняя папка находится в папке C:\Users\<username>\AppData\Local\lxss\home\ а все остальные вещи там тоже есть.

Когда я ...\lxss\home вещи в ...\lxss\home с помощью Проводника Windows, он не отображается в bash. Может быть, файловые системы, возможно, разрешения? Хорошо, позвольте мне просто скопировать материал из \mnt\c\... затем через bash. Работает.

Теперь я просто хочу отредактировать файл weirdfile.txt в моем домашнем каталоге. Я открываю его с помощью Блокнота Windows, редактирую его, сохраняю – он ушел из bash. Физически я все еще вижу, как он висит в папке с проводником Windows, но в bash его нет. Не спрятанный. sudo не помогает. Запуск bash как администратора не помогает.

Действия по воспроизведению

  1. Скопируйте папку в папку C:\Users\<username>\AppData\Local\lxss\home\ с помощью проводника Windows
  2. Проверьте домашний каталог с Bash на Ubuntu в Windows (bash) ls -a
  3. Обратите внимание, что папка не существует
  4. Повторите шаги 1-3 с помощью обычного текстового файла
  5. Создать папку в bash mkdir TestFolder
  6. Проверьте C:\Users\<username>\AppData\Local\lxss\home\ с проводником Windows
  7. Обратите внимание, что папка существует
  8. Повторите шаги 5-7 для обычного файла touch somefile.txt
  9. Откройте somefile.txt с вашим любимым текстовым редактором и внесите некоторые изменения
  10. Обратите внимание, что somefile.txt ушел ( ls -a ), когда смотрел в bash.

Что здесь происходит? Пролить свет на виртуализованную файловую систему и рассказать мне, как работать с файлами из Windows. SSH в localhost и редактировать файлы через SCP? Нет, спасибо. Могу ли я просто работать с файлами с помощью инструментов Explorer / Windows, пожалуйста?

Я могу сделать вас лучше:

 ln -s /mnt/c/Users/<username>/Desktop/weirdfile.txt /~/weirdfile.txt 

Работает. Никогда не исчезает. Я могу работать с файлом с помощью инструментов Windows. Мир – лучшее место. К сожалению, Bash на Windows, похоже, не понимает символические ссылки Windows / hardlinks, поэтому я должен символизировать все изнутри bash.

PS: Чувствуется странное пометка вопроса с помощью «ubuntu» и «windows».

Итак, Джек Хэммонс, менеджер программ из Microsoft, связан с этим великим официальным ресурсом: https://blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support/

Проблема в том, что мне очень не повезло (немного отредактировано из ссылки выше):

Хотя файлы [WSL] хранятся в обычных файлах в Windows в упомянутых выше каталогах, совместимость с Windows не поддерживается . Если новый файл добавлен в один из этих каталогов из Windows [WSL], он просто игнорирует его. Многие редакторы также будут разделять [Расширенные атрибуты, которые используются для хранения метаданных WSL] при сохранении существующего файла, снова делая файл непригодным для использования в WSL .

Кроме того, поскольку [WSL] кэширует записи в каталоге, любые изменения в тех каталогах, которые сделаны из Windows во время работы WSL, могут быть неточно отражены .

Поэтому кажется, что я вижу файлы / папки в C:\Users\<username>\AppData\Local\lxss\home\ , я не должен взаимодействовать с ними в Windows.

О символьных ссылках:

Хотя NT поддерживает символические ссылки, мы не можем полагаться на эту поддержку, потому что символические ссылки, созданные WSL, могут указывать на пути, такие как / proc, которые не имеют смысла в Windows.

Остается один вопрос: когда symlinking файлы из где-то в /mnt/c/ все, кажется, отлично работают как с Windows, так и с WSL. Поэтому прямо сейчас у меня есть несколько папок, символически связанных из «Мои документы» в моей домашней папке WSL. Я все испортил?

EDIT: Rich Turner был настолько добр, чтобы помещать эту информацию в полуофициальный блог. https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using -windows-apps-and-tools / . Хотя это и не указано, моя идея symlinking действительно кажется хорошим способом, так как подключенные разделы NTFS обрабатываются по-разному.