更新:

更新:

我在 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 環境,需要您解除安裝並重新安裝發行版!

不要使用 Windows 應用程式和工具來更改 Linux 文件

僅與 Linux 相關的檔案應僅從 WSL 建立。如果您想創建兩個系統都可以存取的文件,那麼創建它們WSL 根目錄之外並透過/mnt類似的掛載點從 WSL 進行訪問/mnt/drive/path

如果您想在 Windows 檔案系統上建立檔案但保留區分大小寫,請使用

fsutil file setCaseSensitiveInfo <directory name> enable

該標誌也可以透過以下方式檢查fsutil file queryCaseSensitiveInfo <directory name>

也可以看看如何從 Windows 10 WSL 存取 linux/Ubuntu 檔案?

答案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。

相關內容