Копіювати файли з 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.