我在 Windows 上運行 Ubuntu。
當我從 Windows 創建一個newFolder
在根目錄中調用的資料夾C:\Users\myuser\AppData\Local\lxss\root\Newfolder
,然後在運行時從 Bash創建一個資料夾時ls
,我看不到剛剛創建的新資料夾。
如何解決此問題,以便我可以從 Windows 建立資料夾和文件,然後從 Bash 存取它們?
答案1
更新:
自 Windows 10 版本 1903 起,可使用\\wsl$\
.因此您可以explorer.exe .
從 bash 運行或\\wsl$\
直接在資源管理器的網址列中輸入
看Windows 10 版本 1903 中的 WSL 有哪些新增功能?
仍然有警告你不得透過 AppData 資料夾存取您的 Linux 檔案!
對於舊版本的 Windows 10,請參閱下文
WSL 根檔案系統中的 Linux 檔案是專門使用儲存在 NTFS 擴充屬性中的 POSIX 權限建立的。您可以透過運行看到fsutil file layout lxss\root
並注意$EA
溪流那裡。如果直接從 Windows 建立文件,就會把事情搞砸,因為 win32 應用程式對 Linux 及其文件元資料一無所知
例如,當您使用Windows 應用程式/工具開啟、建立和/或修改發行版根目錄下的檔案時,就會出現問題:由於該檔案是使用Windows 工具建立的,因此該檔案不會有任何Linux 檔案元資料(例如權限、擁有者、存取/更新時間戳記等)。因此,對於Linux(僅接收Linux檔案元資料),該文件可能被報告為空,甚至可能不存在,或者可能有一些元數據,但該元數據可能無法反映文件的詳細信息,導致文件的內容被損壞。
因此 MS 大膽警告說
在任何情況下,都不要使用 Windows 應用程式、工具、腳本、控制台等來建立和/或修改 Linux 檔案。
從 Windows 建立/變更 Linux 檔案可能會導致資料損壞和/或損壞您的 Linux 環境,需要您解除安裝並重新安裝發行版!
僅與 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。