Skopiuj pliki z systemu Windows do podsystemu Ubuntu [zamknięte]

102

Włączyłem tryb programisty i zainstalowałem Bash on Ubuntu on Windows.

Mój katalog domowy można znaleźć pod %localappdata%\Lxss\home\<ubuntu.username>\, utworzyłem podkatalog o nazwie Pictures, w którym powinna znajdować się pełna ścieżka

w oknach: C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures

na bash: /home/<ubuntu.username>/Pictures

jeśli utworzę plik z basha za pomocą polecenia, touch hello.txtmogę swobodnie zobaczyć ten plik w interfejsie użytkownika systemu Windows i skopiować go na mój pulpit. Jeśli jednak utworzę nowy plik tekstowy z interfejsu użytkownika systemu Windows i zapiszę go C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures, nawet jeśli ponownie uruchomię bash lub system Windows, plik nie jest widoczny, gdy to zrobię ls -l.

Dlaczego bash nie może zobaczyć plików utworzonych po stronie systemu Windows w swoim własnym katalogu domowym?

EDYCJA Używanie /mnt/cnie jest rozwiązaniem, próbuję zrozumieć, dlaczego nie widzi tych plików i czy istnieje na to rozwiązanie, aby mógł zobaczyć pliki utworzone w interfejsie użytkownika, zamiast próbować używać terminala do kopiowania- wklej lub przenieś pliki.

JordanGS
źródło
2
Ciekawy! Zgaduję - i to jest tylko przypuszczenie - że podsystem Linux śledzi własnych plików i nigdy nie sprawdza, czy jakieś inne zostały dodane. Miałoby to sens, ponieważ w przeciwnym razie trudno byłoby nadać wirtualnemu systemowi plików semantykę UNIX dla takich rzeczy, jak usuwanie plików i rozróżnianie wielkości liter. Podejrzewam, że odkryjesz, że jeśli utworzysz hello.txtiz HELLO.TXTBash, jeden z plików będzie miał inną nazwę, gdy spojrzysz na niego w systemie Windows.
Harry Johnston
Stack Overflow to witryna zawierająca pytania dotyczące programowania i programowania. To pytanie wydaje się być niezwiązane z tematem, ponieważ nie dotyczy programowania ani programowania. Zobacz, o jakie tematy mogę zapytać w Centrum pomocy. Być może lepszym miejscem do zadawania pytań będzie Super User lub Unix & Linux Stack Exchange . Zobacz też Gdzie mogę zadawać pytania dotyczące operacji deweloperskich?
jww
Jak przypuszczał @HarryJohnston, imiona są różne. Zarówno długie, jak i krótkie. Ale tylko w przypadku, nawet krótkich (!)
Serhii Kheilyk
Głosuję za zamknięciem tego pytania jako niezwiązanego z tematem, ponieważ jest ono związane ze społecznością ask-ubuntu.
OmG
2
@jpaugh I know. Ale to pytanie jest uzasadnione, aby zadać okoliczności Ubuntu, a nie niezwiązane z tematem.
OmG

Odpowiedzi:

154

Powinieneś mieć dostęp do systemu Windows w /mntkatalogu. Na przykład wewnątrz basha, użyj tego, aby dostać się do katalogu ze zdjęciami:

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

Mam nadzieję że to pomoże!

zoecarver
źródło
Myślę, że źle zrozumiałeś. Mam plik JPG na pulpicie, skopiowałem go z interfejsem użytkownika do katalogu podsystemu bash. Próbuję zrozumieć, dlaczego bash nie widzi tych obrazów, gdy znajdują się w jego katalogu domowym. Jest to podstawowe zachowanie cygwin, przeciągnij i upuść lub skopiuj pliki wklejania bez polegania na poleceniach Linuksa, aby wykonać zadanie.
JordanGS
prawdopodobnie znajdujesz się w złym folderze.
zoecarver
Podsystem Linux nie ma takich samych kryteriów projektowych jak Cygwin. Nie możesz oczekiwać, że będą się zachowywać podobnie.
Harry Johnston,
u mnie zadziałało, chociaż ubuntu.usernamenazwa użytkownika dla windows nie jest konieczna .. przynajmniej u mnie tak nie jest;)
user2804070
1
Kocham cię za to.
Gubatron
54

Powinieneś mieć dostęp do systemu plików Linuksa (tych znajdujących się w folderze lxss) z wnętrza WSL ; NIE twórz / modyfikuj żadnych plików w folderze lxss w systemie Windows - jest to niebezpieczne i WSL nie zobaczy tych plików.

Pliki mogą być współdzielone między WSL i Windows; umieść plik poza folderem lxss. Możesz uzyskać do nich dostęp poprzez drvFS ( /mnt), na przykład /mnt/c/Users/yourusername/filesw WSL. Te pliki pozostają zsynchronizowane między WSL i Windows.

Aby uzyskać szczegółowe informacje i dlaczego, zobacz: https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

reker
źródło
Zobacz także Obsługa systemu plików WSL .
Harry Johnston,
1
W WSL File System Support opisuje, dlaczego dzieje się to zachowanie: "tłumaczenie" pliku jest wykonywane tylko w podsystemie lsxx (po stronie linuxa).
Chris Buck,
Na maszynie wirtualnej z systemem Linux mogę używać SFTP do przesyłania plików, czego użyć do PRAWIDŁOWEGO przesłania pliku z podsystemu Windows do systemu Linux? to nie zapewnia rozwiązania.
Ambroise Rabier
1
@AmbroiseRabier W najnowszej wersji WSL użyj SFTP, pliku tar lub zintegrowanego protokołu 9p.
reker