たとえば、Windows内からファイルを作成した場合、Windows 10のLinuxサブシステム(bash.exe)の下でファイルを表示できないのはなぜですか
スクリーンショットで説明する必要があります。
フォルダー:OMGはWindowsエクスプローラー内から作成されました。フォルダーOMGBashは、Linuxサブシステムbash.exeで作成されました
bash.exeの外部でフォルダーまたはファイルが作成された場合、アクセス許可と所有権に関係なく、それを見ることができません。
Cygwinを使用してファイルのアクセス許可を表示する必要がある情報を表示するために、フォルダーが表示されるかどうかを確認するアクセス許可も変更しました。(下部にある2つのコマンドウィンドウ)
フォルダー、bash.exeおよびCygwinの権限を示すスクリーンショット:
私はLinuxのサブシステムへの上にすべての私のCygwinスクリプトを移動しようとしています、 しかし、その後、コピーした過去が、その後DOS2UNIXを使用して、その後再フォーマットは、bashを使用して、私はすべてのファイルを再作成空想しません(非常に長いったらしいです)。
LinuxサブシステムのGitHubでこれを見つけました。
他のチケットに関する議論によると、WindowsからLinuxサブシステムに直接コピーすることはサポートされていません。AppDataの下に、WSLファイルシステムのファイルが含まれているように見えるディレクトリがあります(どこか忘れています)。ただし、そこに新しいファイルを配置したり、既存のファイルを変更したりすると、WSL内に変更が正しく反映されません。
私の最良の推測は、Linuxはファイルとは異なるメタデータ(およびディスクバッファリングモデルも異なるため、より多くのキャッシング情報など)を保存する必要があり、これは現在、構造のマスターコピーを保存することで実装されていることですある種のデータベース内のLinuxファイルシステムを使用し、Windowsファイルシステムをそのデータベースの便利なBLOBストアとして使用するだけです。
本当にこれを行う必要がある場合、回避策はdrag'n'drop .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ディレクトリで編集してからコピーする必要があります。今、私はこれを知っています、その実行可能ですが、Linuxサブシステムは孤立したOSよりもネイティブ/ウィンドウに統合されているという印象を受けました
%LocalAppData%\Packages\<some-long-name-of-distro>\LocalState\rootfs
。