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


96

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

Мій домашній каталог можна знайти за адресою %localappdata%\Lxss\home\<ubuntu.username>\, я створив підкаталог під назвою «Картинки», який повинен бути повним шляхом

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

на баш: /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, у власному домашньому каталозі?

EDIT Використання /mnt/cне є рішенням, я намагаюся зрозуміти, чому він не бачить ці файли, і чи існує засіб для усунення такої ситуації, щоб він міг бачити створені користувацьким інтерфейсом файли, а не намагатися використовувати термінал для копіювання вставити або перемістити файли.


2
Цікаво! Моє припущення - і це тільки припущення - це те , що підсистема Linux відстежує свої власні файли і ніколи не дивиться , щоб побачити , якщо були додані якісь - або інші. Це мало б сенс, бо інакше було б важко надати віртуальній файловій системі UNIX семантику для таких речей, як видалення файлів та чутливість до регістру. Я підозрюю, ви виявите, що якщо ви створюєте hello.txtта використовуєте HELLO.TXTBash, один із файлів буде мати інше ім'я, коли ви дивитесь на нього у Windows.
Гаррі Джонстон

Stack Overflow - це сайт для питань програмування та розробки. Здається, це питання не є темою, оскільки мова не йде про програмування чи розробку. Подивіться, які теми я можу запитати тут, у довідковому центрі. Можливо, кращим місцем для запитання буде Super User або Unix & Linux Stack Exchange . Також див. Де можна розмістити запитання про Dev Ops?
jww

Як припускав @HarryJohnston, імена різні. І довгий, і короткий. Але лише у випадку, навіть короткому (!)
Сергій Хейлик

Я голосую за те, щоб закрити це питання як нетематичне, оскільки воно пов’язане із спільнотою ask-ubuntu.
OmG

2
@jpaugh Я знаю. Але це питання виправдано, якщо запитувати обставини Ubuntu, а не нетипово.
OmG

Відповіді:


142

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

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

Сподіваюся, це допомагає!


Я вважаю, ви неправильно зрозуміли. У мене на робочому столі JPG, я скопіював його за допомогою інтерфейсу користувача в каталог підсистеми bash. Я намагаюся зрозуміти, чому bash не може бачити ці фотографії, коли вони знаходяться в домашньому каталозі. Це основна поведінка cygwin, перетягування або копіювання файлів вставки, не покладаючись на команди Linux для виконання цієї роботи.
JordanGS 03.03.17

ви, мабуть, потрапили не в ту папку.
zoecarver 03

Підсистема Linux не має таких самих критеріїв проектування, як Cygwin. Необов’язково чекати від них такої самої поведінки.
Гаррі Джонстон

це спрацювало для мене, хоча ubuntu.usernameне потрібно ім'я користувача для Windows .. принаймні для мене це не так;)
user2804070

1
Люблю тебе за це.
Губатрон

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.