Windows에서 Ubuntu를 실행하고 있습니다.
newFolder
Windows에서 루트 디렉터리에 호출된 폴더를 생성한 C:\Users\myuser\AppData\Local\lxss\root\Newfolder
다음 Bash에서 실행할 때 ls
방금 생성된 새 폴더가 표시되지 않습니다.
Windows에서 폴더와 파일을 생성한 다음 Bash에서 액세스할 수 있도록 이 문제를 해결하려면 어떻게 해야 합니까?
답변1
업데이트:
Windows 10 버전 1903부터 \\wsl$\
. 따라서 explorer.exe .
bash에서 실행하거나 \\wsl$\
Explorer의 주소 표시줄에 직접 입력할 수 있습니다.
보다Windows 10 버전 1903의 WSL의 새로운 기능은 무엇인가요?
다시 한 번 경고가 표시됩니다.AppData 폴더를 통해 Linux 파일에 액세스하면 안 됩니다!
이전 버전의 Windows 10에 대해서는 아래를 참조하세요.
WSL 루트 파일 시스템의 Linux 파일은 NTFS 확장 속성에 저장된 POSIX 권한을 사용하여 특별히 생성됩니다. 실행하여 이를 fsutil file layout lxss\root
확인할 수 있습니다.$EA
개울거기. Windows에서 직접 파일을 생성하면 win32 앱이 Linux 및 해당 파일 메타데이터에 대해 아무것도 모르기 때문에 문제가 발생할 수 있습니다.
예를 들어 Windows 앱/도구를 사용하여 distro 루트에서 파일을 열거나 생성 및/또는 수정하는 경우 문제가 발생합니다. 파일이 Windows 도구를 사용하여 생성되었으므로 파일에 Linux 파일 메타데이터가 없습니다. (예: 권한, 소유자, 액세스/업데이트 타임스탬프 등) 따라서 Linux(Linux 파일 메타데이터만 수신)의 경우,파일이 비어 있는 것으로 보고될 수 있습니다., 존재하지 않거나 일부 메타데이터가 있을 수 있지만 해당 메타데이터가 파일의 세부정보를 반영하지 않아 파일 내용이 손상될 수 있습니다..
그래서 MS는 다음과 같이 과감하게 경고했습니다.
어떠한 경우에도 Windows 앱, 도구, 스크립트, 콘솔 등을 사용하여 Linux 파일을 생성 및/또는 수정하지 마십시오.
Windows에서 Linux 파일을 생성/변경하면 데이터가 손상되거나 Linux 환경이 손상되어 distro를 제거하고 다시 설치해야 할 수 있습니다!
Linux에만 관련된 파일은 WSL에서만 생성해야 합니다. 두 시스템 모두에 액세스할 수 있는 파일을 생성하려면 해당 파일을 생성하십시오.WSL 루트 외부/mnt
다음과 같은 마운트 지점을 통해 WSL에서 액세스합니다./mnt/drive/path
Windows 파일 시스템에서 파일을 생성하지만 대소문자 구분을 유지하려면 다음을 사용하십시오.
fsutil file setCaseSensitiveInfo <directory name> enable
플래그는 다음으로도 확인할 수 있습니다.fsutil file queryCaseSensitiveInfo <directory name>
답변2
Ubuntu에서는 폴더를 생성하고 Windows에서 해당 폴더에 액세스할 수 없습니다. 하지만 반대로 할 수도 있습니다.
에서 Windows 드라이브에 액세스할 수 있습니다 /mnt
. 그렇게 하면 ls /mnt
모든 드라이브가 표시됩니다. 따라서 /mnt/c는 C 드라이브의 경로입니다. 마찬가지로 /mnt/c/Users/username/Desktop
Bash에서 데스크탑에 대한 액세스를 제공할 수 있습니다.
따라서 Bash를 사용하여 원하는 경로에 도달하고 Windows 파일 및 폴더에 액세스하면 됩니다. Windows 파일에 빠르게 액세스하는 방법에 대한 자세한 내용을 보려면 심볼릭 링크를 사용하세요. 자세한 내용은여기에서 발견
답변3
생각을 바꾸세요. Windows 앱 및 도구를 사용하여 파일을 만들고 Bash에서 액세스하려면 Windows 파일 시스템에서 해당 파일 등을 만들고 Bash에서 액세스/복사하세요.
다음은 PowerShell에서 파일을 생성한 다음 Bash를 호출하여 생성된 파일을 홈 폴더에 복사한 다음 bash를 호출하여 파일 내용을 쓰는 예입니다.
PS C:\dev\temp> Set-Content ./hello.txt -Value "Hello, World!" -Encoding ASCII
PS C:\dev\temp> cat .\hello.txt
Hello, World!
PS C:\dev\temp> bash -c "cp /mnt/c/dev/temp/hello.txt ~/"
PS C:\dev\temp> bash -c "cat /mnt/c/dev/temp/hello.txt"
Hello, World!
HTH.