我使用了subst R: .
一种更快的方式来访问文件夹。
是否可以将R:
“驱动器”安装到 WSL 上?当我尝试运行sudo mkdir /mnt/r
then 时sudo mount -t ntfs R: /mnt/r
,遇到以下错误:
ntfs-3g: Failed to access volume 'R:': No such file or directory
ntfs-3g 2017.3.23AR.3 integrated FUSE 28 - Third Generation NTFS Driver
Configuration type 7, XATTRS are on, POSIX ACLS are on
Copyright (C) 2005-2007 Yura Pakhuchiy
Copyright (C) 2006-2009 Szabolcs Szakacsits
Copyright (C) 2007-2017 Jean-Pierre Andre
Copyright (C) 2009 Erik Larsson
Usage: ntfs-3g [-o option[,...]] <device|image_file> <mount_point>
Options: ro (read-only mount), windows_names, uid=, gid=,
umask=, fmask=, dmask=, streams_interface=.
Please see the details in the manual (type: man ntfs-3g).
Example: ntfs-3g /dev/sda1 /mnt/windows
News, support and information: http://tuxera.com
提前致谢!
在 StackOverflow 上问了同样的问题,但意识到这不是正确的地方......
答案1
虽然 WSL 没有自动的甚至直接的访问subst
驱动器,有多种方法可以映射它们。这里有多种路线可供选择,具体取决于您的具体工作流程。
要记住的主要事情是:
在 Linux 中,
sudo mount --bind . /mnt/r
大致相当于subst R: .
.如果您只需要拥有 Linux 同等版本即可,并且不需要在 Windows 下访问相同的驱动器号,那么这可能就是您所需要的。您甚至可以subst
在 bash 中创建一个与 Windows 的函数非常接近的函数。也就是说,
bind
这里可能有点矫枉过正了。您很可能只需要一个符号链接,例如ln -s /mnt/c/Users/username ~/r
.只要您拥有目标位置的权限,就不需要 root。对于您在 Windows 中使用 创建的映射
subst
,您可以subst
通过调用 PowerShell 来检索 Linux 中的指定路径,例如:powershell.exe -c subst
grep
您可以使用和sed
: 将其过滤为仅 R: 映射powershell.exe -c "subst" | grep "^R" | sed "s/^R:\\\\: => //"
(如果有多个驱动器/目录subst
,则仅查找 R: 驱动器,然后删除目录路径之前的所有内容)。PowerShell 返回一个额外的换行符(“\r”),因此您必须使用类似
tr -d "\r"
.您可以使用以下命令将 Windows 路径转换为等效的 Linux/WSL 路径
wslpath
。
将它们放在一起,您就得到了可以将 R: 转换为的脚本/mnt/r
(或者~/r
如果这样更方便的话):
rpath=$(powershell.exe -c "subst" | grep "^R" | sed "s/^R:\\\\: => //" | tr -d "\r")
sudo mount --bind $(wslpath "${rpath}") /mnt/r/
或者与相反的等价物ln
。
当然,您需要将其分配给一个函数,以便更容易重复。