Dlaczego, na przykład, gdy tworzę plik z poziomu systemu Windows, nie mogę go zobaczyć pod systemem Linux w systemie Windows 10 (bash.exe)
Zrzut ekranu powinien wyjaśnić.
Folder: OMG został utworzony w Eksploratorze Windows. Folder OMGBash został stworzony z systemu Linux bash.exe
Kiedy folder LUB plik jest tworzony poza bash.exe, nigdy go nie widzę, bez względu na uprawnienia i własność.
Aby pokazać informacje, których musiałem użyć Cygwin do wyświetlenia uprawnień do plików, zmieniłem również uprawnienia, aby zobaczyć, czy folder się pojawi. (Dwa okna poleceń u dołu)
Zrzut ekranu przedstawiający uprawnienia do folderu, bash.exe i Cygwin:
Próbuję przenieść wszystkie moje skrypty Cygwin do podsystemu Linux, ale nie mam ochoty odtwarzać każdego pliku, potem muszę kopiować i wklejać za pomocą bash, a następnie formatować, a następnie używać Dos2unix (bardzo długi).
Znaleziono to w GitHub dla podsystemu Linux:
kopiowanie bezpośrednio do podsystemu Linux z systemu Windows nie jest obsługiwane, zgodnie z dyskusją na temat innych zgłoszeń. W AppData jest gdzieś katalog (nie pamiętam gdzie), który wydaje się zawierać pliki dla systemu plików WSL. Ale jeśli umieścisz tam nowe pliki lub zmodyfikujesz istniejące pliki, zmiany nie zostaną poprawnie odzwierciedlone w WSL.
Domyślam się, że Linux musi przechowywać różne metadane (i więcej informacji o buforowaniu itp., Ponieważ jego model buforowania dysku również jest inny) na temat swoich plików niż Windows, i że jest to obecnie realizowane przez przechowywanie głównej kopii struktury systemu plików Linux w jakiejś bazie danych i po prostu używając systemu plików Windows jako wygodnego magazynu BLOB dla tej bazy danych.
Jeśli naprawdę musisz to zrobić, obejściem może być napisanie skryptu przeciągnij i upuść .bat lub coś takiego, co powoduje, że bash.exe -c "mv% 1 / home / $ USER /". (Będziesz musiał wykonać sprytną pracę z sed i tr, prawdopodobnie, aby przetłumaczyć% 1 na prawidłową ścieżkę WSL.)
Alternatywnie - czy możesz umieścić swoje pliki w katalogu Windows i, w ramach WSL, wykonać polecenie „cd ~; ln -s / mnt / c / path / to / my / files”, aby wyglądały, jakby były w katalogu głównym WSL?
źródło
cp -r --no-preserve=all
usunąć poprzednie uprawnienia. Jeśli jednak chcesz dokonać ciężkich zmian, nie możesz użyć aplikacji systemu Windows do edycji pliku w systemie LinuxSubSystem, musisz go edytować w katalogu systemu Windows, a następnie skopiować. Teraz wiem, że jest to wykonalne, ALE miałem wrażenie, że Linux Sub System był bardziej natywny / zintegrowany z Windows niż izolowany system operacyjny%LocalAppData%\Packages\<some-long-name-of-distro>\LocalState\rootfs
.Odpowiedzi:
Nie jestem pewien, czy nie rozumiem twojego pytania, ale twoja Ubuntu Bash (prawe górne okno) powinna mieć dostęp do twoich dysków opartych na Windowsie
/mnt
. Na przykład na moim komputerze/mnt/c/Users/Scott/Desktop
jest mój pulpit systemu Windows i mogę na nim odczytywać / zapisywać pliki z vi. Nie wierzę jeszcze, że jest odwrotnie. Oznacza to, że nie sądzę, że możesz eksplorować swój świat bashów za pomocą Eksploratora Windows.Jako programista zajmuję się hostowaniem projektów na moim d: i kierowaniem narzędzi opartych na systemie Linux na ten
/mnt/d/projects/someproject/
folder.Pamiętaj, aby okresowo aktualizować kompilacje systemu Windows, ponieważ wydają się one naprawiać wiele problemów z każdą kompilacją, szczególnie wokół sym-linków i przekraczania granic FS między Linux / Windows.
źródło
@ scottt732 pięknie odpowiedział.
Tylko wskazówka dla programistów, którzy chcieliby pracować w systemie Windows i chcieliby naprawdę szybko uzyskać dostęp do tych plików w podsystemie Linux. Możesz użyć dowiązań symbolicznych .
Na przykład, jeśli pracujesz nad projektem
d:/projects/web-project
, możesz utworzyć dowiązanie symboliczne w miejscu,/var/www/web-project
a wszystkie pliki, które zmienisz w systemie Windows, będą łatwo dostępne w Linux Bash.W tym celu użyjesz
ln
takiego poleceniaW powyższej linii
/mnt/d
miał być twój dysk na Windows. Ustaw wirtualny host Apache na tę ścieżkę i jesteś gotowy.źródło
css-file.css
. O tym problemie pisałem tutaj .Zalecamy, aby nie kopiować / tworzyć / aktualizować plików Linux za pomocą aplikacji Windows .
Zamiast tego przechowuj pliki w systemie plików Windows (np.
c:\dev\project
), Które chcesz edytować za pomocą narzędzi Windows i / lub buduj / testuj / uruchamiaj za pomocą narzędzi / środowisk uruchomieniowych / platform Linux (np. Via/mnt/c/dev/project
).W konkretnym scenariuszu, jeśli chcesz skopiować pliki Cygwin do Bash, a następnie otwórz Bash i skopiuj pliki z folderu Cygwin na C: do
~/
, w ten sposóbcp /mnt/c/Users/dave/Documents/Cygwin/* ~/
:)HTH.
źródło
Miałem potrzebę pracy z PyCharm / eclipse na Windows 10, podczas gdy do uruchamiania / testind potrzebowałem środowiska Linux;
Miałem problemy z wyewidencjonowaniem z gita do systemu Linux i edytowanie plików PyCharm nie było od razu widoczne i miałem problemy;
Miałem powyższe w moim .bashrc w obszarze Ubuntu. Działa płynnie. Mogę edytować system Windows i uruchamiać / testować w Ubuntu bez żadnych problemów.
źródło
Miałem podobną potrzebę kopiowania plików między WSL a win10. Skończyłem włączanie sshd w instalacji Ubuntu, aby móc ssh w Linuksie z win10. Następnie używam winscp do kopiowania plików tam iz powrotem. Nie optymalne, ale nie kopiuję plików zbyt często. Próbowałem znaleźć post, którego użyłem do włączenia sshd, ale nie mogę go znaleźć.
źródło