Копирование файлов из 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не является решением, я пытаюсь понять, почему он не видит эти файлы, и если есть средство для этого, чтобы он мог видеть файлы, созданные пользовательским интерфейсом, а не пытаться использовать терминал для копирования- вставлять или перемещать файлы.


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

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


Я считаю, что вы неправильно поняли. У меня на рабочем столе есть 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/



1
В разделе «Поддержка файловой системы WSL» описывается, почему происходит такое поведение: «перевод» файла выполняется только в подсистеме lsxx (на стороне Linux).
— Крис Бак

На виртуальной машине linux я могу использовать SFTP для передачи файлов, что мне использовать для ПРАВИЛЬНОЙ передачи файла из окна в подсистему linux? это не дает решения.
— Амбруаз Рабье

1
@AmbroiseRabier В последней версии WSL используйте SFTP, файл tar или интегрированный протокол 9p.
— reker
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.