Копирование файлов из Windows в подсистему Ubuntu [закрыто]

97

Я включил режим разработчика и установил Bash on Ubuntu on Windows.

Мой домашний каталог можно найти в %localappdata%\Lxss\home\<ubuntu.username>\, я создал подкаталог с именем Pictures, чтобы полный путь был

на окнах: C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures

на bash: /home/<ubuntu.username>/Pictures

если я создаю файл из bash с помощью команды, touch hello.txtя могу свободно видеть этот файл в пользовательском интерфейсе Windows и копировать его на свой рабочий стол. Однако, если я создаю новый текстовый файл из пользовательского интерфейса Windows и сохраню его C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures, даже если я перезапущу bash или Windows, файл не будет отображаться, когда я это сделаю ls -l.

Почему bash не может видеть файлы, созданные со стороны Windows, в собственном домашнем каталоге?

РЕДАКТИРОВАТЬ Использование /mnt/cне является решением, я пытаюсь понять, почему он не видит эти файлы, и если есть средство для этого, чтобы он мог видеть файлы, созданные пользовательским интерфейсом, а не пытаться использовать терминал для копирования- вставлять или перемещать файлы.

JordanGS
источник
2
Интересный! Мое предположение - и это только предположение - это то , что подсистема Linux отслеживает свои собственные файлы и никогда не смотрит , чтобы увидеть , если были добавлены какие - либо другие. В этом был бы смысл, потому что в противном случае было бы сложно дать семантику UNIX виртуальной файловой системе для таких вещей, как удаление файлов и учет регистра. Я подозреваю, что вы обнаружите, что если вы создадите hello.txtи HELLO.TXTиз Bash, один из файлов будет под другим именем, когда вы посмотрите на него в Windows.
Гарри Джонстон
Stack Overflow - это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. Какие темы можно задать здесь в Справочном центре. Возможно, лучше спросить Super User или Unix & Linux Stack Exchange . Также см. Где я могу задать вопросы о Dev Ops?
jww 05
Как предположил @HarryJohnston, имена разные. И длинные, и короткие. Но только в том случае, если даже короткие (!)
Сергей Хейлик 07
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он имеет отношение к сообществу ask-ubuntu.
OmG
2
@jpaugh Я знаю. Но, этот вопрос вполне оправдан, чтобы задать Ubuntu обстоятельства, а не не по теме.
OmG

Ответы:

143

Вы должны иметь доступ к своей системе Windows из /mntкаталога. Например, внутри bash используйте это, чтобы перейти в каталог ваших изображений:

cd /mnt/c/Users/<ubuntu.username>/Pictures

Надеюсь это поможет!

Zoecarver
источник
Я считаю, что вы неправильно поняли. У меня на рабочем столе есть JPG, я скопировал его с пользовательским интерфейсом в каталог подсистемы bash. Я пытаюсь понять, почему bash не может видеть эти изображения, когда они находятся в своем домашнем каталоге. Это базовое поведение cygwin, перетаскивание или копирование вставленных файлов без использования команд Linux для выполнения этой работы.
JordanGS 03
вы, вероятно, находитесь не в той папке.
zoecarver 03
Подсистема Linux не имеет тех же критериев проектирования, что и Cygwin. Вы не можете ожидать, что они будут вести себя аналогичным образом.
Гарри Джонстон
это сработало для меня, хотя ubuntu.usernameне обязательно имя пользователя для Windows .. по крайней мере, для меня это не так;)
user2804070
1
Люблю тебя за это.
Gubatron
53

Вам следует обращаться к файловой системе Linux (находящейся в папке lxss) только изнутри WSL ; НЕ создавайте / не изменяйте какие-либо файлы в папке lxss в Windows - это опасно, и WSL не увидит эти файлы.

Однако файлы могут совместно использоваться WSL и Windows; поместите файл вне папки lxss. Вы можете получить к ним доступ через drvFS ( /mnt), например, /mnt/c/Users/yourusername/filesв WSL. Эти файлы остаются синхронизированными между WSL и Windows.

Подробнее и почему см .: https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

Рекер
источник
См. Также Поддержка файловой системы WSL .
Гарри Джонстон
1
В разделе «Поддержка файловой системы WSL» описывается, почему происходит такое поведение: «перевод» файла выполняется только в подсистеме lsxx (на стороне Linux).
Крис Бак
На виртуальной машине linux я могу использовать SFTP для передачи файлов, что мне использовать для ПРАВИЛЬНОЙ передачи файла из окна в подсистему linux? это не дает решения.
Амбруаз Рабье
1
@AmbroiseRabier В последней версии WSL используйте SFTP, файл tar или интегрированный протокол 9p.
reker