例如,为什么在Windows中创建文件时,在Windows 10(bash.exe)的Linux子系统下看不到文件?
屏幕截图应说明。
文件夹:OMG是从Windows资源管理器中创建的。文件夹OMGBash是使用Linux子系统bash.exe创建的
在bash.exe之外创建文件夹或文件时,无论权限和所有权如何,我都看不到它。
为了显示我必须使用Cygwin来显示文件权限的信息,我还更改了权限以查看是否会出现该文件夹。(底部的两个命令窗口)
屏幕截图显示了文件夹,bash.exe和Cygwin权限:
我试图将所有Cygwin脚本移至Linux子系统, 但我不想重新创建每个文件,然后不得不使用bash复制并过去,然后重新格式化然后使用Dos2unix(非常麻烦)。
在GitHub上的Linux子系统中找到了这个:
根据其他问题的讨论,不支持从Windows直接复制到Linux子系统。AppData下有一个目录(我忘了在哪里),该目录似乎包含WSL文件系统的文件。但是,如果在其中放置新文件或在其中修改现有文件,则所做的更改将无法正确反映在WSL中。
我最好的猜测是,Linux需要与Windows存储有关其文件的不同元数据(以及更多的缓存信息等,因为其磁盘缓冲模型也有所不同),并且当前是通过存储结构的主副本来实现的Linux文件系统在某种数据库中的使用,只是将Windows文件系统用作该数据库的便捷BLOB存储。
如果您确实需要执行此操作,则一种变通方法是编写拖放式.bat脚本或执行bash.exe -c“ mv%1 / home / $ USER /”的脚本。(可能必须对sed和tr做一些巧妙的工作,才能将%1转换为有效的WSL路径。)
或者,您可以将文件放在Windows目录中,然后在WSL中执行“ cd〜; ln -s / mnt / c / path / to / my / files”以使它们看起来像在WSL主目录中吗?
cp -r --no-preserve=all
删除先前的权限。但是,如果要进行重大更改,则不能使用Windows应用程序在LinuxSubSystem中编辑文件,而必须在Windows目录中对其进行编辑,然后将其复制过来。现在,我知道了这一点,但它可行,但给人的印象是Linux子系统比隔离OS更本地化/集成到Windows中
%LocalAppData%\Packages\<some-long-name-of-distro>\LocalState\rootfs
。