web-dev-qa-db-ja.com

「is」WSLに存在しないシンボリックリンクを一覧表示しようとしました

Windows 10(ビルド1803)をクリーンインストールしました。 MicrosoftストアからUbuntuをインストールし、Linuxサブシステムを有効にしました。私は過去にこれを何度か行ったことがありますが、次の問題は一度もありませんでした。cディレクトリは、シンボリックリンクのおかげですべて混乱しています。たとえば、dircmdとWSLのlsの出力を見てみましょう。

C:\Users\username>dir
 Volume in drive C has no label.
 Volume Serial Number is BC00-A6D5

 Directory of C:\Users\username
05/25/2018  12:01 AM    <DIR>          .
05/25/2018  12:01 AM    <DIR>          ..
05/25/2018  12:01 AM    <DIR>          3D Objects
05/25/2018  12:01 AM    <DIR>          Contacts
05/25/2018  01:19 AM    <DIR>          Desktop
05/25/2018  12:01 AM    <DIR>          Documents
05/25/2018  12:01 AM    <DIR>          Downloads
05/25/2018  12:01 AM    <DIR>          Favorites
05/25/2018  12:01 AM    <DIR>          Links
05/25/2018  12:01 AM    <DIR>          Music
05/25/2018  12:06 AM    <DIR>          OneDrive
05/25/2018  12:01 AM    <DIR>          Pictures
05/25/2018  12:01 AM    <DIR>          Saved Games
05/25/2018  12:01 AM    <DIR>          Searches
05/25/2018  12:01 AM    <DIR>          Videos
               0 File(s)              0 bytes
              15 Dir(s)  88,018,132,992 bytes free

name:/mnt/c/Users/username$ ls
ls: cannot read symbolic link 'Application Data': Permission denied
ls: cannot read symbolic link 'Cookies': Permission denied
ls: cannot read symbolic link 'Local Settings': Permission denied
ls: cannot read symbolic link 'My Documents': Permission denied
ls: cannot read symbolic link 'NetHood': Permission denied
ls: cannot read symbolic link 'PrintHood': Permission denied
ls: cannot read symbolic link 'Recent': Permission denied
ls: cannot read symbolic link 'SendTo': Permission denied
ls: cannot read symbolic link 'Start Menu': Permission denied
ls: cannot read symbolic link 'Templates': Permission denied
3D Objects            NTUSER.DAT{c9e9d809-5fd7-11e8-a0cd-4e0bbe2b78ad}.TM.blf
AppData               NTUSER.DAT{c9e9d809-5fd7-11e8-a0cd-4e0bbe2b78ad}.TMContainer00000000000000000001.regtrans-ms
Application Data      NTUSER.DAT{c9e9d809-5fd7-11e8-a0cd-4e0bbe2b78ad}.TMContainer00000000000000000002.regtrans-ms
Contacts              ntuser.dat.LOG1
Cookies               ntuser.dat.LOG2
[...]

同じディレクトリを比較すると(左側がUbuntu、右側がcmd)、lsが存在しないシンボリックリンクを一覧表示しようとしていることがわかります。私はこの問題を経験したことがなく、アクセス許可などを変更していないため、何が起こっているのかわかりません。誰かがこれを手伝ってくれる?

これはいくつかの有用な情報です:

マウントが与える

mount
rootfs on / type lxfs (rw,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
none on /dev type tmpfs (rw,noatime,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,gid=5,mode=620)
none on /run type tmpfs (rw,nosuid,noexec,noatime,mode=755)
none on /run/lock type tmpfs (rw,nosuid,nodev,noexec,noatime)
none on /run/shm type tmpfs (rw,nosuid,nodev,noatime)
none on /run/user type tmpfs (rw,nosuid,nodev,noexec,noatime,mode=755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noatime)
C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000)

そして、

id -u
1000
id -g
1000

私の/etc/wsl.confファイルは最初は存在しなかったので、作成しました。しかし、mountcが正しくマウントされていることを示しているため、これが問題を解決するための鍵ではないと思います。今はこれです

[automount]
enabled = true

私の質問の要約: cmdでsymlinksを実行すると確認されたように、ディレクトリにdirがないようです。しかし、Ubuntuコマンドラインにはシンボリックリンクが表示されます。何故ですか?また、許可が拒否されたため、(Sudo rmを使用しても)それらを削除することはできません。これはちょっと迷惑です!

4
Ptheguy

cmdでdirを実行して確認されたとおり。

これは何の種類も確認しませんでした。使用 /aオプションをdirコマンドに追加します。 Unix以外のLinux以外のオペレーティングシステムでdirコマンドを使用する方法は、このWWWサイトの範囲を超えています。質問のこの基本的な前提が間違っていることを指摘した後、ここで停止します。

2
JdeBP

あなたが使用する場合、私はそれに気づきました:

ls --color=tty

/ mnt/cディレクトリに、次のエラーメッセージが表示されます。

ls: cannot read symbolic link 'Documents and Settings': Permission denied                                               
ls: cannot access 'hiberfil.sys': Permission denied                                                                     
ls: cannot access 'pagefile.sys': Permission denied                                                                     
ls: cannot access 'swapfile.sys': Permission denied

ただし、単に/bin/ls引数なしで、きれいなディレクトリリストを取得します。したがって、このコマンドがこれらのエラーメッセージをトリガーするディレクトリ内のファイルの種類を色付けしようとすることについて何かがあります。

Stderrを/ dev/nullにリダイレクトすると、エラーメッセージも抑制されます。

alias ls='ls --color=tty 2>/dev/null'

常に推奨されるわけではありませんが、ノイズをクリーンアップします。

1
Patrick Beard