예를 들어 Windows에서 파일을 만들 때 Windows 10의 Linux 하위 시스템 (bash.exe)에서 파일을 볼 수없는 이유는 무엇입니까?
스크린 샷이 설명되어야합니다.
폴더 : OMG는 Windows 탐색기에서 생성되었습니다. OMGBash 폴더는 Linux 서브 시스템 bash.exe로 작성되었습니다.
폴더 OR 파일이 bash.exe 외부에서 생성되면 권한과 소유권에 관계없이 볼 수 없습니다.
Cygwin을 사용하여 파일 권한을 표시해야하는 정보를 표시하기 위해 폴더가 표시되는지 확인하기 위해 권한도 변경했습니다. (하단에 두 개의 명령 창)
폴더, bash.exe 및 Cygwin 권한을 보여주는 스크린 샷 :
모든 Cygwin 스크립트를 Linux 하위 시스템으로 옮기려고 하지만 모든 파일을 다시 작성하고 bash를 사용하여 복사하여 붙여 넣은 다음 Dos2unix를 사용하여 다시 포맷해야합니다 (매우 길다).
Linux 하위 시스템의 GitHub에서이를 찾았습니다.
다른 티켓에 대한 논의에 따르면 Windows에서 Linux 서브 시스템으로 직접 복사하는 것은 지원되지 않습니다. AppData 아래에 WSL 파일 시스템의 파일을 포함하는 것으로 보이는 디렉토리가 있습니다 (어딘가는 잊어 버렸습니다). 그러나 새 파일을 저장하거나 기존 파일을 수정하면 변경 내용이 WSL에 올바르게 반영되지 않습니다.
가장 좋은 추측은 Linux가 Windows와 파일에 대해 다른 메타 데이터 (및 디스크 버퍼링 모델도 다르기 때문에 더 많은 캐싱 정보 등)를 저장해야하며, 현재 구조의 마스터 사본을 저장하여 구현 된 것입니다. 어떤 종류의 데이터베이스에서 Linux 파일 시스템을 사용하고 Windows 파일 시스템을 해당 데이터베이스의 편리한 BLOB 저장소로 사용합니다.
실제로이 작업을 수행해야하는 경우 해결 방법은 드래그 앤 드롭 .bat 스크립트 또는 bash.exe -c "mv % 1 / home / $ USER /"를 수행하는 스크립트를 작성하는 것입니다. (% 1을 유효한 WSL 경로로 변환하려면 sed 및 tr을 사용하여 영리한 작업을 수행해야합니다.)
또는 파일을 Windows 디렉토리에 넣고 WSL 내에서 "cd ~; ln -s / mnt / c / path / to / my / files"를 수행하여 WSL homedir에있는 것처럼 보이게 할 수 있습니까?
cp -r --no-preserve=all
이전 권한을 삭제 해야합니다 . 여전히 많은 부분을 변경하려면 Windows 응용 프로그램을 사용하여 LinuxSubSystem에서 파일을 편집 할 수 없습니다. Windows 디렉토리에서 파일을 편집 한 다음 복사해야합니다. 이제 나는 이것이 가능하다는 것을 알고있다. 그러나 나는 리눅스 서브 시스템이 고립 된 OS보다 윈도우에 더 기본적이고 통합되어 있다는 인상을 받았다
%LocalAppData%\Packages\<some-long-name-of-distro>\LocalState\rootfs
.